Chi Tiết Bài Học 05.4 Các Ràng Buộc SQL-FOREIGN KEY - Vimentor
Có thể bạn quan tâm
Khóa ngoại lai trong một bảng trỏ tới một khóa chính trong một bảng khác. Hay nói cách khác khóa ngoại lai dùng để liên kết hai bảng với nhau.
Khóa ngoại lai giúp đảm bảo tính toàn vẹn tham chiếu dữ liệu, tức là không có trường hợp tham chiếu tới dữ liệu không tồn tại trong cơ sở dữ liệu.
Xét ví dụ sau:
Bảng “Persons”
| PID | LastName | FirstName | Address | City |
| 1 | Nguyen | Phi | My Dinh | Ha Noi |
| 2 | Ngoc | Ha | Ba Trieu | Ha Noi |
| 3 | Tran | Van | Hai Ba Trung | Ha Noi |
Bảng “Orders”
| OID | Order_No | PID |
| 1 | 532 | 3 |
| 2 | 457 | 3 |
| 3 | 890 | 2 |
| 4 | 334 | 1 |
Chú ý:
-
Cột “PID” trong bảng “Orders” trỏ tới cột “PID” trong bảng “Persons”
-
Cột “PID” trong bảng “Persons” là khóa chính (PRIMARY KEY) trong bảng đó
-
Cột “PID” trong bảng “Orders” là khóa ngoại lai (FOREIGN KEY) trong bảng “Orders”
-
Ràng buộc khóa ngoại lại được sử dụng để ngăn chặn những hành động làm phá hỏng sự liên kết giữa các bảng với nhau
-
Ràng buộc khóa ngoại lai (FOREIGN KEY) cũng có tác dụng để ngăn chặn việc chèn những dữ liệu không chính xác tới cột khóa ngoại lai, bởi vì chúng phải là một trong những dữ liệu được chứa trong bảng mà nó trỏ tới
-
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
Cú pháp MYSQL:
CREATE TABLE Orders ( OID INT NOT NULL, Order_No INT NOT NULL, PID INT, PRIMARY KEY (OID), FOREIGN KEY (PID) REFERENCES Persons(PID) )Cú pháp SQL Server/ Oracle/ MS Access:
CREATE TABLE Orders ( OID INT NOT NULL PRIMARY KEY, Order_No INT NOT NULL, PID INT FOREIGN KEY (PID) REFERENCES Persons(PID) ) Đặt tên cho khóa ngoại laiTương tự khóa chính, khóa ngoại lai cũng đặt tên thông qua từ khóa CONSTRAINT.
Quy tắc đặt tên khóa ngoại lai:
Tên khóa ngoại lai: FK_<Table Foregin>
Để đặt tên cho một ràng buộc khóa ngoại lai (FOREIGN KEY), và để định nghĩa một ràng buộc khóa ngoại lai trên nhiều cột, sử dụng cú pháp sau:
CREATE TABLE Orders ( OID INT NOT NULL, Order_No INT NOT NULL, PID INT, PRIMARY KEY (OID), CONSTRAINT FK_Orders FOREIGN KEY(PID) REFERENCES Persons (PID) )Tạo khóa ngoại lai sau khi tạo bảng
Cú pháp:
ALTER TABLE <Table Foreign> ADD FOREIGN KEY(<ColumF, ColumF1, ColumF2,…>) REFERENCES <Table Key> <Table Primary>(<ColumP, ColumnP1, ColumP2,…>)Ví dụ:
MYSQL/ SQL Server/ Oracle/ MS Access:
ALTER TABLE Orders ADD FOREIGN KEY(PID) REFERENCES Persons (PID)Để cho phép đặt tên khóa ngoại lai và định nghĩa ràng buộc khóa ngoại lai trên nhiều cột (sau khi bảng đã được tạo) sử dụng cú pháp sau:
MYSQL/ SQL Server/ Oracle/ MS Access:
ALTER TABLE Orders ADD CONSTRAINT FK_Orders FOREIGN KEY (PID) REFERENCES Persons(PID) Hủy (DROP) ràng buộc khóa ngoại laiCú pháp MYSQL:
| ALTERTABLE<Tên bảng ngoại lai> DROPFOREIGN KEY<Tên khóa ngoại lai> |
Cú pháp SQL Server/ Oracle/ MS Access:
| ALTERTABLE<Tên bảng ngoại lai> DROPCONSTRAINT<Tên khóa ngoại lai> |
Ví dụ:
MYSQL:
ALTER TABLE Orders DROP FOREIGN KEY FK_OrdersSQL Server/ Oracle/ MS Access:
ALTER TABLE Orders DROP CONSTRAINT FK_OrdersChú ý:
Trong thiết kế một database cho web hay một ứng dụng lớn, ta thường tránh sử dụng nhiều ràng buộc khóa ngoại lai vì nó sẽ làm giảm tốc độ thực thi, truy vấn. Tuy nhiên để giảm được số lượng ràng buộc khóa ngoại lai thì người thiết kế cần tối ưu thiết kế database tốt. Bởi vì nếu bỏ ràng buộc FOREIGN KEY sẽ ảnh hưởng tới tính toàn vẹn tham chiếu. Tùy theo mục đích thiết kế mà bạn đề cao tính an toàn hay đề cao tốc độ hơn để có thể quyết định được thiết kế của mình.
Con trỏ và hàm trong C++ Danh sách liên kết kép
Để lại một bình luận Hủy
Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Bình luận *
Tên *
Email *
Trang web
Lưu tên của tôi, email, và trang web trong trình duyệt này cho lần bình luận kế tiếp của tôi.
Tìm kiếmTìm kiếmRecent Posts
- Mảng động
- Giới thiệu về Interrupt
- Giới thiệu về Heap, max heap
- Giới thiệu về File I/O
- Duyệt cây theo chiều rộng
- Uncategorized
- Trang Chủ
- Giới Thiệu
- Liên Hệ WooCommerce not Found
- Newsletter
Từ khóa » Khóa Phụ Sql
-
Khóa Ngoại Foreign Key Trong SQL Server
-
Khóa Ngoại Trong SQL Server | How Kteam
-
Khác Biệt Giữa Khóa Chính Và Khóa Ngoại Trong SQL - Viblo
-
Cách Sử Dụng Ràng Buộc FOREIGN KEY Trong SQL - BAC
-
Khóa Ngoại Foreign Key Trong SQL - Freetuts
-
Khóa Ngoại (Foreign Key) Trong MySQL - Freetuts
-
Thế Nào Là Khóa Phụ - Xây Nhà
-
Bài 7: Khóa Ngoại Trong SQL Server - VnCoder
-
[Tự Học SQL] Tìm Hiểu Về Khoá Chính(PRIMARY KEY), Khoá Ngoại ...
-
Hệ Quản Trị SQL Server - Xóa Khóa Ngoại
-
Hạn Chế Tính Toàn Vẹn Tham Chiếu Không đánh Giá Chính Xác Khi Sử ...
-
Hệ Quản Trị SQL Server - Khóa Ngoại Trong SQL
-
Xóa Khóa Ngoại Trong SQL Server
-
FOREIGN KEY Trong SQL Server