Hvad er en relationsdatabase? Odense, den 19 januar 2004 Version 10
Program for 6 kursusdag: Databaser 0900-0945 Hvad er en relationsdatabase? -1045 Opgave om normalisering 1100-1145 Eksempel på database og diagrammering 00-45 Frokost 45-1330 Opgave om database design 1330-1430 Kliniske anvendelser af databaser 1445-1530 Vurdering af en databases kvalitet 1530-1600 Opsummering og spørgsmål
Introduktion: Fra teknik til anvendelse Hvorfor kan systemet ikke altid det, som jeg gerne vil?
Hvad er data? Data Proces Information Data: Rå Proces: Oprette Udvælgelse Beregning Sortering Ændre Slette Vise Information: Kan bruges Værdi
Krav til data og information: Præcis Up-to date Troværdig Relevant Komplet
Hvad er en relationsdatabase? En organiseret og integreret samling af data Fælles lagringssted for forskellige data Kan let tilgås af programmer Ingen dublering af data Logisk struktur vi som brugere kan forstå og forestille os Tabeller med kolonner/felter/attributter og rækker med records Tabeller knyttes sammen af relationer
Relationsdatabase en kort definition: En database med data fordelt på flere tabeller, som er relateret til hinanden med (mindst) et fælles felt
Hvorfor bruge en relationsdatabase? Undgå at samme data lagres mere end en gang (redundans) Undgå at databasen har uoverensstemmende data (inkonsistens) Nemt og hurtig at opdatere/ændre data Undgå eller minimere fejl Spare plads og gøre søgning i databasen hurtigere Gøre det nemmere at tilføje data til databasen Standard på markedet i dag
Definitioner: Database: Samling af tabeller Tabel: Samling af records med samme indhold - ikke ens Record = Post = Række: Samling af felter, der omhandler samme emne Felt = Attribut: Oplysning Evt unik (primærnøgle) Kolonne: Samling af attributter Fysisk database: Som den er gemt på disk Logisk database: Som vi opfatter den Skitseres som en eller flere tabeller View: Udsnit af en tabel Udsnit eller alt fra flere tabeller samlet i et view
Eksempel: Medarbnr Fornavn Efternavn Afdnr Afdnavn Chef Ansat år 001 002 004 005 Peter Anne Lars Dorthe Kurt Niels Petersen Arnesen Larsen Nielsen Knudsen Jensen 10 15 11 Kirurgi Indkøb Medicin 009 0 007 1987 1985 1988 1990 1967 1933 Primær nøgle Felt Record/række Kolonne
Nøgler: Kandidatnøgle: Nøgle der kunne være primærnøgle Primærnøgle: Entydig identifikation af record Fremmednøgle: Nøgle der kan knytte to tabeller sammen
Krav til tabeller: Søren Vang: Kolonnenavnene skal være entydige Kolonnernes rækkefølger er ligegyldig Der skal være en primærnøgle tilknyttet Posternes rækkefølge er ligegyldig Et felt må ikke indeholde flere værdier eller sagt på en anden måde: Hver kolonne indeholder værdier om samme "attribut" Hver kolonne har et entydigt navn Hver række er enestående; en række kan ikke forekomme mere end en gang, da den primære nøgle ikke kan "duplikeres" Rækkernes/kolonnernes orden er ligegyldig
Hvorfor normalisering? Optimering af logisk struktur Sortering/sammenstilling af DB's attributter Finde og isolere de tidsuafhængige egenskaber Fjerne redundant information = overflødig information Finde entydig identifikation af de enkelte records Mål: at alle tidsafhængige egenskaber er registreret i selvstændige tabeller, der repræsenterer tidsuafhængige relationer
Normalformer oversigt: Ikke normaliseret database Normaliseret database View
Fremgangsmåde: Enten: Oprems alle mulige attributter i databasen Eller: Find attributter til udvalgte entiteter (en genstand, person, sted eller hændelse) 1 normalform 2 normalform 3 normalform Diskuter dette design med brugerne
1 Normalform 1NF: Er der rækker i tabellen, som indeholder samme primærnøgleværdi? og felter, der indeholder gentagne data i disse rækker?
1 Normalform 1NF: En primærnøgle pr tabel: Et eller flere attributter Skal eksistere Må ikke kunne indeholde NULL Værdien er entydig Kan altid fungere som primærnøgle Kun hele primærnøglen kan være primærnøgle Ingen repeterende grupper
Eksempel: Medarbejdere i afdelinger Medarbnr Fornavn Efternavn Afdnr Afdnavn Ansat år Postnr By 001 002 004 005 Peter Anne Lars Lars Dorthe Kurt Niels Petersen Arnesen Larsen Larsen Nielsen Knudsen Jensen 10 22 15 11 Kirurgi Forskning Indkøb Medicin 1987 1985 1988 1988 1990 1967 1933
Fornavn Efternavn Afdnr Afdnavn Ansat år Peter Anne Lars Lars Dorthe Kurt Niels Petersen Arnesen Larsen Larsen Nielsen Knudsen Jensen 10 22 15 11 Kirurgi Forskning Indkøb Medicin 1987 1985 1988 1988 1990 1967 1933 Medarbnr Fornavn Efternavn Ansat år 001 002 004 005 Peter Anne Lars Dorthe Kurt Niels Petersen Arnesen Larsen Nielsen Knudsen Jensen 1987 1985 1988 1990 1967 1933 Afdnr Afdnavn 10 22 15 11 Kirurgi Forskning Indkøb Medicin Medarbnr 001 002 004 005 Medarbnr 001 002 004 005 Postnr By Postnr By
2 Normalform 2NF: Hvis der i en tabel, med en sammensat nøgle er felter, der er direkte afhængige af en del af primærnøglen, skal disse felter flyttes over i en anden tabel, sammen med en kopi af delprimærnøglen
Medarbnr Fornavn Efternavn Ansat år 001 002 004 005 Peter Anne Lars Dorthe Kurt Niels Petersen Arnesen Larsen Nielsen Knudsen Jensen 1987 1985 1988 1990 1967 1933 Afdnr Afdnavn 10 22 15 11 Kirurgi Forskning Indkøb Medicin Medarbnr 001 002 004 005 Postnr By Afdnr Afdnavn 10 22 15 11 Kirurgi Forskning Indkøb Medicin Postnr By Afdnr 10 22 15 11 Medarbnr 001 002 004 005
3 Normalform 3NF: Er nogle af ikke-nøglefelterne afhængig af andre ikke-nøglefelter? Transistence data skal fjernes!!
Transistence data: Et ikke-nøgle attribut skal ene og alene være afhængig af primærnøglen og ikke af et andet ikkenøgle attribut eller en kombination af ikke-nøgle attributter Eksempel: Postnummer og bynavn
Medarbnr Fornavn Efternavn Ansat år 001 002 004 005 Peter Anne Lars Dorthe Kurt Niels Petersen Arnesen Larsen Nielsen Knudsen Jensen 1987 1985 1988 1990 1967 1933 Afdnr Afdnavn 10 22 15 11 Kirurgi Forskning Indkøb Medicin Postnr By Afdnr 10 22 15 11 Medarbnr 001 002 004 005 Postnr By Afdnr Afdnavn 10 22 15 11 Kirurgi Forskning Indkøb Medicin Postnr
Medarbnr Fornavn Efternavn Ansat år 001 002 004 005 Peter Anne Lars Dorthe Kurt Niels Petersen Arnesen Larsen Nielsen Knudsen Jensen 1987 1985 1988 1990 1967 1933 Afdnr 10 22 15 11 Medarbnr 001 002 004 005 Postnr By Afdnr Afdnavn 10 22 15 11 Kirurgi Forskning Indkøb Medicin Postnr
Check om de 3 Normalformer er opfyldt: Every field in the record depends on the key, the whole key, and nothing but the key Sådan!!!!!!!