Loading...

Một vài lưu ý về khóa của table

Khóa chính:

Khóa chính (hay ràng buộc khóa chính) được sử dụng để định danh duy nhất mỗi record trong table của cơ sở dữ liệu.

Ngoài ra, nó còn dùng để thiết lập quan hệ 1-n (hay ràng buộc tham chiếu) giữa hai table trong cơ sở dữ liệu.

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

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

Khóa ngoại:

Khóa ngoại của một table được xem như con trỏ trỏ tới khóa chính của table khác.

Nếu trường MaSV của table DiemSV được sử dụng để tạo ràng buộc tham chiếu đến table HSSV, thông qua khóa chính là MaSV thì MaSV của table DiemSV được gọi là khóa ngoại của bảng này. Đây cũng chính là lý do mà ta nói, khóa ngoại được xem như con trỏ trởi 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 chúng ta hãy xét ví dụ sau: Giả sử cơ sở dữ liệu QLDiemSV có hai table: HSSV và DiemSV như sau:

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

Table DiemSV gồm 6 field, trong đó STT là khóa chính và MaSV được chọn làm khóa ngoại của table này.

Như vậy, hai table HSSV và DiemSV quan hệ dữ liệu với nhau thông qua field MaSV của mỗi table (đây là qun hệ 1 – n). Hay nói cách khác, ràng buộc tham chiếu đã được tạo giữa hai table (từ table DiemSV đến table HSSV).

Với ràng buộc này thì, việc người sử dụng vô tình hay cố ý phá hủy các liên kết 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á trị mà giá trị đó không xuất hiện ở cột khóa chính mà khóa này trỏ tới (không thể nhập điểm cho một sinh viên, vào table DiemSV, mà mã của họ không xuất hiện ở cột MaSV ở table HSSV).  

1. Thiết lập khóa chính

Để tạo 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:

CREATE TABLE HSSV

(

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 chính cho nó.

Trong trường hợp khóa chính được thành lập từ nhiều field và ta cần đặ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:

CREATE TABLE HSSV

(

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ính table này được thành lập từ hai field: MaSV và MaLop và tên của ràng buộc này là Ma.

Tạo khóa chính cho table đã tạo:

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

ALTER TABLE HSSV ADD PRIMARY KEY (MaSV)

Hoặc:

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

Rõ ràng, trong trường hợp này các field MaSV, MaLop phải đã được khai báo ràng buộc NOT NULL (trng khi tạo table).

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

----------------------------------

Các câu lệnh trên có thể sử dụng tại dấu nhắc mysql> hoặc trong các script PHP.

2. Thiết lập khóa ngoại

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

CREATE TABLE DiemSV

(
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  gồm 6 field, trong đó khóa chính là field STT và field khóa ngoại là MaSV. Table này tạo ràng buộc tham chiếu đến table HSSV thông qua field MaSV.

Dạng khác:

CREATE TABLE DiemSV

(
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 cần đặt tên cho ràng buộc khóa ngoại và khóa ngoại được hình thành từ nhiều field thì ta phải sử dụng câu lệnh Create Table theo dạng này.

Tạo khóa chính cho table đã tạo:

Ví dụ:

ALTER TABLE DdiemSV ADD FOREIGN KEY (MaSV)

REFERENCES HSSV(MaSV)

Hoặc:

ALTER TABLE DiemSV ADD CONSTRAINT Ma

FOREIGN KEY (MaSV) REFERENCES HSSV(MaSV)

Câu lệnh này được sử dụng trong trường hợp cần đặt tên cho ràng buộc khóa ngoại và khóa ngoại được hình thành từ nhiều field.

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ổ biến trong các 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ì vậy, chúng ta sẽ trở lại câu lệnh này ở các bài sau.

Tự học

Ý kiến của bạn

Mã bảo vệ
Làm mới

Hãy đăng quảng cáo trên TuHocAnNinhMang.com

Bài xem nhiều nhất

Tự học lập trình C - Bài 1: Một số khái niệm cơ bản

Khái niệm tên rất quan trọng trong quá trình lập trình, ...

MySQL – Bài 8: Khóa chính (primary key) và khóa ngoại (foreign key) của table

Với ràng buộc này thì, việc người sử dụng vô tình hay cố ...

Tự học lập trình C - Bài 10: Mảng một chiều

Mảng 1 chiều là tập hợp các phần tử có cùng kiểu dữ ...

Tự học lập trình JAVA – Bài 1: Bước đầu với Java

Một chương trình java có thể được định nghĩa như là một ...

Tự học lập trình C - Bài 2: Cấu trúc chương trình C

Một chương trình bao gồm một hoặc nhiều hàm, mỗi hàm ...

Tự học lập trình Assembly - Bài 1: Bước đầu với lập trình Assembly trên vi xử lý Intel 8086/8088

Như đã biết, lệnh ngôn ngữ máy là một dãy các con số 0, ...

Hướng dẫn in ấn trong Word 2007/2010 – Step by Step

[Tự học] - Tiêu đề đầu trang (Header)/tiêu đề cuối ...

Hãy đăng quảng cáo trên TuHocAnNinhMang.com

Về đầu trang Hỏi - Đáp