https://hackmd.io/lBD09d3gSBKxHN4WhWh-yA?both# Tut5 - Lsg
## Aufgabe: FDs
1)
- typ->material
- Anzahl -> Typ, Farbe, Material
- typ -> Anzahl
- typ -> material, anzahl,far
- Farbe, Material, Anzahl -> Typ
- typ,farbe->material
-
- Typ,... -> Allen anderen
2)
typ
3)
ne, es könnten neue Werte hinzukommen. FDs sollten immer zuvor definiert werden, sie beziehen sich auf das Schema, nicht auf die Instanz
## Aufgabe: Amstrong-Axiome
- A->B,C,D
- A->C
- F->E,F
- F->F (ginge mit alle; Reflexivität)
- (A,G) -> G
- B->D,C
- (A,F)->A,B,C,D,E,F
B -> BD -> C
Transitivität:
B -> C
### Schlüssel
1+2)
- G: SK? true
- (A,F): SK? true
- (A,G): SK? false
3)
- G: best; least attributes
- (A,F)
## Aufgabe FDs2
*Relation S1:*
|W|X|Y|Z|
|-|-|-|-|
|1|2|3|4|
|1|*3*|3|3|
|*2*|2|3|5|
*Relation S2:*
|W|X|Y|Z|
|-|-|-|-|
|1|2|3|4|
|2|2|*4*|5|
|1|6|*5*|2|
## Aufgabe Normalisierung Lieferant
Schlüssel hier *kursiv*!
**1NF**:true; 2NF?: false (BteilNr -> BteilBez)
Lieferant(*LieferantNr*, Ort, Entf)
Lieferung(*LieferantNr*,*BteilNr*, BteilBez, Anzahl, Bearbeiter)
**2NF**: true; 3NF?: Nein, wegen Ort -> Entf
Lieferung(*LieferantenNr*, *BteilNr*, Anzahl, Bearbeiter)
Bauteil(*BteilNr*, BauteilBez)
Lieferant(*LieferantNr*, Ort, Entf)
**3NF**: true; BCNF?: false, wegen Bearbeiter -> BteilNr
Lieferung(*LieferantenNr*, *BteilNr*, Anzahl, Bearbeiter)
Bauteil(*BteilNr*, BauteilBez)
Lieferant(*LieferantNr*, Ort)
Ort(*Ort*, Entf)
**BCNF**: true;
Lieferung(*LieferantenNr*, Anzahl, *Bearbeiter*)
Bauteil(*BteilNr*, BauteilBez)
Lieferant(*LieferantNr*, Ort)
Ort(*Ort*, Entf)
Bearbeiter(*Bearbeiter*, BteilNr)
## Aufgabe Normalisierung Lieferant
Bootsname -> Segelfläche
(Regattaname,Bootsname)->Besatzung
Regattaname ->Start,Länge,Ziel
(Start,Ziel)->Länge
**1NF**?: true;
2NF: false:
- RName -> Start, Ziel, Länge
- Bootsname -> Segelfläche
Regatta(*Bootsname*, Segelfläche, Besatzung, *RName*, Start, Ziel, Länge)
**2NF**: true
3NF: false:
- (Start,Ziel)->Länge
Boot(*Bootsname*, Segelfläche)
Regatta(*RName*,Start,Ziel,Länge)
Teilname(*Bootsname*, *RName*,Besatzung)
**3NF**:true
**BCNF**: true
Strecke(*Start*, *Ziel*, Länge)
Boot(*Bootsname*, Segelfläche)
Teilname(*Bootsname*, *RName*,Besatzung)
Regatta(*RName*,Start,Ziel)
## Aufgabe Normalisierung Prüfungen
MatrNr -> Name, Vorname, Geb, FBNr, FBName
FBNr -> FBName
PNr->Fach,Prüfer,Termin
MatrNr, PNr -> Note
1NF?: false
Prüfungsanm(MatNr,Name,Vorname,Geb,FBNr,FBName,{Prüfung(PNr,Fach,Prüfer,Termin,Note)})
**1NF**: ja
2NF: nein:
- PNr->Fach,Prüfer,Termin
Student(*MatrNr*, Name, Vorname, Geb, FBNr, FBName)
Prüfungteilnahme(*MatrNr*, *PNr*, Fach,Prüfer,Termin, Note)
**2NF**: ja
3NF: FBNr -> FBName
Student(*MatrNr*, Name, Vorname, Geb, FBNr, FBName)
Prüfung(*PNr*, Fach, Prüfer, Termin)
Teilnahme(*MatrNr*, *PNr*, Note)
**3NF**:true
**BCNF**: ja!
Student(*MatrNr*, Name, Vorname, Geb, FBNr)
Fachbereich(*FBNr*, FBName)
Teilnahme(*MatrNr*, *PNr*, Note)
Prüfung(*PNr*, Fach, Prüfer, Termin)