1:N-Beziehungen mit Fremdschlüsseln abbilden

Einführung in relationale Datenbanken in SQL

Timo Grossenbacher

Data Journalist

Aktuelles Datenbankmodell

Einführung in relationale Datenbanken in SQL

Nächstes Datenbankmodell

Einführung in relationale Datenbanken in SQL

Implementieren von Beziehungen mit Fremdschlüsseln

  • Ein Fremdschlüssel (FK) verweist auf den Primärschlüssel (PK) einer anderen Tabelle.
  • Die Domäne des FK muss mit der Domäne des PK übereinstimmen.
  • Jeder Wert des FK muss im Primärschlüssel der anderen Tabelle vorkommen (FK-Constraint beziehungsweie „referenzielle Integrität“).
  • FKs sind keine echten Schlüssel{{4}}.
Einführung in relationale Datenbanken in SQL

Eine Abfrage

SELECT * FROM professors LIMIT 8;
 id |    firstname    |  lastname   | university_s..
  --+-----------------+-------------+-------------
  1 | Karl            | Aberer      | EPF
  2 | Reza Shokrollah | Abhari      | ETH
  3 | Georges         | Abou Jaoudé | EPF
  4 | Hugues          | Abriel      | UBE
  5 | Daniel          | Aebersold   | UBE
  6 | Marcelo         | Aebi        | ULA
  7 | Christoph       | Aebi        | UBE
  8 | Patrick         | Aebischer   | EPF
SELECT * FROM universities;
 id  |   university   | university_city
<hr />--+----------------+-----------------
 EPF | ETH Lausanne   | Lausanne
 ETH | ETH Zürich     | Zurich
 UBA | Uni Basel      | Basel
 UBE | Uni Bern       | Bern
 UFR | Uni Freiburg   | Fribourg
 UGE | Uni Genf       | Geneva
 ULA | Uni Lausanne   | Lausanne
 UNE | Uni Neuenburg  | Neuchâtel
 USG | Uni St. Gallen | Saint Gallen
 USI | USI Lugano     | Lugano
 UZH | Uni Zürich     | Zurich
Einführung in relationale Datenbanken in SQL

Fremdschlüssel festlegen

CREATE TABLE manufacturers (
 name varchar(255) PRIMARY KEY);

INSERT INTO manufacturers 
VALUES ('Ford'), ('VW'), ('GM');

CREATE TABLE cars ( model varchar(255) PRIMARY KEY, manufacturer_name varchar(255) REFERENCES manufacturers (name)); INSERT INTO cars VALUES ('Ranger', 'Ford'), ('Beetle', 'VW');
-- Throws an error!
INSERT INTO cars 
VALUES ('Tundra', 'Toyota');
Einführung in relationale Datenbanken in SQL

Fremdschlüssel für vorhandene Tabellen festlegen

ALTER TABLE a 
ADD CONSTRAINT a_fkey FOREIGN KEY (b_id) REFERENCES b (id);
Einführung in relationale Datenbanken in SQL

Lass uns das umsetzen!

Einführung in relationale Datenbanken in SQL

Preparing Video For Download...