Khoá là gì khoá chính là gì

-

Các khoá chính và khóa nước ngoài là hai nhiều loại ràng buộc hoàn toàn có thể được thực hiện để thực thi trọn vẹn dữ liệu trong những bảng SQL hệ thống và đó là những đối tượng người dùng cơ sở tài liệu quan trọng.

Bạn đang xem: Khoá là gì khoá chính là gì

Trong SQL Server, có hai khóa - khóa bao gồm và khoá ngoại ngoài ra giống nhau, nhưng thực tế cả hai đều khác nhau về các tính năng cùng hành vi. Các khoá bao gồm và khóa ngoại là hai loại ràng buộc có thể được thực hiện để thực thi toàn diện dữ liệu trong các bảng SQL server và đây là những đối tượng người sử dụng cơ sở dữ liệu quan trọng.

Trong bài bác này, tôi muốn share sự khác hoàn toàn chính giữa khóa chủ yếu và khoá ngoại.

1. Khóa đó là gì

Khóa thiết yếu (hay buộc ràng khóa chính) được thực hiện để định danh tuyệt nhất mỗi record trong table của cơ sở dữ liệu.

Ngoài ra, nó còn cần sử dụng để tùy chỉnh quan hệ 1-n (hay buộc ràng tham chiếu) giữa hai table trong đại lý dữ liệu.

Dữ liệu (value) của field khóa bao gồm phải tất cả tính duy nhất. Và không chứa các giá trị Null.

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

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

Khóa nước ngoài của một table được xem như như con trỏ trỏ cho tới khóa chủ yếu của table khác.

Nếu ngôi trường MaSV của table DiemSV được áp dụng để tạo ra ràng buộc tham chiếu mang lại table HSSV, thông qua khóa đó là MaSV thì MaSV của table DiemSV được call là khóa nước ngoài của bảng này. Đây cũng chính là lý vị mà ta nói, khóa ngoại được xem như như nhỏ trỏ trởi cho tới khóa chính.

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

Table HSSV có 6 field, trong các số đó MaSV được lựa chọn làm khóa chủ yếu của table này.

*

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

*

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

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

3. Tùy chỉnh khóa chính

Để chế tác khóa chính ngay trong khi tạo table ta 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 và hướng dẫn field MaSV có tác dụng khóa chủ yếu cho nó.

Trong trường hòa hợp khóa chính được thành lập từ các field với ta buộc phải đặt tên cho 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 thiết yếu table này được thành lập và hoạt động từ nhị field: MaSV và MaLop cùng tên của ràng buộc này là Ma.

Xem thêm: Nam Mậu Thìn Nữ Nhâm Thân - Trai Mậu Thìn Gái Nhâm Thân

3.1 tạo nên khóa bao gồm cho table đã tạo

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

ALTER TABLE HSSV địa chỉ cửa hàng PRIMARY KEY (MaSV)

Hoặc:

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

Rõ ràng, vào trường vừa lòng này các field MaSV, MaLop nên đã được khai báo ràng buộc 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. Cấu hình thiết lập khóa ngoại

Để chế tạo khóa ngoại ngay khi tạo table ta rất 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: tạo table DiemSV có 6 field, trong các số ấy khóa đó là field STT và field khóa ngoại là MaSV. Table này chế tạo ra ràng buộc tham chiếu cho 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 buộc phải đặt tên cho ràng buộc khóa ngoại cùng khóa ngoại được hình thành từ rất nhiều field thì ta phải sử dụng câu lệnh Create Table theo mô hình này.

4.1 tạo 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 sử dụng trong trường hợp đề xuất đặt tên đến ràng buộc khóa ngoại với khóa nước ngoài được hình thành từ nhiều 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 thông dụng trong những trường hợp thay đổi tên của table, tên của field hoặc thêm/xóa các field trong một table nào đó. Vì chưng vậy, chúng ta sẽ quay 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 chính xác định độc nhất vô nhị một phiên bản ghi vào bảng.Khóa ngoại là một trường trong bảng cùng là khóa bao gồm trong một bảng khác.
Khóa chính không đồng ý các quý hiếm rỗng.Khóa ngoại có thể chấp nhận nhiều quý giá rỗng.
Theo mặc định, khoá đó là chỉ mục được nhóm 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 ngoại không tự động tạo ra một chỉ mục, team hoặc không nhóm. Bạn có thể tự chế tạo một chỉ mục bên trên khoá ngoại.
Chúng ta chỉ có thể có một khóa bao gồm trong một bảng.Chúng ta có thể có rất nhiều khoá 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 ra khóa chính trong MySQL và không chỉ có sinh sống MySQL nhưng ở SQL Server cũng đều có cú pháp tương tự vì chúng những sử dụng ngôn từ T-SQL.

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