Trong bài viết này, chúng ta sẽ tìm hiểu về khái niệm "khoá ngoại" trong MySQL và cách thức liên kết bảng MySQL trong phpMyAdmin.
Khóa ngoại trong MySQL
Hình ảnh minh họa một khóa ngoại trong MySQL
Khóa ngoại (foreign key) trong MySQL là một thuộc tính quan trọng để xác định mối quan hệ giữa hai bảng trong cơ sở dữ liệu. Khóa ngoại cho phép bạn thiết lập các quy tắc và ràng buộc nhằm đảm bảo tính nhất quán và toàn vẹn dữ liệu trong cơ sở dữ liệu.
Ví dụ, giả sử chúng ta có hai bảng là "Users" chứa thông tin người dùng và "Order" chứa thông tin đơn hàng được đặt hàng từ người dùng. Trong đó, bảng "Users" có cột "id" là khóa chính. Ta có thể thiết lập khóa ngoại trong bảng "Order" bằng cách sử dụng cột "user_id" để liên kết với cột "id" trong bảng "Users", từ đó tạo ra một quan hệ và xác định rằng đơn hàng đó thuộc về người dùng nào.
Việc xác định khóa ngoại trong cơ sở dữ liệu của MySQL cũng giúp cho việc truy vấn dữ liệu và kết hợp (JOIN) nhiều bảng trong MySQL trở nên nhanh chóng hơn rất nhiều. Nếu hai bảng có mối quan hệ nhưng chưa xác định thông qua khóa ngoại, việc kết hợp dữ liệu từ hai bảng này sẽ đòi hỏi thời gian tìm kiếm liên tục từng bước. Tuy nhiên, khi đã có một sự liên kết thông qua khóa ngoại, MySQL có thể nhanh chóng truy xuất hàng phù hợp từ bảng thứ hai.
Cách tạo khóa ngoại bằng lệnh SQL:
FOREIGN KEY (Custom_ID) REFERENCES TABLE(ID)
Trong đó:
FOREIGN KEY
: Là câu lệnh để tạo khóa ngoạiCustom_ID
: Là tên cột sẽ thiết lập khóa ngoại cho cột này trong bảng thứ 2.TABLE
: Tên bảng thứ nhất (bảng cần thiết lập mối quan hệ).ID
: Là khóa chính trong bảng thứ nhất.
Ví dụ: Có bảng users
gồm các cột ID, name, phone, pass, address
với ID
là khóa chính. Và bảng order
gồm các cột ID, user_id, num, product_id
cũng có khóa chính là ID
. Để thiết lập khóa ngoại cho cột user_id
liên kết với bảng users
thông qua khóa chính ID
, ta có thể sử dụng câu lệnh sau:
FOREIGN KEY (user_id) REFERENCES users(ID)
Hướng dẫn liên kết bảng MySQL trong phpMyAdmin
Trong bộ công cụ quản lý cơ sở dữ liệu MySQL, có một công cụ mạnh mẽ gọi là phpMyAdmin. Nó cung cấp cho chúng ta chức năng để tạo khóa ngoại cho các bảng mà không cần phải sử dụng câu lệnh SQL.
Để tạo khóa ngoại hay còn được gọi là liên kết các bảng trong phpMyAdmin, chúng ta chỉ cần làm như sau:
- Chọn vào tab
Structure
(Cấu trúc bảng) của bảng mà bạn muốn tạo khóa ngoại và chọn vào nútRelation view
(Hiển thị quan hệ).
Giao diện của phpMyAdmin để tạo khóa ngoại
- Tại đây, bạn có thể tạo các liên kết (khóa ngoại) cho các cột của bảng này với bảng khác (có thể tạo nhiều hơn 1 khóa ngoại).
Giao diện của phpMyAdmin cho việc tạo liên kết bảng
Bên trên ảnh minh hoạ, chúng ta có nhãn từ số 1 đến 7 (nhưng xin lỗi, số cuối cùng là số 7, vì mình đã nhầm đánh). Mỗi số tương ứng như sau:
- Đặt tên cho ràng buộc
- Thuộc tính ràng buộc khi dữ liệu liên kết bên bảng chính bị xóa.
- Thuộc tính ràng buộc khi dữ liệu liên kết bên bảng chính có sự thay đổi.
- Tên cột tạo ràng buộc trong bảng này (khóa ngoại).
- Database chứa bảng sẽ tạo ràng buộc.
- Tên bảng sẽ được tạo ràng buộc tới.
- Cột tạo ràng buộc (khóa chính trong bảng).
Trong thuộc tính ràng buộc ON DELETE
và ON UPDATE
có 4 tùy chọn là CASCADE, SET NULL, NO ACTION, RESTRICTS
. Để giải thích ngắn gọn, các tùy chọn này có thể được hiểu như sau:
CASCADE
: Khi khóa chính bị xóa, tất cả các hàng liên quan trong bảng liên kết cũng sẽ bị xóa. Ngược lại, khi cập nhật khóa chính, các hàng liên quan sẽ được cập nhật tương ứng.SET NULL
: Đặt khóa ngoại về giá trịNULL
.NO ACTION
,RESTRICTS
: 2 tùy chọn này tương tự nhau, cho phép khóa ngoại không bị tác động khi xóa dữ liệu hoặc cập nhật khóa chính.
Sau khi nhập thông tin, bạn chỉ cần nhấn nút Save
và phpMyAdmin sẽ tự động tạo khóa ngoại và liên kết giữa hai bảng này.
Để xem tất cả các liên kết bảng trong một cơ sở dữ liệu, chọn cơ sở dữ liệu tương ứng và chuyển đến tab Designer
(Bộ thiết kế).
Giao diện của phpMyAdmin hiển thị tất cả các liên kết bảng
Ở đây, bạn có thể xem tất cả các liên kết bảng một cách chi tiết và dễ dàng theo dõi.
Cảm ơn bạn đã đọc bài viết này! Chúc bạn học tốt!