200 likes | 496 Views
Normalisering (databaser, del 8). Normalisering. Normalisering er en teknik til at forbedre et database-design, i forhold til at undgå vores dødsfjender: Redundans – at noget data forekommer mere end én gang Inkonsistens – at noget data er i modstrid med andet data. Normalisering.
E N D
Normalisering • Normalisering er en teknik til at forbedre et database-design, i forhold til at undgå vores dødsfjender: • Redundans – at noget data forekommer mere end én gang • Inkonsistens – at noget data er i modstrid med andet data RHS – Informationsteknologi
Normalisering • Hvis man er en haj til database-design – og følger reglerne – vil man ofte ende med en normaliseret database uden at tænke over det… 3. normalform…? You wanna bet on that…? • Normalisering er en slags ”sundhedstjek” af dit database-design RHS – Informationsteknologi
Tre grader af normalisering – første grad • 1.Normalform • Tabellen har en nøgle • Alle tabellens poster er lige lange RHS – Informationsteknologi
Tre grader af normalisering – første grad • Hvorfor skal en tabel have en nøgle? • Hvis en tabel ikke har en nøgle, kan vi ikke vide hvad data egentlig refererer til (tvetydighed) RHS – Informationsteknologi
Tre grader af normalisering – første grad • Hvorfor skal posterne være lige lange? • For at undgå spild af plads • Typisk struktur • Nøglefelt • Variabelt antal datafelter • Giver en tabel med felter a la Navn, Fag1, Fag2, Fag3, Fag4,… RHS – Informationsteknologi
Tre grader af normalisering – første grad (før) Ikke alle poster er lige lange Elevnavn er ikke entydigt RHS – Informationsteknologi
Tre grader af normalisering – første grad • Hvordan løser vi problemerne? • Trin 1: Indfør en nøgle • Inkludér nok felter til at nøglen er entydig • Opfind selv nøgle, ofte et løbenummer • Trin 2: Indfør ny tabel med fast længde • Ofte ændres Nøgle, Fag1, Fag2,… til • Nøgle, Fag (med mange poster) RHS – Informationsteknologi
Tre grader af normalisering – første grad (efter) Alle poster i tabellen er unikke Alle poster i tabellen har længde 3 Tabellen er nu på 1.normalform! …og så videre… RHS – Informationsteknologi
3 grader af normalisering – anden grad • 2.Normalform • Tabellen er på 1.normalform • Der må kun være et nøglefelt i hver tabel, der entydigt afgør indholdet af alle øvrige felter RHS – Informationsteknologi
3 grader af normalisering – anden grad • Hvad i alverden betyder ”Der må kun være et nøglefelt i hver tabel, der entydigt afgør indholdet af alle øvrige felter”!? • Husk, at et nøglefelt kan være et enkelt felt, eller en kombination af felter • Nogle informationer kan måske udpeges entydigt med mindre information end den nøglefeltet rummer… RHS – Informationsteknologi
Tre grader af normalisering – anden grad (før) I denne tabel er Elev-nummer og Fag nøgle – denne kombination er entydig Men Elevnavn udpeges jo entydigt af Elev-nummer alene! ”Spild” at gentage Elev-navn gang på gang …og så videre… RHS – Informationsteknologi
3 grader af normalisering – anden grad • Løsningen er oftest at lave nye tabeller, hvor den ”mindst mulige” nøgle bruges • I eksemplet: Elevnavn udpeges entydigt af Elevnummer… så lav en tabel med kun Elevnummer som nøgle • Elevnavn fjernes derfor fra den oprinde-lige tabel RHS – Informationsteknologi
Tre grader af normalisering – anden grad (efter) Elevnummer -> Elevnavn (Elevnummer, Fag) -> Timer …og så videre… RHS – Informationsteknologi
3 grader af normalisering – tredje grad • 3.Normalform • Tabellen er på 2.normalform • Alle felter, der afhænger af andet end nøgle-feltet, splittes ud i andre tabeller RHS – Informationsteknologi
3 grader af normalisering – tredje grad (før) • Elevnummer udpeger entydigt Elevnavn, Postnummer og By; d.v.s. 2.normalform OK • MEN Postnummer udpeger også entydigt By! RHS – Informationsteknologi
3 grader af normalisering – tredje grad (efter) Hmm, no bluffing, huh…? Elevnummer -> Elevnavn, Postnummer Postnummer -> By RHS – Informationsteknologi
Normalisering i en nøddeskal • Normalisering skal fjerne redundans og inkonsistens fra databasen • Vær på vagt, hvis samme information forekommer mange gange – er det nødvendigt…? • Brug reglerne for normalisering som et ”sundhedscheck” for databasens design RHS – Informationsteknologi