Mô hình hóa quan hệ 1:N bằng khóa ngoại

Nhập môn Cơ sở dữ liệu quan hệ bằng SQL

Timo Grossenbacher

Data Journalist

Mô hình cơ sở dữ liệu hiện tại

Nhập môn Cơ sở dữ liệu quan hệ bằng SQL

Mô hình cơ sở dữ liệu tiếp theo

Nhập môn Cơ sở dữ liệu quan hệ bằng SQL

Triển khai quan hệ bằng khóa ngoại

  • Khóa ngoại (FK) trỏ đến khóa chính (PK) của bảng khác
  • Miền giá trị của FK phải bằng miền của PK
  • Mỗi giá trị FK phải tồn tại trong PK của bảng kia (ràng buộc FK hay "toàn vẹn tham chiếu")
  • FK không phải là khóa thực sự
Nhập môn Cơ sở dữ liệu quan hệ bằng SQL

Một truy vấn

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
Nhập môn Cơ sở dữ liệu quan hệ bằng SQL

Khai báo khóa ngoại

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');
Nhập môn Cơ sở dữ liệu quan hệ bằng SQL

Thêm khóa ngoại cho bảng hiện có

ALTER TABLE a 
ADD CONSTRAINT a_fkey FOREIGN KEY (b_id) REFERENCES b (id);
Nhập môn Cơ sở dữ liệu quan hệ bằng SQL

Hãy triển khai!

Nhập môn Cơ sở dữ liệu quan hệ bằng SQL

Preparing Video For Download...