Trong hệ quản trị cơ sở dữ liệu SQL Server, khóa chính và khóa ngoại là hai loại ràng buộc quan trọng để đảm bảo tính toàn vẹn dữ liệu trong các bảng. Mặc dù chúng có vẻ giống nhau, nhưng thực tế khác biệt về tính năng và hành vi. Trong bài viết này, chúng ta sẽ tìm hiểu sự khác biệt chính giữa khóa chính và khóa ngoại.
Có thể bạn quan tâm
Contents
1. Khóa chính là gì?
- Khóa chính là một ràng buộc được sử dụng để định danh duy nhất mỗi bản ghi trong bảng cơ sở dữ liệu.
- Ngoài ra, khóa chính còn thiết lập quan hệ 1-n (ràng buộc tham chiếu) giữa hai bảng.
- Dữ liệu của trường khóa chính phải là duy nhất và không được chứa giá trị Null.
- Mỗi bảng chỉ nên có một khóa chính, nhưng khóa chính có thể được tạo từ nhiều trường của bảng.
2. Khóa ngoại là gì?
- Khóa ngoại của một bảng được coi như một con trỏ trỏ tới khóa chính của bảng khác.
- Ví dụ, nếu trường “MaSV” của bảng “DiemSV” được sử dụng để tạo ràng buộc tham chiếu đến bảng “HSSV” thông qua khóa chính là “MaSV”, thì trường “MaSV” của bảng “DiemSV” được gọi là khóa ngoại. Điều này chính là lý do mà ta nói khóa ngoại được coi như một con trỏ trỏ tới khóa chính.
- Khóa ngoại ngăn chặn việc xóa hoặc thay đổi dữ liệu của khóa chính mà nó trỏ tới. Điều này giúp đảm bảo tính toàn vẹn của dữ liệu.
3. Thiết lập khóa chính
- Để tạo khóa chính khi tạo bảng, ta có thể sử dụng câu lệnh
CREATE TABLE
như sau: (chúng ta chỉ xem ví dụ về tạo khóa chính từ một trường)CREATE TABLE TenBang ( Truong1 Type1, Truong2 Type2, ... CONSTRAINT TenRangBuoc PRIMARY KEY (Truong1) );
- Trong trường hợp khóa chính được tạo từ nhiều trường và muốn đặt tên cho ràng buộc, chúng ta sử dụng câu lệnh
CREATE TABLE
như sau:CREATE TABLE TenBang ( Truong1 Type1, Truong2 Type2, ... CONSTRAINT TenRangBuoc PRIMARY KEY (Truong1, Truong2) );
- Để tạo khóa chính cho bảng sau khi đã tạo, ta sử dụng câu lệnh
ALTER TABLE
như sau:ALTER TABLE TenBang ADD PRIMARY KEY (Truong1);
hoặc
ALTER TABLE TenBang ADD CONSTRAINT TenRangBuoc PRIMARY KEY (Truong1, Truong2);
- Để xóa khóa chính, chúng ta sử dụng câu lệnh
ALTER TABLE
như sau:ALTER TABLE TenBang DROP PRIMARY KEY;
4. Thiết lập khóa ngoại
- Để tạo khóa ngoại khi tạo bảng, ta sử dụng câu lệnh
CREATE TABLE
như sau: (chỉ xem ví dụ về tạo khóa ngoại từ một trường)CREATE TABLE TenBang ( Truong1 Type1, Truong2 Type2, ... FOREIGN KEY (Truong1) REFERENCES TenBangKhac (TruongKhac) );
- Trong trường hợp muốn đặt tên cho ràng buộc khóa ngoại và tạo khóa ngoại từ nhiều trường, chúng ta sử dụng câu lệnh
CREATE TABLE
như sau:CREATE TABLE TenBang ( Truong1 Type1, Truong2 Type2, ... CONSTRAINT TenRangBuoc FOREIGN KEY (Truong1, Truong2) REFERENCES TenBangKhac (TruongKhac1, TruongKhac2) );
- Để tạo khóa ngoại cho bảng sau khi đã tạo, ta sử dụng câu lệnh
ALTER TABLE
như sau:ALTER TABLE TenBang ADD FOREIGN KEY (Truong1) REFERENCES TenBangKhac (TruongKhac);
hoặc
ALTER TABLE TenBang ADD CONSTRAINT TenRangBuoc FOREIGN KEY (Truong1, Truong2) REFERENCES TenBangKhac (TruongKhac1, TruongKhac2);
- Để xóa khóa ngoại, chúng ta sử dụng câu lệnh
ALTER TABLE
như sau:ALTER TABLE TenBang DROP FOREIGN KEY TenRangBuoc;
5. Bảng so sánh
Khóa chính | Khóa ngoại |
---|---|
Xác định duy nhất một bản ghi trong bảng | Là trường trong bảng và là khóa chính trong một bảng khác |
Khóa chính không chấp nhận các giá trị rỗng | Khóa ngoại có thể chấp nhận nhiều giá trị rỗng |
Khóa chính tự động tạo ra một chỉ mục, nhóm và dữ liệu trong bảng được tổ chức theo thứ tự của chỉ mục nhóm | Khóa ngoại không tự động tạo ra một chỉ mục, nhóm hoặc không nhóm. Có thể tự tạo chỉ mục trên khóa ngoại |
Chỉ có một khóa chính trong một bảng | Có thể có nhiều khóa ngoại trong một bảng |
READ MORE:
6. Tổng kết
- Trên đây là cách tạo khóa chính và khóa ngoại trong SQL Server. Tuy nhiên, khi làm việc với các ứng dụng web, chúng ta ít sử dụng khóa ngoại vì tốn nhiều thời gian. Thay vào đó, chúng ta nên thiết kế cơ sở dữ liệu sao cho tối ưu và tránh sử dụng khóa ngoại nếu không cần thiết.
Nguồn: https://ispacedanang.edu.vn
Danh mục: Học tập