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}