Inhaltsverzeichnis
Lösungen zu Aufgabe 1
1. Kind wird geboren von Mutter
- Kind [id: int, rufname: varchar(80), familienname: varchar(80), mutter_id: int]
- Mutter [id: int, rufname: varchar(80), familienname: varchar(80)]
Da die Tabellen Kind und Mutter - abgesehen vom Fremdschlüssel mutter_id dieselben Attribute rufname, familienname, geschlecht, … haben, wäre auch folgende Lösung vorstellbar:
- Person [id: int, rufname: varchar(80), familienname: varchar(80), geboren_von_mutter_id: int]
CD enthält Song
- CD [id: int, bezeichnung: varchar(80), interpret: varchar(100)]
- Song [id: int, titel: varchar(80), länge_in_s: int, cd_id: int]
Bemerkung: Hier könnte man sich genausogut vorstellen, dass ein Song auf mehreren CDs vorkommt (Compilations…). In diesem Fall wäre es dann eine n:m-Relation und man bräuchte eine Beziehungstabelle.
Schülerin bucht Wahlkurs
- Schülerin [id: int, rufname: varchar(80), familienname: varchar(80), geschlecht: varchar(1)]
- Wahlkurs [id: int, bezeichnung: varchar(100), beschreibung: varchar(1000)]
- bucht [schuelerin_id: int, wahlkurs_id: int]
Person spielt Instrument
- Person [id: int, rufname: varchar(80), familienname: varchar(80), geschlecht: varchar(1)]
- Instrument [id: int, bezeichnung: varchar(100)]
- spielt [person_id, instrument_id]
Planet umkreist Sonne
- Planet [id: int, bezeichnung: varchar(100), sonne_id: int]
- Sonne [id: int, bezeichnung: varchar(100)]
Ein paar Bemerkungen dazu:
- Jeder Stern ist eine Sonne und viele davon haben Planeten
- Doppelsternsysteme haben keine Planeten, weil das Kepler-Problem für mehr als zwei Körper keine stabile Lösung hat ("Dreikörperproblem")
Jäger jagt Beute (Tierarten)
Da sowohl Jäger als auch Beute Tierarten sind, bietet es sich an, nur eine Tabelle Tierart zu erstellen mit folgender Relation:
- Tierart [id: int, bezeichnung: varchar(100), ist_säugetier: boolean]
- jagt [jäger_id, beute_id]]
Man könnte die beiden Attribute von jagt auch tierart_jäger_id und tierart_beute_id nennen, um zu verdeutlichen, dass es sich um Fremdschlüsselreferenzen zur Tabelle Tierart handelt.
Schüler/in geht in Klasse
- Schülerin [id: int, rufname: varchar(80), familienname: varchar(80), klasse_id: int]
- Klasse [id: int, bezeichnung: varchar(20), jahrgangsstufe: int ]
Lehrkraft unterrichtet Klasse
- Lehrkraft [id: int, rufname: varchar(80), familienname: varchar(80)]
- Klasse [id: int, bezeichnung: varchar(20), jahrgangsstufe: int ]
- unterrichtet [lehrkraft_id, fach_id]
Legierung besteht aus Metall
- Metall [id: int, bezeichung: varchar(80)]
- Legierung [id: int, bezeichnung: varchar(80)]
- besteht_aus [legierung_id, metall_id]
Bemerkung: Man könnte sich natürlich auf den Standpunkt stellen, dass eine Legierung selbst wieder ein Metall ist und ähnlich verfahren wie bei der Jäger-Beute-Aufgabe weiter oben.