Bài tập

Khóa ngoại trong SQL Server

Huy Erick

Giới thiệu Trong bài trước, chúng ta đã tìm hiểu về khóa chính và cách tạo, xóa, đặt tên cho khóa chính trong một bảng. Một thành phần quan trọng khác trong SQL Server đó...

Giới thiệu

Trong bài trước, chúng ta đã tìm hiểu về khóa chính và cách tạo, xóa, đặt tên cho khóa chính trong một bảng. Một thành phần quan trọng khác trong SQL Server đó là khóa ngoại. Nhưng tại sao khóa ngoại cần thiết và được sử dụng để làm gì? Hãy cùng tìm hiểu về nó chi tiết.

Nội dung chính

Trước khi đi vào nội dung chính, để hiểu rõ hơn về bài viết này, bạn nên xem qua các kiến thức cơ bản về SQL như: khởi tạo database và bảng, kiểu dữ liệu trong SQL, thao tác với bảng, và tạo khóa chính.

Trong bài viết này, chúng ta sẽ tìm hiểu về các vấn đề sau:

  • Khóa ngoại là gì?
  • Thao tác với khóa ngoại.
  • Sơ đồ diagram.

Khóa ngoại là gì?

Trong một database, các bảng không tồn tại độc lập mà có mối quan hệ với nhau về mặt dữ liệu. Mối quan hệ này được thể hiện thông qua ràng buộc giá trị dữ liệu. Điều này đồng nghĩa với việc giá trị dữ liệu trong một bảng phải có xuất hiện trước trong một bảng khác. Mối quan hệ này giúp đảm bảo tính đúng đắn và hợp lệ của dữ liệu trong database.

Điều kiện để tạo khóa ngoại

Để tạo khóa ngoại, các điều kiện sau phải được đáp ứng:

  • Tham chiếu đến khóa chính của một bảng khác và đảm bảo ràng buộc UNIQUE và NOT NULL tương tự như khóa chính.
  • Khóa ngoại và khóa chính phải có cùng kiểu dữ liệu và cùng số lượng trường.

Tác dụng của khóa ngoại

Khóa ngoại giúp đảm bảo toàn vẹn dữ liệu và tránh trường hợp tham chiếu đến dữ liệu không tồn tại.

Thao tác với khóa ngoại

Trong ví dụ này, chúng ta sẽ sử dụng Database "Primary_Foreign" để thực hiện các thao tác.

CREATE DATABASE Primary_Foreign USE Primary_Foreign  CREATE TABLE BoMon (   MaBM CHAR(10) PRIMARY KEY,   Name NVARCHAR(100) DEFAULT N'Tên bộ môn' )  CREATE TABLE Lop (   MaLop CHAR(10) NOT NULL,   Name NVARCHAR(100) DEFAULT N'Tên lớp',   PRIMARY KEY(MaLop) )

Tạo khóa ngoại trong lúc tạo bảng

Cú pháp:

CREATE TABLE  (   ...   FOREIGN KEY ()   REFERENCES 
() )

Ví dụ:

CREATE TABLE GiaoVien (   MaGV CHAR(10) NOT NULL,   Name NVARCHAR(100) DEFAULT N'Tên giáo viên',   DiaChi NVARCHAR(100) DEFAULT N'Địa chỉ giáo viên',   NgaySinh DATE,   Sex BIT,   MaBM CHAR(10),   FOREIGN KEY(MaBM) REFERENCES dbo.BOMON(MaBM) )

Tạo khóa ngoại sau khi tạo bảng

Cú pháp:

ALTER TABLE  ADD FOREIGN KEY () REFERENCES 
()

Ví dụ:

ALTER TABLE dbo.HocSinh ADD CONSTRAINT FK_HS FOREIGN KEY (MaLop) REFERENCES dbo.Lop(MaLop)

Đặt tên cho khóa ngoại

Tương tự như khóa chính, khóa ngoại cũng có thể đặt tên thông qua từ khóa CONSTRAINT. Tên khóa ngoại có thể được đặt theo nguyên tắc sau:

  • Tên khóa ngoại: FK

    Cú pháp:

    ALTER TABLE 
    ADD CONSTRAINT FOREIGN KEY () REFERENCES
    ()

    Ví dụ:

    ALTER TABLE dbo.HocSinh ADD CONSTRAINT FK_HS FOREIGN KEY (MaLop) REFERENCES dbo.Lop(MaLop)

    Hủy khóa ngoại có đặt tên

    Cú pháp:

    ALTER TABLE  DROP CONSTRAINT 

    Ví dụ:

    ALTER TABLE dbo.HocSinh DROP CONSTRAINT FK_KS

    Sơ đồ diagram

    Để hình dung mối quan hệ giữa khóa chính và khóa ngoại, ta có thể sử dụng sơ đồ diagram. Cách tạo sơ đồ diagram như sau:

    1. Chọn database cần xem.
    2. Nhấn chuột phải vào "Database Diagrams".
    3. Chọn "New Database Diagram".
    4. Cửa sổ "Add Table" hiển thị.
    5. Chọn các bảng cần hiển thị trên sơ đồ và nhấn "Add".
    6. Sau khi thêm các bảng, nhấn "Close".

    Sơ đồ diagram sẽ hiển thị các liên kết giữa các bảng và giúp ta dễ dàng nắm bắt các thông tin cơ bản như tên bảng, tên cột, khóa chính, khóa ngoại, v.v.

    Kết

    Trên đây là các kiến thức về khóa ngoại trong SQL Server mà chúng ta đã tìm hiểu. Trong bài viết tiếp theo, chúng ta sẽ bắt đầu tìm hiểu về truy vấn cơ bản trong SQL. Nếu bạn có bất kỳ khó khăn hay thắc mắc nào, hãy để lại bình luận để nhận được sự hỗ trợ từ cộng đồng.

1