1 dnl Copyright (C) 2013 The Meme Factory, Inc., http://www.meme.com/
3 dnl This file is part of GombeMI.
5 dnl GombeMI is free software; you can redistribute it and/or modify
6 dnl it under the terms of the GNU General Public License as published by
7 dnl the Free Software Foundation; either version 3 of the License, or
8 dnl (at your option) any later version.
10 dnl This program is distributed in the hope that it will be useful,
11 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
12 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 dnl GNU General Public License for more details.
15 dnl You should have received a copy of the GNU General Public License
16 dnl along with GombeMI. If not, see <http://www.gnu.org/licenses/>.
18 dnl Creates prepared_data schema and tables therein.
20 dnl Karl O. Pinc <kop@meme.com>
26 dnl Intended to be piped to psql run as gombemi_admin.
28 include(`copyright.m4')
29 include(`constants.m4')
32 DROP SCHEMA IF EXISTS prepared_data CASCADE;
34 CREATE SCHEMA prepared_data;
36 GRANT USAGE ON SCHEMA prepared_data TO gombemi_editors
39 SET SEARCH_PATH TO prepared_data;
42 -- Create all the tables.
46 drop table if exists prepared_data.follow cascade;
47 drop table if exists prepared_data.follow_1_minute cascade;
48 drop table if exists prepared_data.follow_1_minute_infant cascade;
49 drop table if exists prepared_data.follow_1_minute_mother cascade;
50 drop table if exists prepared_data.follow_1_minute_sibling cascade;
51 drop table if exists prepared_data.follow_5_minute cascade;
52 drop table if exists prepared_data.follow_5_minute_group cascade;
55 -- cross_reference_for_program
56 create table prepared_data.crfp (
57 tableid serial primary key
65 ,"start_entry_date" date
66 ,"end_entry_date" date
70 ,"group_comp_problem" text
73 ,"also_checked_by" text
74 ,"last_checked_by_date" text
75 ,"absent_mother_infant" text
81 ,"paper_follow_location" text
86 create unique index crfp_date_mom
87 on prepared_data.crfp("follow_date", "focal_mom");
89 grant_priv(`prepared_data.crfp')
90 grant_seq_priv(`prepared_data.crfp', `tableid')
94 create table prepared_data.page_followtype (
95 tableid serial primary key
103 create index page_followtype_date_mom_page
104 on prepared_data.page_followtype(date, mom, page);
106 grant_priv(`prepared_data.page_followtype')
107 grant_seq_priv(`prepared_data.page_followtype', `tableid')
111 create table prepared_data.follow (
112 tableid serial primary key
116 ,"infant2_id" varchar
117 ,"sibling_id" varchar
118 ,"sibling2_id" varchar
119 ,"conducted_by" varchar
120 ,"entered_by" varchar
123 ,"right_group_id" int
124 ,"follow_status" varchar
132 create unique index follow_follow_id on prepared_data.follow ("follow_id");
133 create index follow_date on prepared_data.follow ("follow_date");
135 grant_priv(`prepared_data.follow')
136 grant_seq_priv(`prepared_data.follow', `tableid')
140 create table prepared_data.follow_page (
141 tableid serial primary key
143 constraint "follow_id on follow" references prepared_data.follow(follow_id)
151 create index follow_page_follow_id
152 on prepared_data.follow_page("follow_id");
153 create unique index follow_page_page_id
154 on prepared_data.follow_page ("page_id");
156 grant_priv(`follow_page')
157 grant_seq_priv(`follow_page', `tableid')
161 create table prepared_data.follow_1_minute (
162 tableid serial primary key
164 constraint "page_id on follow_page" references prepared_data.follow_page(page_id)
165 ,"interval_number" int
166 ,"interval_time" timestamp without time zone
167 ,"bad_observation" varchar
170 ,"commentrtf" varchar
171 ,"interval_id" varchar
173 constraint "follow_id on follow" references prepared_data.follow(follow_id)
178 follow_1_minute_interval_id on prepared_data.follow_1_minute ("interval_id");
180 -- Data problem. Let the conversion sort it out.
181 create unique index follow_1_minute_follow_id_interval_time
182 on prepared_data.follow_1_minute (follow_id, interval_time);
183 --create index follow_1_minute_follow_id_interval_time
184 -- on prepared_data.follow_1_minute (follow_id, interval_time);
186 grant_priv(`prepared_data.follow_1_minute')
187 grant_seq_priv(`prepared_data.follow_1_minute', `tableid')
190 -- follow_1_minute_infant
191 create table prepared_data.follow_1_minute_infant (
192 tableid serial primary key
193 ,"interval_id" varchar
194 constraint "follow_1_minute_infant.interval_id must be a follow_1_minute.interval_id"
195 references prepared_data.follow_1_minute("interval_id")
202 ,"in_contact" varchar
203 ,"within_reach" varchar
204 ,"within_0_5_meters" varchar
205 ,"between_5_15_meters" varchar
206 ,"more_than_15_meters" varchar
207 ,"rides_on_stomach" varchar
208 ,"rides_on_back" varchar
210 ,"contacts_other" varchar
211 ,"grooms_other" varchar
212 ,"groomed_by" varchar
217 ,"vocalizations" varchar
219 ,"aggression" varchar
220 ,"infant_interval_id" varchar
222 constraint "follow_id on follow" references prepared_data.follow(follow_id)
226 create unique index follow_1_minute_infant_infant_interval_id
227 on prepared_data.follow_1_minute_infant ("infant_interval_id");
229 -- Data problems. Let the conversion deal with it.
230 create unique index follow_1_minute_infant_interval_id_infant_id
231 on prepared_data.follow_1_minute_infant ("interval_id", infant_id);
232 --create index follow_1_minute_infant_interval_id_infant_id
233 -- on prepared_data.follow_1_minute_infant ("interval_id", infant_id);
235 create unique index follow_1_minute_infant_interval_id
236 on prepared_data.follow_1_minute_infant ("interval_id");
238 create index follow_1_minute_infant_follow_id
239 on prepared_data.follow_1_minute_infant (follow_id);
242 grant_priv(`prepared_data.follow_1_minute_infant')
243 grant_seq_priv(`prepared_data.follow_1_minute_infant', `tableid')
246 -- follow_1_minute_mother
248 create table prepared_data.follow_1_minute_mother (
249 tableid serial primary key
250 ,"interval_id" varchar
251 constraint "follow_1_minute_mother.interval_id must be a follow_1_minute.interval_id"
252 references prepared_data.follow_1_minute("interval_id")
255 ,"grooms_other" varchar
256 ,"groomed_by" varchar
257 ,"vocalizations" varchar
259 constraint "follow_id on follow" references prepared_data.follow(follow_id)
263 create unique index follow_1_minute_mother_interval_id
264 on prepared_data.follow_1_minute_mother ("interval_id");
266 create index follow_1_minute_mother_follow_id
267 on prepared_data.follow_1_minute_mother (follow_id);
269 grant_priv(`prepared_data.follow_1_minute_mother')
270 grant_seq_priv(`prepared_data.follow_1_minute_mother', `tableid')
273 -- follow_1_minute_sibling
275 create table prepared_data.follow_1_minute_sibling (
276 tableid serial primary key
277 ,"interval_id" varchar
278 constraint "follow_1_minute_sibling.interval_id must be a follow_1_minute.interval_id"
279 references prepared_data.follow_1_minute("interval_id")
280 ,"sibling_id" varchar
281 ,"bad_observation" varchar
283 ,"distance_from_mother" varchar
284 ,"vocalizations" varchar
286 ,"grooms_other" varchar
287 ,"groomed_by" varchar
288 ,"distance_from_infant" varchar
289 ,"sibling_interval_id" varchar
291 constraint "follow_id on follow" references prepared_data.follow(follow_id)
295 create unique index follow_1_minute_sibling_sibling_interval_id
296 on prepared_data.follow_1_minute_sibling ("sibling_interval_id");
298 create unique index follow_1_minute_sibling_interval_id_sibling_id
299 on prepared_data.follow_1_minute_sibling ("interval_id", sibling_id);
301 create index follow_1_minute_sibling_follow_id
302 on prepared_data.follow_1_minute_sibling (follow_id);
304 grant_priv(`prepared_data.follow_1_minute_sibling')
305 grant_seq_priv(`prepared_data.follow_1_minute_sibling', `tableid')
310 create table prepared_data.follow_5_minute (
311 tableid serial primary key
313 constraint "page_id on follow_page" references prepared_data.follow_page(page_id)
314 ,"interval_number" int
315 ,"interval_time" timestamp without time zone
316 ,"mother_feeding" varchar -- ignore
317 ,"food_part_initials" varchar -- ignore
318 ,"food_name" varchar -- ignore
319 ,"infant_feeding" varchar -- ignore
320 ,"strange_chimp" varchar -- go in as 'MGE' chimp
321 ,"other_animals" varchar -- ignore
322 ,"interval_id" varchar
324 constraint "follow_id on follow" references prepared_data.follow(follow_id)
329 create unique index follow_5_minute_interval_id
330 on prepared_data.follow_5_minute ("interval_id");
332 -- Data problems. Deal with it in the conversion.
333 create unique index follow_5_minute_follow_id_interval_time
334 on prepared_data.follow_5_minute (follow_id, interval_time);
335 --create index follow_5_minute_follow_id_interval_time
336 -- on prepared_data.follow_5_minute (follow_id, interval_time);
338 grant_priv(`prepared_data.follow_5_minute')
339 grant_seq_priv(`prepared_data.follow_5_minute', `tableid')
342 -- follow_5_minute_group
344 create table prepared_data.follow_5_minute_group (
345 tableid serial primary key
346 ,"interval_id" varchar
347 constraint "follow_5_minute_group.interval_id must be a follow_5_minute.interval_id"
348 references prepared_data.follow_5_minute("interval_id")
349 ,"position_number" int
352 ,"position_id" varchar
354 constraint "follow_id on follow" references prepared_data.follow(follow_id)
359 create unique index follow_5_minute_group_interval_id_chimp_id
360 on prepared_data.follow_5_minute_group ("interval_id", chimp_id);
362 create index follow_5_minute_group_follow_id
363 on prepared_data.follow_5_minute_group (follow_id);
365 grant_priv(`prepared_data.follow_5_minute_group')
366 grant_seq_priv(`prepared_data.follow_5_minute_group', `tableid')