Cách Sử Dụng Ràng Buộc FOREIGN KEY Trong SQL - BAC

FOREIGN KEY còn gọi là khóa ngoại, cũng là một trong những ràng buộc của SQL. Nếu so sánh với khóa chính (PRIMARY KEY) thì khóa ngoại cũng đóng một vai trò quan trọng không kém. Bài viết này sẽ giúp làm rõ các vấn đề liên quan đến FOREIGN KEY.

Tham khảo: Cách sử dụng PRIMARY KEY trong SQL

1. Ràng buộc FOREIGN KEY trong SQL

Ràng buộc FOREIGN KEY hay khóa ngoại được sử dụng để ngăn các hành động sẽ làm hủy bỏ liên kết giữa các bảng.

Một FOREIGN KEY là một trường (hoặc tập hợp các trường) trong một bảng, đề cập đến PRIMARY KEY trong một bảng khác.

Một bảng với khóa ngoại được gọi là bảng con và bảng với khóa chính được gọi là bảng cha hay bảng tham chiếu.

Để dễ hình dung, bạn hãy nhìn vào ví dụ dưới đây:

Chú ý đến cột PersonID của bảng Orders, bạn sẽ thấy cột này trỏ đến cột PersonID của bảng Persons.

Cột PersonID trong bảng Persons là PRIMARY KEY trong bảng Persons.

Cột PersonID trong bảng Orders là FOREIGN KEY trong bảng Orders.

Ràng buộc FOREIGN KEY ngăn các dữ liệu không hợp lệ được chèn vào cột khóa ngoại, bởi vì nó phải là một trong những giá trị có trong bảng cha.

2. Tạo ràng buộc FOREIGN KEY

Có hai cách để tạo ràng buộc trong SQL, cách thứ nhất là thêm ràng buộc khi tạo bảng bằng câu lệnh CREATE TABLE. Cách thứ hai để tạo ràng buộc là sử dụng câu lệnh ALTER TABLE, cách này thường dùng để chỉnh sửa ràng buộc có sẵn hoặc thêm mới.

Tham khảo: Cách sử dụng câu lệnh ALTER TABLE trong SQL

Để thực hiện các ví dụ này, bạn cần nhập cơ sở dữ liệu mẫu Northwind vào SQL Server Management Studio. Hãy xem bài viết hướng dẫn ngay dưới đây:

Tham khảo: Hướng dẫn tải và cài đặt dữ liệu mẫu Northwind trong SQL Server Management Studio

  • Sử dụng CREATE TABLE

Đầu tiên, bạn cần tạo một bảng Persons có ràng buộc PRIMARY KEY trên cột PersonID bằng cú pháp sau:

CREATE TABLE Persons (

PersonID int NOT NULL PRIMARY KEY,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Age int

);

Tiếp theo, dùng câu lệnh SQL dưới đây để tạo ra một FOREIGN KEY trên cột “PersonID” khi tạo bảng “OrderTest”:

CREATE TABLE OrderTest (

OrderID int NOT NULL PRIMARY KEY,

OrderNumber int NOT NULL,

PersonID int FOREIGN KEY REFERENCES Persons(PersonID)

);

Lưu ý: Nếu bạn sử dụng cơ sở dữ liệu mẫu Northwind, đã có một bảng tên là Orders, nên bạn không thể tạo thêm bảng cùng tên. Bạn có thể đặt một tên khác cho bảng như ví dụ trên là OrderTest.

Ngoài ra, bạn cũng có thể đặt tên cho FOREIGN KEY và xác định nó trên nhiều cột bằng câu lệnh như sau:

CREATE TABLE OrderTest (

OrderID int NOT NULL,

OrderNumber int NOT NULL,

PersonID int,

PRIMARY KEY (OrderID),

CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)

REFERENCES Persons(PersonID)

);

Sau khi đã tạo bảng, bạn không thể tạo một bảng trùng tên. Vì vậy, hãy xóa bảng Persons đã tạo trên, trước khi tiếp tục thực hiện các ví dụ dưới đây. Đối với các ví dụ thêm ràng buộc bằng câu lệnh ALTER TABLE, bạn hãy tạo bảng không chứa ràng buộc PRIMARY KEY.

  • Sử dụng ALTER TABLE

Để tạo một ràng buộc FOREIGN KEY trên cột “PersonID” khi bảng đã tạo trước đó và chưa có ràng buộc, hãy dùng câu lệnh sau:

ALTER TABLE OrderTest

ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

Nếu bạn muốn đặt tên cho một ràng buộc FOREIGN KEY và xác định một ràng buộc trên nhiều cột, hãy dùng cú pháp sau:

ALTER TABLE OrderTest

ADD CONSTRAINT FK_PersonOrder

FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

Nếu bạn đang dùng cơ sở dữ liệu Northwind, hệ thống có thể báo lỗi trùng tên, hãy đổi tên FK_PersonOrder thành một cái tên khác.

3. Xóa một ràng buộc FOREIGN KEY

Để xóa một ràng buộc FOREIGN KEY trong SQL, hãy dùng cú pháp sau:

ALTER TABLE OrdersTest

DROP CONSTRAINT FK_PersonOrder;

Lưu ý: Bạn cần nhập đúng tên bảng chứa ràng buộc và tên của ràng buộc khi tiến hành xóa.

Trên đây là những thông tin cơ bản mà bạn cần biết về khóa ngoại hay FOREIGN KEY. Trong các bài viết tiếp theo chúng ta sẽ tiếp tục với những kiến thức hữu ích khác về SQL nói riêng và dữ liệu nói chung, đừng quên đón đọc tại BAC's Blog.

Nguồn tham khảo:

https://www.w3schools.com/

Nhu cầu đào tạo doanh nghiệp

BAC là đơn vị đào tạo BA đầu tiên tại Việt Nam. Đối tác chính thức của IIBA quốc tế. Ngoài các khóa học public, BAC còn có các khóa học in house dành riêng cho từng doanh nghiệp. Chương trình được thiết kế riêng theo yêu cầu của doanh nghiệp, giúp doanh nghiệp giải quyết những khó khăn và tư vấn phát triển.

Tham khảo chương trình đào tạo:
  • Phân tích và trực quan hóa dữ liệu với Tableau
  • Phân tích và trực quan hóa dữ liệu với Power BI

Các bài viết liên quan SQL:

  • 50 Câu hỏi phỏng vấn về SQL thường gặp
  • Các câu hỏi phỏng vấn SQL phổ biến dành cho Business Analyst

Các bài viết liên quan Power BI:

  • Power BI là gì?
  • Chỉnh sửa và định hình dữ liệu trong Power BI Desktop
  • Kết hợp dữ liệu trong Power BI Desktop
  • Hướng dẫn kết nối dữ liệu trong Power BI Desktop
  • Hướng dẫn tải & cài đặt Power BI trên máy tính
  • Khóa học Phân tích và trực quan hóa dữ liệu với Power BI

Các bài viết liên quan:

  • TABLEAU - Giải pháp BUSINESS INTELLIGENCE (BI) - click vào đây
  • Hướng dẫn cài đặt và Sử dụng TABLEAU - click vào đây
  • Tính năng mới trên tableau - verion 2019.1 - click vào đây

BAC - Biên soạn và tổng hợp nội dung

Từ khóa » Khóa Chính Sql