Sådan oprettes en database
I DB Browser skal du først oprette en database (se undervisningsmaterialet). Under fanen Database struktur skal du vælge “Create Table” (Opret tabel). Først skal du navngive tabellen “Cohort”. Længere nede i Felter skal du klikke på “Tilføj felt”. Vi vil følge en navngivningskonvention, hvor feltnavnet kommer til at indeholde bordnavnet (alle felter i dette bord vil starte med cohort_). Vi gør dette for at undgå overlapning af feltnavne. Det første felt vil altid være den unikke identifikator for posten. Her kalder vi det cohort_id. Du vil se i sammenligningstabellen ovenfor, at SQLite kan håndtere et begrænset antal datatyper. I dette tilfælde er vores valg text-select it fra drop-down-menuen. Det vil være en “Primary key” og “Not NULL”, hvilket betyder, at den vil være unik og altid til stede i hver record, du tilføjer. Herefter tilføjes felterne cohort_cross_date, cohort_parent_1 og cohort_parent_2, alle tre som tekst. Dernæst vil vi tilføje et felt kaldet “cohort_location” med validering som tekst. Det betyder, at feltet vil acceptere et begrænset antal muligheder. Ideelt set vil alle dine tekstfelter være udformet på denne måde. Måden at gøre dette på i DB Brower er at programmere en kontrol for at se, om inputdataene er en af de muligheder, du har givet dem på forhånd. Rul til højre og find kolonnen “Check” (kontrol). Indtast cohort_location==”tank_1″ ELLER cohort_location==”tank_2″. I bund og grund kæder du de tilladte værdier for cohort_location sammen med den boolske OR-kode. Bemærk også, at du skal bruge det dobbelte lighedstegn. Syntaksen for dette er field_name == “option” OR field_name==”some_other_option”, og du kan blive ved med at tilføje OR’er.
Den individuelle tabel oprettes på samme måde, men her vil vi indføre en fremmednøgle til kohortetabellen. Det vil sige, at vi vil knytte den til kohortetabellen, så kun id’erne for de kohorter, der er oprettet, kan indtastes i denne tabel. Dette holder dataene rene og forbedrer hastigheden af eventuelle table joins, som du måtte vælge at lave i fremtiden. Først skal du oprette feltet “individual_id” som en TEXT-datatatype og som Primary Key, Not NULL og Unique. Når du dernæst opretter “ind_cohort_id” som en TEXT-datatatype, skal du rulle til kolonnen Foreign Key. Når du klikker på det relevante felt, vises en rullemenuer. I den første drop-down menu vælger du tabellen (i dette tilfælde cohort) og i den næste feltet (“cohort_id”). I tekstfeltet skriver du ON DELETE SET NULL ON UPDATE CASCADE. Du kan også vælge “NO ACTION”, hvis du ønsker at bevare referencen til kohorten i den individuelle tabel, selv om selve kohorteposten slettes. Se vinduet med SQL-scriptet nedenfor. Det skal vise FOREIGN KEY(`ind_cohort_id`) REFERENCES `cohort`(`cohort_id`). Hvis denne linje ikke vises, skal du fjerne klik og klikke tilbage på PK-, U- og NN-felterne. Du skal også opsætte den fremmede nøgle, når du opretter tabellen. Dette er en finurlighed i DB Browser (eller en fejl). Til sidst skal du afslutte med “location” som en TEXT-datatatype.
Til sidst skal du opsætte den “fysiske” tabel. Du vil bemærke nye datatyper. Først og fremmest er physical_id et heltal (INT) og er også auto-inkrementelt (AI). Dette sikrer, at hver måling, du foretager, vil blive behandlet som unik. Når du arbejder med data, der kommer som hele tal, f.eks. tællinger, skal du sørge for at validere dataene for at sikre, at de er hele tal. Feltet “physical_cohort_or_ind” fastslår, om den målte organisme følges som et individ eller kun som en del af kohorten (fordi den er for lille til at blive mærket og adskilt fra de andre medlemmer af kohorten). Denne datatype er TEXT, med Check (physical_cohort_or_ind==’cohort’ OR physical_cohort_or_ind==’ind’). Endelig er målingerne af vægt og længde af datatypen NUMERIC. Bemærk, at måleenheden er kodet i feltnavnet. Du kan også have et separat felt for enheder, hvis du forventer at arbejde med forskellige instrumenter og på forskellige skalaer. Det vigtige er at holde enhederne adskilt fra den numeriske måling, så dine data er ryddelige og klar til transformationer og analyser.