====== Lösungen zu Aufgabe 1 ====== ===== 1. Kind wird geboren von Mutter ===== {{ :jg10:nzum:loesungen1:pasted:20220926-100908.png }} * **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: {{ :jg10:nzum:loesungen1:pasted:20220926-101806.png }} * **Person** [__id: int__, rufname: varchar(80), familienname: varchar(80), //geboren_von_mutter_id: int//] ===== CD enthält Song ===== {{ :jg10:nzum:loesungen1:pasted:20220926-101931.png }} * **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 ===== {{ :jg10:nzum:loesungen1:pasted:20220926-102142.png }} * **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 ===== {{ :jg10:nzum:loesungen1:pasted:20220926-102348.png }} * **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 ===== {{ :jg10:nzum:loesungen1:pasted:20220926-102547.png }} * **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 ([[https://de.wikipedia.org/wiki/Dreik%C3%B6rperproblem|"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: {{ :jg10:nzum:loesungen1:pasted:20220926-103238.png }} * **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 ===== {{ :jg10:nzum:loesungen1:pasted:20220926-103630.png }} * **Schülerin** [__id: int__, rufname: varchar(80), familienname: varchar(80), //klasse_id: int//] * **Klasse** [__id: int__, bezeichnung: varchar(20), jahrgangsstufe: int ] ===== Lehrkraft unterrichtet Klasse ===== {{ :jg10:nzum:loesungen1:pasted:20220926-103815.png }} * **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 ===== {{ :jg10:nzum:loesungen1:pasted:20220926-104106.png }} * **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. ===== Molekül besteht aus Element ===== {{ :jg10:nzum:loesungen1:pasted:20220926-104400.png }} * **Molekül** [__id: int__, bezeichnung: varchar(100)] * **Element** [__id: int__, bezeichnung: varchar(100), kürzel: varchar(4), masse: decimal(2, 8), protonenzahl: int] * **besteht_aus** [__molekül_id__, __element_id__]