MySQL: Foreign Key (Khoá ngoại)

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Ràng buộc khóa ngoại (Foreign Key - FK) được sử dụng để liên kết các bảng dữ liệu trong một cơ sở dữ liệu.

FK đảm bảo toàn vẹn tham chiếu cho bảng.

FK được đặt trên một cột, nó chỉ đến (hay tham chiếu đến) khóa chính trong một bảng khác.

Giả sử có hai bảng A và B, bảng A có cột a và bảng B có cột b. Muốn thiết lập liên kết giữa hai bảng A và B thông qua hai cột a và b thì:

- Nếu đặt FK trên cột a thì cột b phải là cột PK hoặc ngược lại, nếu đặt FK trên cột b thì cột a phải là cột PK.

- Kiểu dữ liệu của hai cột a và b phải giống nhau.

- Cột đặt FK phải chứa những giá trị giống với những giá trị của cột đặt PK. Ví dụ cột a của bảng A là cột PK và chứa hai giá trị 1 và 2 thì cột b của bảng B cũng chỉ chứa những giá trị 1 và 2 mà không được chứa nhưng giá trị khác.

Tạo ràng buộc FK:

Giả sử ta tạo bảng Student như sau:

CREATE TABLE Student(
    studentid int not null AUTO_INCREMENT,
    studentname varchar(30),
    dateofbirth date,
    constraint pk_student PRIMARY KEY(studentid)
);

Bây giờ ta tạo bảng Marks và tạo ràng buộc FK trên cột studentid của bảng Marks tham chiếu đến cột studentid của bảng Student, ta sẽ có các cách tạo FK như sau:

Cách 1: Ví dụ:

CREATE TABLE Marks(
  studentid int not null,
  subjectid int not null,
  mark float,
  constraint pk_marks primary key(studentid,subjectid),
  FOREIGN KEY(studentid) REFERENCES Student(studentid)
);

Cách 2: Ví dụ:

CREATE TABLE Marks(
  studentid int not null,
  subjectid int not null,
  mark float,
  constraint pk_marks primary key(studentid,subjectid),
  constraint fk_studentid FOREIGN KEY(studentid) REFERENCES Student(studentid)
);

Cách 3: Sử dụng cú pháp như sau:

ALTER TABLE Tên_bảng1 ADD FOREIGN KEY(Tên_cột_đặt_FK) REFERENCES Tên_bảng2(Tên_cột_đặt_PK);

Ví dụ:

CREATE TABLE Marks(
    studentid int not null,
    subjectid int not null,
    mark float,
    constraint pk_marks primary key(studentid,subjectid)
);

ALTER TABLE Marks ADD FOREIGN KEY(studentid) REFERENCES Student(studentid);

Cách 4: Ta sử dụng cú pháp như sau:

ALTER TABLE Tên_bảng1 ADD CONSTRAINT Tên_ràng_buộc FOREIGN KEY(Tên_cột_đặt_FK) REFERENCES Tên_bảng2(Tên_cột_đặt_PK);

Ví dụ:

CREATE TABLE Marks(
    studentid int not null,
    subjectid int not null,
    mark float,
    constraint pk_marks1 primary key(studentid,subjectid)
);

ALTER TABLE Marks ADD CONSTRAINT fk_studentid FOREIGN KEY(studentid) REFERENCES Student(studentid);
» Tiếp: INSERT
« Trước: Primary Key (Khóa chính)
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!