Yabancı anahtarlarla 1:N ilişkileri modelleme

SQL ile İlişkisel Veritabanlarına Giriş

Timo Grossenbacher

Data Journalist

Geçerli veritabanı modeli

SQL ile İlişkisel Veritabanlarına Giriş

Sonraki veritabanı modeli

SQL ile İlişkisel Veritabanlarına Giriş

İlişkileri yabancı anahtarlarla uygulama

  • Yabancı anahtar (FK), başka bir tablonun birincil anahtarına (PK) işaret eder
  • FK alanı, PK alanıyla aynı alanda (domain) olmalıdır
  • FK’deki her değer, diğer tablonun PK’sinde mevcut olmalıdır (FK kısıtı veya “başvuru bütünlüğü”)
  • FK’ler gerçek bir “anahtar” değildir
SQL ile İlişkisel Veritabanlarına Giriş

Bir sorgu

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
SQL ile İlişkisel Veritabanlarına Giriş

Yabancı anahtarları belirtme

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');
-- Hata verir!
INSERT INTO cars 
VALUES ('Tundra', 'Toyota');
SQL ile İlişkisel Veritabanlarına Giriş

Mevcut tablolara yabancı anahtar ekleme

ALTER TABLE a 
ADD CONSTRAINT a_fkey FOREIGN KEY (b_id) REFERENCES b (id);
SQL ile İlişkisel Veritabanlarına Giriş

Bunu uygulayalım!

SQL ile İlişkisel Veritabanlarına Giriş

Preparing Video For Download...