Các khoá bao gồm và khóa nước ngoài là hai nhiều loại ràng buộc có thể được thực hiện để thực thi trọn vẹn dữ liệu trong số bảng SQL vps và đấy là những đối tượng cơ sở tài liệu quan trọng.

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

Trong SQL Server, tất cả hai khóa - khóa thiết yếu và khoá ngoại ngoài ra giống nhau, nhưng thực tế cả hai đều khác nhau về những tính năng và hành vi. Những khoá chủ yếu và khóa ngoại là hai các loại ràng buộc rất có thể được áp dụng để thực thi toàn vẹn dữ liệu trong các bảng SQL hệ thống và đó là những đối tượng cơ sở dữ liệu quan trọng.

Trong bài bác này, tôi muốn chia sẻ sự biệt lập chính thân khóa chính và khoá ngoại.

1. Khóa chính là gì

Khóa thiết yếu (hay buộc ràng khóa chính) được thực hiện để định danh độc nhất mỗi record vào table của các đại lý dữ liệu.

Ngoài ra, nó còn sử dụng để cấu hình thiết lập quan hệ 1-n (hay buộc ràng tham chiếu) thân hai table trong cửa hàng dữ liệu.

Dữ liệu (value) của field khóa chủ yếu phải tất cả tính duy nhất. Cùng không chứa những giá trị Null.

Mỗi table nên có thể có một khóa chính, khóa chính có thể tạo ra từ nhiều field của table.

2. Khóa nước ngoài là gì

Khóa ngoại của một table được coi như như con trỏ trỏ cho tới khóa thiết yếu của table khác.

Nếu ngôi trường MaSV của table DiemSV được thực hiện để sinh sản ràng buộc tham chiếu cho table HSSV, trải qua khóa đó là MaSV thì MaSV của table DiemSV được gọi là khóa nước ngoài của bảng này. Đây cũng đó là lý vì mà ta nói, khóa ngoại được xem như như con trỏ trởi cho tới khóa chính.

Để nắm rõ hơn về chân thành và ý nghĩa sử dụng của khóa chính, khóa ngoại họ hãy xét ví dụ như sau: đưa sử cơ sở dữ liệu QLDiemSV tất cả hai table: HSSV với DiemSV như sau:

Table HSSV gồm 6 field, trong những số đó MaSV được chọn làm khóa chính của table này.

*

Table DiemSV gồm 6 field, trong các số đó STT là khóa chủ yếu và MaSV được lựa chọn làm khóa nước ngoài của table này.

*

Như vậy, nhị table HSSV và DiemSV quan hệ dữ liệu với nhau thông qua field MaSV của mỗi table (đây là quan hệ nam nữ 1 – n). Xuất xắc nói giải pháp khác, buộc ràng tham chiếu đang được tạo nên giữa hai table (từ table DiemSV mang lại table HSSV).

Với buộc ràng này thì, việc người tiêu dùng vô tình hay vậy ý tiêu diệt các liên kết có khả năng sẽ bị ngăn chặn. Và, người sử dụng cũng không thể nhập vào cột khóa ngoại một giá chỉ trị mà giá trị đó không xuất hiện thêm ở cột khóa thiết yếu mà khóa này trỏ tới (không thể nhập điểm cho 1 sinh viên, vào table DiemSV, nhưng mà mã của mình không xuất hiện thêm ở cột MaSV sinh sống table HSSV).

3. Thiết lập cấu hình khóa chính

Để sinh sản khóa chính ngay lúc tạo table ta hoàn toàn có thể sử dụng câu lệnh SQL Create Table như sau:

(MaSV varchar (8) NOT NULL,Holot varchar(20), Ten varchar(8),NgaySinh Date, MaLop varchar(8) NOT NULL,Lienhe varchar(11) NOT NULL,PRIMARY KEY (MaSV));Câu lệnh này dùng để tạo table HSSV, đồng thời chỉ định field MaSV làm khóa thiết yếu cho nó.

Trong trường đúng theo khóa bao gồm được ra đời từ nhiều field cùng ta bắt buộc đặt tên đến ràng buộc khóa này thì có thể sử dụng câu lệnh Create Table như sau:

(MaSV varchar (8) NOT NULL,Holot varchar(20), Ten varchar(8),NgaySinh DATE, MaLop varchar(8) NOT NULL,Lienhe varchar(11) NOT NULL,CONSTRAINT Ma PRIMARY KEY (MaSV, MaLop));Vậy khóa chủ yếu table này được thành lập và hoạt động từ hai field: MaSV và MaLop cùng tên của ràng buộc này là Ma.

