Khóa ngoại (Foreign Key) trong MySQL

Chúng tôi rất vui mừng chia sẻ kiến thức về từ khóa Foreign key la gi và hi vọng rằng nó sẽ hữu ích cho các bạn đọc. Bài viết tập trung trình bày ý nghĩa, vai trò và ứng dụng của từ khóa trong việc tối ưu hóa nội dung trang web và chiến dịch tiếp thị trực tuyến. Chúng tôi cung cấp các phương pháp tìm kiếm, phân tích và chọn lọc từ khóa phù hợp, kèm theo các chiến lược và công cụ hữu ích. Hi vọng rằng thông tin chúng tôi chia sẻ sẽ giúp bạn xây dựng chiến lược thành công và thu hút lưu lượng người dùng. Cảm ơn sự quan tâm và hãy tiếp tục theo dõi blog của chúng tôi để cập nhật kiến thức mới nhất.

Tất cả chúng ta đã được học các lệnh tạo bảng (Create Table), khái niệm về khóa chính (Primary Key) và một số thành phần khác ví như UNIQUE, AUTO_INCREMENT, tuy nhiên tất cả những thành phần này đều xử lý trên một bảng duy nhất. Thắc mắc đưa ra là nếu có nhiều bảng thì liệu có mối liên hệ giữa chúng hay là không? Lời giải đáp là có, và đó đây là khóa ngoại foreign key.

Bạn Đang Xem: Khóa ngoại (Foreign Key) trong MySQL

1. Khóa ngoại (Foreign Key) là gì?

Trong bài này tôi sẽ không còn trình bài khái niệm khóa ngoại một cách rõ ràng nữa mà đi vào khái niệm chính của nó. Foreign key là quan hệ giữa hai bảng và quan hệ này ta hay gọi là cha – con, tức thị nếu bảng A có một tính chất liên kết tới bảng B thì lúc này bảng B đóng vai trò là cha và bảng A đóng vai trò là con.

Khái niệm Foreign key là gì không chỉ có ở MySQL mà nó là một thành phần của tất cả những hệ quản trị CSDL như SQL Server, Oracle, Access, … Nếu như bạn đã từng học qua các mô hình CSLD thì không còn lạ gì khóa ngoại nữa.

Thông thường tất cả chúng ta có hai loại khóa ngoại đó là khóa ngoại giữa hai bảng và khóa ngoại trỏ đến chính nó (đệ quy).

Nội dung bài viết này được đăng tại [free tuts .net]

Khóa ngoại giữa hai bảng

Xét sơ đồ CSDL sau đây:

/319/customers-orders-tables.png

Các bạn thấy trong bảng customers orders có một quan hệ với tên gọi là “mỗi order là của một customer nào đó“. đây ta gọi là quan hệ (1:n), có tức thị một customer có thê có nhiều orders và mỗi order chỉ thuộc về một customer duy nhất. Xem kỹ hơn ta thấy trong bảng orders có field customerNumber và nó sẽ trỏ đến khóa chính (Primary Key) của bảng customers.

Như vậy ta có kế luận như sau:

Xem Thêm : Dram Frequency Là Gì

Khóa ngoại ở bảng orders sẽ tham chiếu đến khóa chính của bảng customers. Lúc này bảng customers gọi là bảng cha và bảng order gọi là bảng con. Đây đây là điều BẮT BUỘC của khóa ngoại.

Khóa ngoại trỏ đến chính bảng đó

Xét sơ đồ CSDL sau đây:

Trong sơ đồ này nó có một khóa ngoại là reportsTo và trỏ đến chính khóa chính của nó employeeNumber. Quan hệ này ta nói như sau “mỗi viên chức có thể là một viên chức thông thường hoặc là người quản lý của một viên chức khác. Hằng ngày các nhân bị quản lý khác sẽ văn bản báo cáo (reportsTo) tới viên chức quản lý”. Sơ đồ này ta gọi là đệ quy, tức thị khóa ngoại sẽ tham chiếu tới chính table nó luôn. Trong thực tế cũng hay gặp trường hợp này nên các bạn cần phải lưu ý nhé.

2. Tạo khóa ngoại (Foreign Key) trong MySQL

Ta sẽ sử dụng cú pháp T-SQL để tạo khóa ngoại, tất cả chúng ta có rất nhiều các tạo và tùy vào nhu cầu của ban mà sử dụng cho phù hợp. Tất cả những cách đều phải có chung một cấu trúc đó là khai báo field của bảng A và sẽ tham chiếu đến field nào của bảng B bởi từ khóa REFERENCES.

Tạo trong lệnh tạo bảng create table

Tất cả chúng ta sẽ tạo trực tiếp trong lệnh tạo bảng và cú pháp của nó cũng tương tự như lệnh tạo khóa chính, tức thị sẽ đặt tại cuối phần khai báo field. Nếu sử dụng cách này thì khóa ngoại sẽ không còn mang tên.

Các bạn thấy tôi đã sử dụng từ khóa FOREIGN KEY (groupid) REFERENCES Groups(groupid) để tạo khóa ngoại, trong đó:

  • FOREIGN KEY (groupid): là field được chọn làm khóa ngoại ở bảng con, tức là bảng Users.
  • REFERENCES Groups(groupid): là khóa chính của bảng cha, tức là bảng Groups.

Sau thời điểm tạo xong bạn vào PHPMyAdmin và chọn mục database, chọn diagram ở thanh phương tiện thì lúc này các bạn sẽ thấy một sơ đồ như sau:

foreign key mysql png

Như vậy là bạn đã tạo thành công rồi đó.

Ví dụ có đặt tên:

Xem Thêm : Thành ngữ Phong hoa tuyết nguyệt 风花雪月 fēng huā xuě yuè

Tương tự như các phần trước, để tại vị tên cho khóa ngoại thì ta phải sử dụng từ khóa CONSTRAINT.

Tạo bằng lệnh ALTER TABLE

Với cách này ta phải tạo hai bảng trước, sau này sẽ dùng lệnh ALTER TABLE để thêm FOREIGN KEY.

Hoặc:

Tạo khóa ngoại trường hợp tham chiếu chính nó

Trường hợp này ta cũng sử dụng cú pháp tương tự, thay vì tham chiếu tới bảng nào đó thì sẽ tham chiếu đến chính nó.

3. Xóa (Drop) Foreign Key

Để xóa được Foreign Key thì bạn phải ghi nhận tên của nó là gì, mà tên chỉ tồn tại trong trường hợp ta có sử dụng từ khóa CONSTRAINT lúc tạo khóa, vì vậy khuyến khích bạn sử dụng CONSTRAINT để tạo khóa ngoại.

Sau đây là cú pháp xóa Foreign Key:

Trong số đó fk_group là tên gọi của khóa ngoại.

Lưu ý quan trọng:

Bạn chỉ thực hiện được thao tác xóa khi không tồn tại một bảng con nào tham chiếu đến nó.

4. Lời kết

Trong bài này chủ yếu tìm hiểu khái niệm của khóa ngoại (Foreign key) và tìm hiểu một số phương pháp tạo khóa ngoại thông dụng, bài này kết thúc tại đây, bài tiếp theo mình sẽ nói về lệnh alter table.

You May Also Like

About the Author: v1000