- [C#] Hướng dẫn giải nén file *.rar với tiến trình progress bar winform
- [C#] Chia sẻ source code make Crazy Error Message Effect Bomb Windows
- [C#] Lập trình ứng dụng theo mô hình MVP Model-View-Presenter Pattern Winform
- [C#] Giới thiệu và những thứ hay ho từ thư viện System.Reactive của Microsoft
- [C#] Hướng dẫn tạo ứng dụng Chat với GPT sử dụng Open AI API
- [DEVEXPRESS] Tạo month picker trên DateEdit Winform C#
- [DATABASE] Cách sử dụng và lưu ý khi sử dụng khóa ngoại (Foreign Key) trong Sqlserver
- [C#] Garbage Collector (GC) là gì? Cách giải phóng bộ nhớ trên ứng dụng Winform khi các đối tượng không còn sử dụng
- [C#] Cách tính độ tương phản màu sắc Contrast Color mà con người có thể nhìn thấy được
- [C#] Hướng dẫn mã hóa mật khẩu tài khoản ứng dụng đúng chuẩn Men
- [C#] Sử dụng Open AI Chat GPT viết ứng dụng Count down timer có hiệu ứng trên winform
- [DATABASE] Chia sẻ dữ liệu Pantone Color sql và json api
- [SQLSERVER] Tạo mã sản phẩm tự động như: SP0001, SP0002, SP0003... sử dụng Trigger
- [C#] Hướng dẫn kiểm tra phiên bản NET Framework cài đặt ở máy tính
- [C#] Hướng dẫn đọc file excel đơn giản sử dụng thư viện Epplus
- [C#] ConcurrentBag là gì và cách sử dụng nó trong lập trình bất đồng bộ
- [C#] AutoResetEvent là gì và cách sử dụng
- [DEVEXPRESS] Chia sẻ source code cách tạo biểu đồ sơ đồ tổ chức công ty Org Chart trên Winform C#
- [C#] Hướng dẫn tạo Auto Number trên Datagridview winform
- [DATABASE] Hướng dẫn tạo Procedure String Split in Mysql
[DATABASE] Cách sử dụng và lưu ý khi sử dụng khóa ngoại (Foreign Key) trong Sqlserver
Xin chào các bạn, bài viết hôm nay mình viết về khóa ngoại và các điểm lưu ý khi sử dụng khóa ngoại (Foreign Key) trong sqlserver.
[DATABASE] Khóa ngoại là gì? Cách sử dụng và lưu ý khi sử dụng khóa ngoại trong SQL
Khóa ngoại (Foreign Key) trong cơ sở dữ liệu là một ràng buộc (constraint) giữa hai bảng khác nhau. Nó được sử dụng để thiết lập một quan hệ giữa hai bảng, trong đó bảng cha (parent table) có một hoặc nhiều bản ghi có giá trị trong trường khóa chính (primary key) được trích xuất bởi bảng con (child table).
Ràng buộc khóa ngoại đảm bảo tính toàn vẹn dữ liệu giữa các bảng trong cơ sở dữ liệu.
Ví dụ, trong cơ sở dữ liệu bán hàng, bạn có thể có hai bảng: bảng khách hàng (Customers) và bảng đơn hàng (Orders).
Mỗi đơn hàng phải được gán cho một khách hàng cụ thể. Để thiết lập quan hệ giữa hai bảng này, bạn có thể sử dụng một khóa ngoại trên bảng đơn hàng để tham chiếu đến khóa chính trên bảng khách hàng.
Ví dụ về tạo bảng Orders
với khóa ngoại tham chiếu đến bảng Customers
trong SQL Server:
CREATE TABLE Customers (
CustomerID int PRIMARY KEY,
CustomerName varchar(255)
);
CREATE TABLE Orders (
OrderID int PRIMARY KEY,
CustomerID int,
OrderDate date,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
);
Trong ví dụ trên, bảng Customers có cột khóa chính là CustomerID, trong khi bảng Orders có cột khóa chính là OrderID và cột CustomerID được sử dụng làm khóa ngoại.
Ràng buộc khóa ngoại được thiết lập bằng cách sử dụng từ khóa FOREIGN KEY trong câu lệnh CREATE TABLE của bảng Orders và tham chiếu đến cột CustomerID trên bảng Customers.
Khi sử dụng khóa ngoại, nếu bạn cố gắng thêm hoặc cập nhật một bản ghi trong bảng con mà không có giá trị tương ứng trong bảng cha, hệ thống sẽ trả về lỗi và từ chối thao tác đó.
Tính toàn vẹn dữ liệu được đảm bảo bởi ràng buộc khóa ngoại giữa hai bảng trong cơ sở dữ liệu.
Khi sử dụng khóa ngoại trong SQL Server, có một số lưu ý quan trọng cần lưu ý:
-
Kiểm tra tính toàn vẹn dữ liệu: Ràng buộc khóa ngoại giúp đảm bảo tính toàn vẹn dữ liệu giữa các bảng trong cơ sở dữ liệu. Trước khi sử dụng khóa ngoại, hãy chắc chắn rằng các bảng đã được thiết kế một cách chính xác và không có lỗi dữ liệu.
-
Cần có quyền truy cập: Khi sử dụng khóa ngoại, người dùng cần có quyền truy cập vào các bảng được tham chiếu để thực hiện các thao tác trên các bảng này.
-
Không thể xóa hoặc cập nhật các bản ghi cha: Khi một bảng có một khóa ngoại tham chiếu đến một bảng khác, bạn không thể xóa hoặc cập nhật các bản ghi trong bảng cha mà không ảnh hưởng đến tính toàn vẹn dữ liệu của bảng con.
-
Tối ưu hóa hiệu suất: Nếu sử dụng khóa ngoại trong cơ sở dữ liệu lớn, có thể ảnh hưởng đến hiệu suất của hệ thống. Để tối ưu hóa hiệu suất, hãy sử dụng chỉ số trên các cột được sử dụng trong các ràng buộc khóa ngoại và tối ưu hóa các truy vấn để giảm thiểu số lượng bản ghi được quét.
-
Xác định quy tắc xử lý khi xóa hoặc cập nhật bản ghi cha: SQL Server cung cấp các quy tắc xử lý mặc định khi xóa hoặc cập nhật bản ghi trong bảng cha. Bạn có thể xác định quy tắc xử lý này bằng cách sử dụng từ khóa ON DELETE hoặc ON UPDATE trong câu lệnh tạo bảng hoặc sử dụng câu lệnh ALTER TABLE để thay đổi quy tắc xử lý.
Những lưu ý trên giúp bạn sử dụng khóa ngoại một cách hiệu quả và đảm bảo tính toàn vẹn dữ liệu giữa các bảng trong cơ sở dữ liệu.
Thanks for watching!