Foreign Key Là Gì

     

Chúng ta đã được học những lệnhtạo bảng (Create Table), khái niệm về khóa thiết yếu (Primary Key) và một vài thành phần khác như UNIQUE, AUTO_INCREMENT, tuy nhiên tất cả các thành phần này hầu hết xử lý bên trên một bảng duy nhất. Thắc mắc đặt ra là nếu có khá nhiều bảng thì liệu có mối tương tác giữa bọn chúng hay không? Câu vấn đáp là có, cùng đó chính là khóa nước ngoài foreign key.

Bạn đang xem: Foreign key là gì

*


*

1. Khóa nước ngoài (Foreign Key) là gì?

Trong bài này tôi sẽ không trình bàikhái niệm khóa ngoại một cách chi tiết nữa mà đi vào định nghĩa thiết yếu của nó. Foreign key là mối quan hệ giữahai bảng và quan hệ này ta hay call là cha - con,nghĩa là trường hợp bảng A có một trực thuộc tính liên kết tới bảng B thì lúc này bảng B đóng vai trò là cha và bảng A nhập vai trò là con.

Khái niệm Foreign key là gìkhông chỉ có ở MySQL nhưng nó là một trong những thành phần củatất cả cáchệ quản lí trị database như SQL Server, Oracle, Access, ... Nếu như khách hàng đã từng học qua các quy mô CSLD thì không còn lạ gì khóa ngoại nữa.

Thông thường họ có hai nhiều loại khóa ngoại đó là khóa ngoại thân hai bảng cùng khóa ngoại trỏ đến bao gồm nó (đệ quy).

Bài viết này được đăng tại

Khóa ngoại giữa hai bảng


Xét sơ đồCSDL sau đây:

Các các bạn thấy vào bảng customers orders có một mối quan hệ với tên thường gọi là "mỗi order làcủa một customer nào đó". Trên đây ta hotline là quan hệ (1:n), có nghĩa là một customercó thê có nhiều orders và mỗi order chỉ thuộc về một customer duy nhất.Xem kỹ hơn ta thấy trong bảng orders có field customerNumber cùng nó đã trỏ cho khóa chính (Primary Key) của bảng customers.

Như vậy ta gồm kế luận như sau:

Khóa ngoại ở bảng orderssẽ tham chiếu mang lại khóa chủ yếu của bảng customers. Bây giờ bảng customersgọi là bảng phụ vương và bảng ordergọi là bảng con. Đây chính là điều BẮT BUỘC của khóa ngoại.

Khóa ngoại trỏ đến bao gồm bảng đó

Xét sơ đồ database sau đây:

Trong sơ trang bị này nó bao gồm một khóa nước ngoài là reportsTo cùng trỏ đến chính khóa chủ yếu của nó employeeNumber. Mối quan hệ này ta nói như sau "mỗi nhân viên có thể là một nhân viên thông thường hoặc là người làm chủ của một nhân viên khác. Mỗi ngày các nhân bị quản lýkhác sẽ report (reportsTo) tới nhân viên quản lý".Sơ thiết bị này ta call là đệ quy, tức thị khóa ngoại vẫn tham chiếu tới chính table nó luôn. Trong thực tiễn cũng hay gặp trường hợp này nên chúng ta cầnlưu ý nhé.

2. Chế tạo ra khóa ngoại (Foreign Key) vào MySQL

Ta sẽ thực hiện cú pháp T-SQL để chế tạo khóa ngoại, bọn họ có tương đối nhiều các tạo nên và tùy vào nhu cầu của ban mà áp dụng cho phù hợp. Tất cả các cách đều sở hữu chung một kết cấu đó là khai báo field của bảng A và sẽ tham chiếu mang đến field như thế nào của bảng B vày từ khóa REFERENCES.

Tạo vào lệnh chế tạo ra bảng create table

Chúng ta sẽ tạo trực tiếp vào lệnh chế tác bảng và cú pháp của nó tương tự như như lệnh sản xuất khóa chính, tức thị sẽ đặt tại cuối phần khai báo field. Nếu thực hiện cách này thì khóa nước ngoài sẽ không có tên.

Xem thêm: Nghĩa Của Từ Jam Là Gì - Nghĩa Của Từ Jam Trong Tiếng Việt


