MySQL: Foreign Key (Khoá ngoại)


Đăng ký nhận thông báo về những video mới nhất

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);

Nếu bạn có điều thắc mắc, bạn hãy comment cho V1Study để được giải đáp.
Bài viết này được chia sẻ bởi LongDT. Nếu bạn muốn chia sẻ bài viết, bạn hãy Đăng ký làm thành viên!
« Prev
Next »
Copied !!!