====== Lösung: Tierheim ====== {{:de:modul:m290_guko:learningunits:lu06:loesungen:tierheim_crowsfoot.drawio.png?direct&1200|Crow's-Foot-Diagramm Tierheim}} //Klicken Sie aufs Bild, um es vergrössert anzuzeigen.// ===== Fremdschlüssel ===== * **gehege_id** steht in **tier**. Ein Gehege beherbergt viele Tiere, ein Tier lebt in genau einem Gehege (1:n). * **art_id** steht ebenfalls in **tier**. Eine Tierart umfasst viele Tiere, ein Tier gehört zu genau einer Art (1:n) – zwei Fremdschlüssel in derselben Tabelle. Mehrere Fremdschlüssel in derselben Tabelle sind kein Fehler: Sie treten immer dann auf, wenn eine Entität an zwei unabhängigen 1:n-Beziehungen die "viele"-Seite ist. ===== Datentypen ===== ^ Spalte ^ Typ ^ Begründung ^ | tier_id, gehege_id, art_id | INT | Ganzzahlige IDs | | geburtsdatum | DATE | Nur das Datum ist relevant | | geschlecht | CHAR(1) | Immer genau ein Zeichen (f/m) | | flaeche | DECIMAL(5,2) | Fläche mit Nachkommastellen, exakt | | name, standort, bezeichnung, herkunft | VARCHAR | Textlänge variabel | ===== SQL: Tabellen erstellen ===== Fremdschlüssel-Spalten sind angelegt, aber noch **ohne FOREIGN-KEY-Constraint** – den setzen wir später im Modul. CREATE TABLE gehege ( gehege_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, standort VARCHAR(20), flaeche DECIMAL(5,2) ); CREATE TABLE tierart ( art_id INT AUTO_INCREMENT PRIMARY KEY, bezeichnung VARCHAR(50) NOT NULL, herkunft VARCHAR(20) ); CREATE TABLE tier ( tier_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, geburtsdatum DATE, geschlecht CHAR(1), gehege_id INT, art_id INT );