Khóa ngoại trong SQL Server | How Kteam

Dẫn nhập

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 Table. Ngoài ra, Kteam cũng đã đề cập đến một thành phần khác có khả năng tham chiếu đến Table thông qua Khóa chính đó là
KHÓA NGOẠI

Tại sao có khóa chính lại còn cần khóa ngoại ? Khóa ngoại sử dụng để làm gì ? Chúng ta sẽ cùng nhau tìm hiểu và khám phá về nó nhé !

Nội dung chính

Để theo dõi tốt nhất bài này, bạn nên xem qua bài:

Trong bài này, tất cả chúng ta sẽ cùng nhau khám phá 1 số ít yếu tố sau :

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

Khóa ngoại là gì?

Các table trong một database không sống sót độc lập mà còn có mối quan hệ mật thiết với nhau về mặt tài liệu .
Mối quan hệ này được bộc lộ trải qua ràng buộc giá trị tài liệu Open ở bảng này phải có Open trước trong một bảng khác .
Mối quan hệ giữa những table trong database nhằm mục đích bảo vệ được tính đúng đắn và hợp lệ của tài liệu trong database .

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

  • Tham chiếu đến khóa chính của table khác, đảm bảo các ràng buộc UNIQUE, NOT NULL tương tự khóa chính. (Các ràng buộc UNIQUE, NOT NULL đã được giới thiệu trong bài

    KHÓA CHÍNH TRONG SQL)

  • Khóa ngoại phải có cùng kiểu dữ liệu, cùng số lượng trường có sắp xếp tương ứng khóa chính

Tác dụng

Khóa ngoại giúp bảo vệ toàn vẹn tài liệu, không có trường hợp tham chiếu đến tài liệu không sống sót .

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

Bạn sử dụng Database Primary_Foreign sau để dễ dàng thao tác trong quá trình theo dõi bài viết nhé!

CREATE DATABASE Primary_Foreign
GO

USE Primary_Foreign
GO

CREATE TABLE BoMon
(
	MaBM CHAR(10) PRIMARY KEY,
	Name NVARCHAR(100) DEFAULT N'Tên bộ môn'
)
GO

CREATE TABLE Lop
(
	MaLop CHAR(10) NOT NULL,
	Name NVARCHAR(100) DEFAULT N'Tên lớp'
	
	PRIMARY KEY(MaLop)
)
GO

Quy ước

  • TableKey

    : Table chứa khóa chính được tham chiếu đến.

  • Table Foreign

    : Table chứa khóa ngoại

  • Column K,K1,K2…

    : Column định danh khóa chính thuộc table Key được tham chiếu đến.

  • Column F,F1,F2…

    : Column của khóa ngoại thuộc table Foreign.

Số lượng columnFn
tương ứng số lượng columnKn nhằm đảm bảo khóa ngoại có số trường tương ứng khóa chính tham chiếu đến. (n là số)

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

Cú pháp:

CREATE TABLE

Foreign

>
(

FOREIGN KEY (F

, ColumnF1, ColumnF2,…>)

REFERENCES

Key

> (K, ColumnK1, ColumnK2,…>)
)

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),
           

            -- Tạo khóa ngoại ngay khi tạo bảng
            FOREIGN KEY(MaBM) REFERENCES dbo.BOMON(MaBM)
)
GO

ALTER TABLE dbo.GIAOVIEN ADD PRIMARY KEY(MaGV)

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

Cú pháp:

ALTER TABLE

Foreign

>

ADD FOREIGN KEY(F

, ColumnF1, ColumnF2,…>) 

REFERENCES

Key

> (K, ColumnK1, ColumnK2,…>)

Ví dụ:

-- Tạo khóa ngoại sau khi tạo bảng
ALTER TABLE dbo.HocSinh FOREIGN KEY(MaLop) REFERENCES dbo.Lop(MaLop)

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

Tương tự khóa chính, khóa ngoại cũng đặt tên trải qua từ khóa CONSTRAINT. Một Table hoàn toàn có thể có một hoặc nhiều khóa chính nên nguyên tắc đặt tên sẽ có chút độc lạ

Tên khóa ngoại:          FK_

Foregin

>_

Key

>
Tùy theo đặc tả và độ phức tạp của từng Database mà ta hoàn toàn có thể biến hóa cách đặt tên theo mong ước

Cú pháp:

ALTER TABLE

Foreign

>

ADD CONSTRAINT

FOREIGN KEY(F

, ColumnF1, ColumnF2,…>) 

REFERENCES

Key

> (K, ColumnK1, ColumnK2,…>)

Ví dụ:

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

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

Foreign

> DROP CONSTRAINT

Ví dụ:

ALTER TABLE dbo.HocSinh DROP CONSTRAINT FK_KS

Sơ đồ diagram

Với việc tạo khóa ngoại bằng code tuy đơn thuần nhưng lại không cho bạn cái nhìn trực quan về những liên kế trong Database. Vậy để xem mối quan hệ giữa khóa chính khóa ngoại ta đi sẽ mở quy mô diagram như sau

Bước 1: Chọn Database cần xem >
chuột phải vào Database Diagrams >
New Database Diagram 

howkteam, kteam, free education,  share to be better, alter, constraint, references, diagram

Bước 2: Cửa sổ Add Table hiển thị > Chọn Table
> Add > Close

howkteam, kteam, free education,  share to be better, alter, constraint, references, diagram

Sơ đồ Diagram của Database sẽ hiển thị như sau

howkteam, kteam, free education,  share to be better, alter, constraint, references, diagram

Trong đó :

  • Ký hiệu vô cùngtrỏ về Table có chứa Khóa ngoại.
  • Ký hiệu chìa khóa trỏ về Table có chứa Khóa chính.
  • Liên kết nối vô cùng và chìa khóa biểu diễn quan hệ tham chiếu của khóa ngoại từ table này đến khóa chính của table khác.

Từ Diagram tất cả chúng ta thuận tiện chớp lấy được những thông tin cơ bản như Tên Table, Tên column, khóa chính, khóa ngoại, …

Kết

Trong bài này, tất cả chúng ta đã biết cách KHỞI TẠO KHÓA NGOẠI trong SQL .
Bài sau, tất cả chúng ta sẽ mở màn tìm hiểu và khám phá về TRUY VẤN CƠ BẢN TRONG SQL .

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bạn để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó

Tải xuống

Project

Nếu việc thực hành theo hướng dẫn không diễn ra suôn sẻ như mong muốn. Bạn cũng có thể tải xuống PROJECT THAM KHẢO ở link bên dưới!

Thảo luận

Nếu bạn có bất kể khó khăn vất vả hay vướng mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI và ĐÁP trên thư viện Howkteam. com để nhận được sự tương hỗ từ hội đồng .