ví dụ như
CREATE TABLE Groups (groupid INT(11) NOT NULL PRIMARY KEY,title INT(11) NOT NULL,LEVEL TINYINT(1) mặc định 1 NOT NULL);CREATE TABLE Users(userid INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL ,email VARCHAR (50) NOT NULL ,groupid INT(11),FOREIGN KEY (groupid) REFERENCES Groups(groupid));

Các chúng ta thấy tôi đã thực hiện từ khóaFOREIGN KEY (groupid) REFERENCES Groups(groupid) để sản xuất khóa ngoại, trong đó:

FOREIGN KEY (groupid): là field được chọn làm khóa ngoại sinh sống bảng con, có nghĩa là bảng Users.REFERENCES Groups(groupid): là khóa chính của bảng cha, tức là bảng Groups.

Sau lúc tạo kết thúc bạn vào PHPMyAdminvà lựa chọn mục database, lựa chọn diagram sinh sống thanh lao lý thì lúc này bạn sẽ thấy một sơ thiết bị như sau:

Như vậy là chúng ta đã tạo thành công rồi đấy.

Ví dụ bao gồm đặt tên:

Tương trường đoản cú như các phần trước, để đặt tên đến khóa nước ngoài thì ta phải sử dụng từ khóaCONSTRAINT.


Ví dụ tất cả đặt tên
CREATE TABLE Groups (groupid INT(11) NOT NULL PRIMARY KEY,title INT(11) NOT NULL,LEVEL TINYINT(1) default 1 NOT NULL);CREATE TABLE Users(userid INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL ,email VARCHAR (50) NOT NULL ,groupid INT(11),CONSTRAINT fk_group FOREIGN KEY (groupid) REFERENCES Groups(groupid));

Tạo bằng lệnhALTER TABLE

Với phương pháp này ta phải lập hai bảng trước, tiếp nối sẽ dùng lệnh ALTER TABLE để thêm FOREIGN KEY.


CREATE TABLE Groups (groupid INT(11) NOT NULL PRIMARY KEY,title INT(11) NOT NULL,LEVEL TINYINT(1) mặc định 1 NOT NULL);CREATE TABLE Users(userid INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL ,email VARCHAR (50) NOT NULL ,groupid INT(11));ALTER TABLE Users địa chỉ cửa hàng FOREIGN KEY(groupid) REFERENCES Groups(groupid);

Hoặc:


CREATE TABLE Groups (groupid INT(11) NOT NULL PRIMARY KEY,title INT(11) NOT NULL,LEVEL TINYINT(1) mặc định 1 NOT NULL);CREATE TABLE Users(userid INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL,email VARCHAR (50) NOT NULL,groupid INT(11));ALTER TABLE Users showroom CONSTRAINT fk_group FOREIGN KEY(groupid) REFERENCES Groups(groupid);

Tạo khóa nước ngoài trường vừa lòng tham chiếu chủ yếu nó

Trường hòa hợp này ta cũng thực hiện cú pháp tương tự, thay vì tham chiếu tới bảng nào kia thì đã tham chiếu đến chủ yếu nó.


lấy ví dụ như
CREATE TABLE Employee(id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,fullname VARCHAR(50) NOT NULL,email VARCHAR (50) NOT NULL,leader_id INT (11) NOT NULL,CONSTRAINT pk_self FOREIGN KEY (leader_id) REFERENCES Employee(id) );

3. Xóa (Drop)Foreign Key

Để xóa được Foreign Key thì bạn phải biết tên của nó là gì, mà lại tên chỉ trường tồn trong trường vừa lòng ta có áp dụng từ khóaCONSTRAINT lúc chế tạo khóa,vì vậy khuyến khích bạn sử dụngCONSTRAINT để tạo khóa ngoại.

Sau đó là cú pháp xóa Foreign Key:


ALTER TABLE Users DROP FOREIGN KEY fk_group;

Trong kia fk_group là tên gọi của khóa ngoại.

Lưu ý quan liêu trọng:

Bạn chỉ tiến hành được làm việc xóa lúc không tồn trên một bảng con nào tham chiếu đến nó.

Xem thêm: Tạo Thư Mục Trong Ổ Đĩa D - Cách Tạo Thư Mục Trong Máy Tính

4. Lời kết

Trong bài bác này nhà yếu tìm hiểu định nghĩa của khóa ngoại (Foreign key) và mày mò một số cách tạo khóa nước ngoài thông dụng, bài này xong xuôi tại đây, bài tiếp sau mình sẽ nói về lệnh alter table.