3.1 tạo ra khóa thiết yếu cho table đang tạo

Sử dụng câu lệnh sau:

ALTER TABLE HSSV add PRIMARY KEY (MaSV)

Hoặc:

ALTER TABLE HSSV showroom CONSTRAINT Ma PRIMARY KEY (MaSV, MaLop)

Rõ ràng, vào trường vừa lòng này những field MaSV, MaLop phải đã được khai báo buộc ràng NOT NULL (trng khi chế tạo ra table).

3.2 Xóa khóa chính

Sử dụng câu lệnh sau:

ALTER TABLE HSSV DROP PRIMARY KEY;

Hoặc:

ALTER TABLE HSSV DROP CONSTRAINT Ma

4. Tùy chỉnh khóa ngoại

Để tạo khóa ngoại ngay khi tạo table ta có thể sử dụng câu lệnh SQL Create Table như sau:

(STT INT NOT NULL AUTO_INCREMENT,MaSV varchar(8) NOT NULL,MonHoc varchar(6) NOT NULL,HKI, HKII, ĐTB_Nam INT,PRIMARY KEY (STT),FOREIGN KEY (MaSV) REFERENCES HSSV(MaSV))Câu lệnh này: chế tạo ra table DiemSV gồm 6 field, trong các số đó khóa chính là field STT với field khóa ngoại là MaSV. Table này chế tạo ra ràng buộc tham chiếu đến table HSSV trải qua field MaSV.

Dạng khác:

(STT INT NOT NULL AUTO_INCREMENT,MaSV varchar(8) NOT NULL,MonHoc varchar(6) NOT NULL,HKI, HKII, ĐTB_Nam INT,PRIMARY KEY (STT),CONSTRAINT Ma FOREIGN KEY (MaSV) REFERENCES HSSV(MaSV))Khi nên đặt tên cho ràng buộc khóa ngoại cùng khóa nước ngoài được hình thành từ khá nhiều field thì ta phải thực hiện câu lệnh Create Table theo hình thức này.

4.1 sinh sản khóa ngoại đến table sẽ tạo

Ví dụ:

REFERENCES HSSV(MaSV)Hoặc:

FOREIGN KEY (MaSV) REFERENCES HSSV(MaSV)Câu lệnh này được thực hiện trong trường hợp yêu cầu đặt tên cho ràng buộc khóa ngoại với khóa nước ngoài được hình thành từ không ít field.

4.2 Xóa khóa ngoại

Ví dụ:

ALTER TABLE DiemSV DROP FOREIGN KEY Ma

Câu lệnh MySQL ALTER được sử dụng rất phổ cập trong những trường hợp biến đổi tên của table, thương hiệu của field hoặc thêm/xóa các field trong một table làm sao đó. Vị vậy, chúng ta sẽ trở lại câu lệnh này ở các bài sau.

5. Bảng so sánh

Khóa chínhKhóa ngoại
Khóa đúng mực định nhất một phiên bản ghi vào bảng.Khóa ngoại là một trong những trường trong bảng cùng là khóa thiết yếu trong một bảng khác.
Khóa thiết yếu không đồng ý các quý giá rỗng.Khóa ngoại bao gồm thể gật đầu đồng ý nhiều quý giá rỗng.
Theo mang định, khoá đó là chỉ mục được đội và dữ liệu trong bảng cơ sở dữ liệu được tổ chức theo máy tự của hàng chỉ mục nhóm.Khóa nước ngoài không auto tạo ra một chỉ mục, nhóm hoặc không nhóm. Chúng ta cũng có thể tự tạo một chỉ mục bên trên khoá ngoại.
Chúng ta chỉ rất có thể có một khóa chính trong một bảng.Chúng ta tất cả thể có tương đối nhiều khoá nước ngoài trong một bảng.

6. Tổng kết

Chúng ta chỉ sử dụng các cách bên trên để tạo khóa chính trong MySQL và không chỉ có có ở MySQL nhưng mà ở SQL Server cũng đều có cú pháp tương tự như vì chúng số đông sử dụng ngôn ngữ T-SQL.

Xem thêm: Xem Tử Vi Trọn Đời Tuổi Quý Tỵ Nam Mạng 2013 Nam Mạng, Xem Tử Vi Trọn Đời Tuổi Quý Tỵ 2013 Nam Mạng

Thông thường xuyên khi thao tác với các ứng dụng web thì ta ít khi sử dụng khóa ngoại cũng chính vì sẽ vô cùng chậm, bởi vậy người ta sẽ cố gắng thiết kế CSDL làm thế nào tối ưu để không mãi mãi khóa ngoại.