====== 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
);