de:modul:m290_guko:learningunits:lu06:loesungen:case_gemeinden

Lösung: Schweizer Regionen

Crow's-Foot-Diagramm Schweizer Regionen Klicken Sie aufs Bild, um es vergrössert anzuzeigen.

  • kantons_kennzeichen steht in gemeinde. Ein Kanton hat viele Gemeinden, eine Gemeinde gehört zu genau einem Kanton (1:n).
  • anlage_id steht ebenfalls in gemeinde. Eine Kehrichtverbrennungsanlage wird von mehreren Gemeinden genutzt, eine Gemeinde nutzt genau eine Anlage (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.

Besonderheit: Der Primärschlüssel von kanton ist kantons_kennzeichen CHAR(2) – kein INT wie in allen anderen Tabellen. Das ist ein sogenannter natürlicher Schlüssel: „ZH“, „BE“, „GR“ sind von Natur aus eindeutig und ändern sich nie, eine künstliche Zusatz-ID wäre hier unnötig. Der Fremdschlüssel in gemeinde übernimmt exakt denselben Typ (CHAR(2)) – Primär- und Fremdschlüssel müssen immer vom gleichen Datentyp sein.

Spalte Typ Begründung
kantons_kennzeichen CHAR(2) Natürlicher Schlüssel, immer genau 2 Zeichen („ZH“, „BE“ …)
gemeinde_id, anlage_id INT Ganzzahlige, künstliche IDs
einwohnerzahl INT Ganze Zahl
flaeche DECIMAL(6,2) Fläche mit Nachkommastellen, exakt – der grösste Kanton (GR, ca. 7105 km²) passt in 4 Vorkommastellen
plz CHAR(4) Einzelne, repräsentative Postleitzahl
name VARCHAR Textlänge variabel

Fremdschlüssel-Spalten sind angelegt, aber noch ohne FOREIGN-KEY-Constraint – den setzen wir später im Modul.

CREATE TABLE kanton (
  kantons_kennzeichen CHAR(2) PRIMARY KEY,
  name VARCHAR(20) NOT NULL,
  einwohnerzahl INT,
  flaeche DECIMAL(6,2)
);
 
CREATE TABLE kva (
  anlage_id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(20) NOT NULL,
  ort VARCHAR(20)
);
 
CREATE TABLE gemeinde (
  gemeinde_id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(20) NOT NULL,
  einwohnerzahl INT,
  plz CHAR(4),
  kantons_kennzeichen CHAR(2),
  anlage_id INT
);
  • de/modul/m290_guko/learningunits/lu06/loesungen/case_gemeinden.txt
  • Zuletzt geändert: 2026/09/20 22:08
  • von gkoch