Modelarea relațiilor 1:N cu chei externe

Introducere în baze de date relaționale în SQL

Timo Grossenbacher

Data Journalist

Modelul actual al bazei de date

Introducere în baze de date relaționale în SQL

Următorul model al bazei de date

Introducere în baze de date relaționale în SQL

Implementarea relațiilor cu chei externe

  • O cheie externă (FK) indică spre cheia primară (PK) a altui tabel
  • Domeniul FK trebuie să fie egal cu domeniul PK
  • Fiecare valoare a FK trebuie să existe în PK-ul celuilalt tabel (constrângere FK sau „integritate referențială")
  • FK-urile nu sunt chei propriu-zise
Introducere în baze de date relaționale în SQL

O interogare

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
Introducere în baze de date relaționale în SQL

Definirea cheilor externe

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');
Introducere în baze de date relaționale în SQL

Adăugarea cheilor externe la tabele existente

ALTER TABLE a 
ADD CONSTRAINT a_fkey FOREIGN KEY (b_id) REFERENCES b (id);
Introducere în baze de date relaționale în SQL

Să implementăm aceasta!

Introducere în baze de date relaționale în SQL

Preparing Video For Download...