dnl Copyright (C) 2013 The Meme Factory, Inc., http://www.meme.com/ dnl dnl This file is part of GombeMI. dnl dnl GombeMI is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 3 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the dnl GNU General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with GombeMI. If not, see . dnl dnl Creates prepared_data schema and tables therein. dnl dnl Karl O. Pinc dnl dnl Mar 7, 2013 dnl dnl Remarks: dnl dnl Intended to be piped to psql run as gombemi_admin. dnl m4 includes include(`copyright.m4') include(`constants.m4') include(`grants.m4') DROP SCHEMA IF EXISTS prepared_data CASCADE; CREATE SCHEMA prepared_data; GRANT USAGE ON SCHEMA prepared_data TO gombemi_editors , gombemi_readers; SET SEARCH_PATH TO prepared_data; -- -- Create all the tables. -- begin; /* drop table if exists prepared_data.follow cascade; drop table if exists prepared_data.follow_1_minute cascade; drop table if exists prepared_data.follow_1_minute_infant cascade; drop table if exists prepared_data.follow_1_minute_mother cascade; drop table if exists prepared_data.follow_1_minute_sibling cascade; drop table if exists prepared_data.follow_5_minute cascade; drop table if exists prepared_data.follow_5_minute_group cascade; */ -- cross_reference_for_program create table prepared_data.crfp ( tableid serial primary key ,"year" int ,"follow_date" date ,"focal_mom" text ,"focal_infant" text ,"siblings" text ,"researcher" text ,"pages" text ,"start_entry_date" date ,"end_entry_date" date ,"enterer" text ,"follow_status" text ,"entry_notes" text ,"group_comp_problem" text ,"computer" text ,"checked_over" text ,"also_checked_by" text ,"last_checked_by_date" text ,"absent_mother_infant" text ,"group_blank" text ,"protocol" text ,"template" text ,"temptype" text ,"scan_checked" text ,"paper_follow_location" text ,"inf_birthdate" text ,"infant_age" text ); create unique index crfp_date_mom on prepared_data.crfp("follow_date", "focal_mom"); grant_priv(`prepared_data.crfp') grant_seq_priv(`prepared_data.crfp', `tableid') -- page_followtype create table prepared_data.page_followtype ( tableid serial primary key ,date date ,mom text ,page text ,temptype text ,done boolean ); create index page_followtype_date_mom_page on prepared_data.page_followtype(date, mom, page); grant_priv(`prepared_data.page_followtype') grant_seq_priv(`prepared_data.page_followtype', `tableid') -- follow create table prepared_data.follow ( tableid serial primary key ,"follow_date" date ,"mother_id" varchar ,"infant_id" varchar ,"infant2_id" varchar ,"sibling_id" varchar ,"sibling2_id" varchar ,"conducted_by" varchar ,"entered_by" varchar ,"sheet_id" int ,"left_group_id" int ,"right_group_id" int ,"follow_status" varchar ,"follow_id" varchar ,"time_mode" varchar ,"ampm" varchar ,done boolean ); create unique index follow_follow_id on prepared_data.follow ("follow_id"); create index follow_date on prepared_data.follow ("follow_date"); grant_priv(`prepared_data.follow') grant_seq_priv(`prepared_data.follow', `tableid') -- follow_page create table prepared_data.follow_page ( tableid serial primary key ,"follow_id" text constraint "follow_id on follow" references prepared_data.follow(follow_id) ,"page_number" int ,"location" text ,"video" text ,"page_id" text , done boolean ); create index follow_page_follow_id on prepared_data.follow_page("follow_id"); create unique index follow_page_page_id on prepared_data.follow_page ("page_id"); grant_priv(`follow_page') grant_seq_priv(`follow_page', `tableid') -- follow_1_minute create table prepared_data.follow_1_minute ( tableid serial primary key ,"page_id" varchar constraint "page_id on follow_page" references prepared_data.follow_page(page_id) ,"interval_number" int ,"interval_time" timestamp without time zone ,"bad_observation" varchar ,"rain" varchar ,"comment" varchar ,"commentrtf" varchar ,"interval_id" varchar , follow_id varchar constraint "follow_id on follow" references prepared_data.follow(follow_id) ,done boolean ); create unique index follow_1_minute_interval_id on prepared_data.follow_1_minute ("interval_id"); -- Data problem. Let the conversion sort it out. create unique index follow_1_minute_follow_id_interval_time on prepared_data.follow_1_minute (follow_id, interval_time); --create index follow_1_minute_follow_id_interval_time -- on prepared_data.follow_1_minute (follow_id, interval_time); grant_priv(`prepared_data.follow_1_minute') grant_seq_priv(`prepared_data.follow_1_minute', `tableid') -- follow_1_minute_infant create table prepared_data.follow_1_minute_infant ( tableid serial primary key ,"interval_id" varchar constraint "follow_1_minute_infant.interval_id must be a follow_1_minute.interval_id" references prepared_data.follow_1_minute("interval_id") ,"infant_id" varchar ,"nursing" varchar ,"eating" varchar ,"walks" varchar ,"playing" varchar ,"resting" varchar ,"in_contact" varchar ,"within_reach" varchar ,"within_0_5_meters" varchar ,"between_5_15_meters" varchar ,"more_than_15_meters" varchar ,"rides_on_stomach" varchar ,"rides_on_back" varchar ,"dangles" varchar ,"contacts_other" varchar ,"grooms_other" varchar ,"groomed_by" varchar ,"plays" varchar ,"displays" varchar ,"refused" varchar ,"cries" varchar ,"vocalizations" varchar ,"begs" varchar ,"aggression" varchar ,"infant_interval_id" varchar , follow_id varchar constraint "follow_id on follow" references prepared_data.follow(follow_id) , done boolean ); create unique index follow_1_minute_infant_infant_interval_id on prepared_data.follow_1_minute_infant ("infant_interval_id"); -- Data problems. Let the conversion deal with it. create unique index follow_1_minute_infant_interval_id_infant_id on prepared_data.follow_1_minute_infant ("interval_id", infant_id); --create index follow_1_minute_infant_interval_id_infant_id -- on prepared_data.follow_1_minute_infant ("interval_id", infant_id); create unique index follow_1_minute_infant_interval_id on prepared_data.follow_1_minute_infant ("interval_id"); create index follow_1_minute_infant_follow_id on prepared_data.follow_1_minute_infant (follow_id); grant_priv(`prepared_data.follow_1_minute_infant') grant_seq_priv(`prepared_data.follow_1_minute_infant', `tableid') -- follow_1_minute_mother create table prepared_data.follow_1_minute_mother ( tableid serial primary key ,"interval_id" varchar constraint "follow_1_minute_mother.interval_id must be a follow_1_minute.interval_id" references prepared_data.follow_1_minute("interval_id") ,"mother_id" varchar ,"behavior" varchar ,"grooms_other" varchar ,"groomed_by" varchar ,"vocalizations" varchar , follow_id varchar constraint "follow_id on follow" references prepared_data.follow(follow_id) , done boolean ); create unique index follow_1_minute_mother_interval_id on prepared_data.follow_1_minute_mother ("interval_id"); create index follow_1_minute_mother_follow_id on prepared_data.follow_1_minute_mother (follow_id); grant_priv(`prepared_data.follow_1_minute_mother') grant_seq_priv(`prepared_data.follow_1_minute_mother', `tableid') -- follow_1_minute_sibling create table prepared_data.follow_1_minute_sibling ( tableid serial primary key ,"interval_id" varchar constraint "follow_1_minute_sibling.interval_id must be a follow_1_minute.interval_id" references prepared_data.follow_1_minute("interval_id") ,"sibling_id" varchar ,"bad_observation" varchar ,"behavior" varchar ,"distance_from_mother" varchar ,"vocalizations" varchar ,"plays" varchar ,"grooms_other" varchar ,"groomed_by" varchar ,"distance_from_infant" varchar ,"sibling_interval_id" varchar , follow_id varchar constraint "follow_id on follow" references prepared_data.follow(follow_id) , done boolean ); create unique index follow_1_minute_sibling_sibling_interval_id on prepared_data.follow_1_minute_sibling ("sibling_interval_id"); create unique index follow_1_minute_sibling_interval_id_sibling_id on prepared_data.follow_1_minute_sibling ("interval_id", sibling_id); create index follow_1_minute_sibling_follow_id on prepared_data.follow_1_minute_sibling (follow_id); grant_priv(`prepared_data.follow_1_minute_sibling') grant_seq_priv(`prepared_data.follow_1_minute_sibling', `tableid') -- follow_5_minute create table prepared_data.follow_5_minute ( tableid serial primary key ,"page_id" varchar constraint "page_id on follow_page" references prepared_data.follow_page(page_id) ,"interval_number" int ,"interval_time" timestamp without time zone ,"mother_feeding" varchar -- ignore ,"food_part_initials" varchar -- ignore ,"food_name" varchar -- ignore ,"infant_feeding" varchar -- ignore ,"strange_chimp" varchar -- go in as 'MGE' chimp ,"other_animals" varchar -- ignore ,"interval_id" varchar , follow_id varchar constraint "follow_id on follow" references prepared_data.follow(follow_id) , done boolean ); create unique index follow_5_minute_interval_id on prepared_data.follow_5_minute ("interval_id"); -- Data problems. Deal with it in the conversion. create unique index follow_5_minute_follow_id_interval_time on prepared_data.follow_5_minute (follow_id, interval_time); --create index follow_5_minute_follow_id_interval_time -- on prepared_data.follow_5_minute (follow_id, interval_time); grant_priv(`prepared_data.follow_5_minute') grant_seq_priv(`prepared_data.follow_5_minute', `tableid') -- follow_5_minute_group create table prepared_data.follow_5_minute_group ( tableid serial primary key ,"interval_id" varchar constraint "follow_5_minute_group.interval_id must be a follow_5_minute.interval_id" references prepared_data.follow_5_minute("interval_id") ,"position_number" int ,"chimp_id" varchar ,"present" varchar ,"position_id" varchar , follow_id varchar constraint "follow_id on follow" references prepared_data.follow(follow_id) , done boolean ); create unique index follow_5_minute_group_interval_id_chimp_id on prepared_data.follow_5_minute_group ("interval_id", chimp_id); create index follow_5_minute_group_follow_id on prepared_data.follow_5_minute_group (follow_id); grant_priv(`prepared_data.follow_5_minute_group') grant_seq_priv(`prepared_data.follow_5_minute_group', `tableid') commit;