1. NF verletzt! Problem z.B. Sortieren aller Kunden nach Nachname

Werbung
1. NF verletzt!
Problem z.B. Sortieren aller Kunden nach
Nachname
Lösung: Aufteilen von Name in Name/Vorname
sowie Adresse in Straße/Hausnummer und Ort
in PLZ/Ortsname
5 USB Massageball 5 2,99 12341
2 NF verletzt!
Problem: kein eindeutiger Schlüssel festzulegen
aufgrund von Abhängigkeiten von Teilen eines
Schlüsselkandidaten (KdNr, AuftrNr...)
Lösung: auftrag: { AuftrNr:int , *KdNr:int*}
artikel: {Preis:float, ArtNr:int , ArtikelName:string}
enthaelt: {Anzahl:int, *ArtNr:int*, *AuftrNr:int*}
** => Fremdschlüssel
1NF verletzt
Lösung:
sport: {*SchuelerNr:int*, Leistung:float,
*Wettkampf:int*}
schueler: {name:string, SchuelerNr:int }
wettkampf: { Wettkampf:int , Einheit:string,
name:string}
Kunde : {kid:int, name:string, adresse:string,
geburtstag:date, alter:int}
1NF verletzt!
Lösung: name, adresse auftrennen
Zusätzlich alter weglassen (ändert sich
ständig!).
Kunde : {kid:int, name:string, vorname:string,
strasse:string, hausnr:string, plz:int, ort:string
geburtstag:date}
3NF verletzt: kid bestimmt plz und plz bestimmt ort!
Lösung: ort: { plz:int , ortsname:string}
Serie : {sid:int, folge:string, serien_titel:string,
folgen_titel:string, film_firma:string}
Beispiel:
sid
folge
serientitel folgentitel filmfir
578 S1E3 Simpsons Der Untergang WB
578 S1E4 Simpsons Der Aufstieg WB
786 S1E4 NCIS Der Untergang CBS
Primärschlüssel: sid, folge
sid bestimmt serientitel und filmfirma
folge bestimmt folgentitel
2NF verletzt!
Kunde : {kid:int, name:string, vorname:string,
plz:int, strasse: string, hsnr: string}
Teil : {tid:int, beschreib:string, preis:float,
gewicht:float}
Auftrag : {kid:int, tid:int, datum:date, anzahl:int}
Herunterladen