Khóa ngoại trong SQL Server

Sử dụng SQL server

5.0 (11 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 3 năm trước 263.899 lượt xem 22 bình luận
Tác giả/Dịch giả: Kteam
Học nhanh

Danh sách bài học

Khóa ngoại trong SQL Server

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ề 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, chúng ta sẽ cùng nhau tìm hiểu một số 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ì?

Các table trong một database không tồn tại độc lập mà còn có mối quan hệ mật thiết 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 xuất hiện ở bảng này phải có xuất hiện trước trong một bảng khác.

Mối quan hệ giữa các table trong database nhằm đảm bảo được 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

  • 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 đảm bảo toàn vẹn dữ liệu, không có 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

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é!


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 <Table Foreign>

(          

FOREIGN KEY (<ColumnF, ColumnF1, ColumnF2,…>)

REFERENCES <Table Key> (<ColumnK, ColumnK1, ColumnK2,…>)

)

Ví dụ:


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

Cú pháp:

ALTER TABLE <Table Foreign>

ADD FOREIGN KEY(<ColumnF, ColumnF1, ColumnF2,…>

REFERENCES <Table Key> (<ColumnK, ColumnK1, ColumnK2,…>)

Ví dụ:


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

Tương tự khóa chính, khóa ngoại cũng đặt tên thông qua từ khóa CONSTRAINT. Một Table 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 khác biệt

Tên khóa ngoại:          FK_<Table Foregin>_<Table Key>

Tùy theo đặc tả và độ phức tạp của từng Database mà ta có thể thay đổi cách đặt tên theo mong muốn

Cú pháp:

ALTER TABLE <Table Foreign>

ADD CONSTRAINT <Tên khóa ngoại>

FOREIGN KEY(<ColumnF, ColumnF1, ColumnF2,…>

REFERENCES <Table Key> (<ColumnK, ColumnK1, ColumnK2,…>)

Ví dụ:


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

Cú pháp:

ALTER TABLE <Table Foreign> DROP CONSTRAINT <Tên khóa ngoại>

Ví dụ:


Sơ đồ diagram

Với việc tạo khóa ngoại bằng code tuy đơn giản nhưng lại không cho bạn cái nhìn trực quan về các 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ở mô hình 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ùng trỏ 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 chúng ta dễ dàng nắm bắt được các 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, chúng ta đã biết cách KHỞI TẠO KHÓA NGOẠI trong SQL.

Bài sau, chúng ta sẽ bắt đầu tìm hiểu 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

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Khóa ngoại trong SQL Server dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!

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 hay thắc 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 & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Tác giả/Dịch giả

Khóa học

Sử dụng SQL server

Với hệ thống nhỏ, chúng ta hoàn toàn có thể lưu trữ dữ liệu bằng file để khi tắt ứng dụng dữ liệu chúng ta vẫn còn được lưu giữ. Nhưng với hệ thống lớn, truy vấn tìm kiếm, thao tác với dữ liệu trên file không còn dễ dàng và hiệu quả nữa. Và SQL ra đời để giải quyết vấn đề đó.

Chúng ta cùng nhau tìm hiểu về SQL và SQL Server thông qua serial HƯỚNG DẪN SỬ DỤNG SQL SERVER nhé!

Đánh giá

5.0
11 đánh giá
Đánh giá
5
11
4
3
2
1
dinhtu69 đã đánh giá 2 năm trước

truongvt44 đã đánh giá 3 năm trước

dễ hiểu

vuthemanh1707 đã đánh giá 3 năm trước

toilatoke đã đánh giá 3 năm trước

cám ơn Team nhiều ạ

dominhhieua1pro đã đánh giá 4 năm trước

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
TranVinh04 đã bình luận khoảng 1 năm trước

Hình như khóa ngoại không cần thiết các giá trị trong trường là duy nhất như khóa chính thì phải

 

nhothach đã bình luận 3 năm trước

Kteam hay quá ạ cảm ơn nhiều 

Ipo_Soon đã bình luận 4 năm trước

cảm ưn Howkteam.vn nhiều ạ <3

 

motnamkinhtebuon666 đã bình luận 4 năm trước

thường thường trường mình dùng kiểu int để làm mã khoá chính, còn Admin thì dùng char :v

motnamkinhtebuon666 đã bình luận 4 năm trước

thường thường trường mình dùng kiểu int để làm mã khoá chính, còn Admin thì dùng char :v

Không có video.