Databasedesign • Hvad skal man tage højde for: – Hvad skal kunne trækkes UD af databasen – Hvilke data skal IND – Hvilke tabeller og felter skal vi have – Så skal man normalisere alle tabellerne for at sikre: – En effektiv og korrekt fordeling af data i tabellerne og mindske mængden af gentagne data i databasen
FORNAVNEFTERNAVNADRESSEPOSTNRBYNAVN PerLarsenVejen Valby BoHansen2300KBH S IbJensenAleen Herlev JensAndersenKøbenhavn S Dårlig tabel – der er ikke noget, der entydigt identificerer hver post Derfor opretter vi en primærnøgle: IDFORNAVNEFTERNAVNADRESSEPOSTNRBYNAVN 1PerLarsenVejen Valby 2BoHansen2300KBH S 3IbJensenAleen Herlev 4JensAndersenKøbenhavn S
Ikke så godt med et automatisk ID, for sletter vi IB og opretter ham igen, så får han nummer 5 og ikke 3, da dette nummer ER brugt – historikken er ikke med – derfor laves et nyt felt STATUS, hvor vi angiver om folk er med eller ikke – MEN POSTERNE ER UNIKKE. Og der var flere steder hvor samme oplysning var skrevet flere gange og stavet forkert. Og der må ikke være ”huller” og felter må ikke afhænge af hinanden. Det gør Postnr og Bynavn, så derfor skal Bynavn ud i en anden tabel IDFORNAVNEFTERNAVNADRESSEPOSTNRSTATUS 1PerLarsenVejen Ja 2BoHansenStien 22300Ja 3IbJensenAleen Nej 4JensAndersenSvinget Ja POSTNRBYNAVN 2300København S 2500Valby 2730Herlev Men vi skal også se på postnummertabellen om den er god nok: Den skal også have et entydigt ID (i tilfælde af at et postnummer ændrer sig)
IDPOSTNRBYNAVN 12300København S 22500Valby 32730Herlev IDFORNAVNEFTERNAVNADRESSEPOSTIDSTATUS 1PerLarsenVejen 1002Ja 2BoHansenStien 21Ja 3IbJensenAleen 353Nej 4JensAndersenSvinget 871Ja Så Postnr fra den anden tabel fjernes og der henvises til Postid i stedet – og så kan vi relatere tabellerne NU ER TABELLERNE PÅ DET, DER HEDDER 3NF – det vil sige: Der er en primærnøgle Ingen repeterende data Alle felter er afhængige af primærnøglen Alle felter der ikke er primærnøglen skal være uafhængige af hinanden
Og så kommer chefen og vil have Privat telefon, Mobil og Arb telefon med! IDFORNAVNEFTERNAVNADRESSEPOSTIDSTATUSPRIVAT TLFMOBILARB TLF 1PerLarsenVejen 1002Ja BoHansenStien 21Ja IbJensenAleen 353Nej JensAndersenSvinget 871Ja For mange tomme felter og felter, der afhænger af hinanden ! Derfor: IDFORNAVNEFTERNAVNADRESSEPOSTIDSTATUS 1PerLarsenVejen 1002Ja 2BoHansenStien 21Ja 3IbJensenAleen 353Nej 4JensAndersenSvinget 871Ja IDKUNDEIDTYPENR IDPOSTNRBYNAVN 12300København S 22500Valby 32730Herlev Så 1 tabel endte op med at blive til 4! TYPETLF ART 1Privat tlf 2Arb tlf 3Mobil