Episode 3 – Foreign Key Constraints

Ở bài trước chúng ta đã được hiểu về khái niệm Primary Keys và Foreign Keys (hay còn gọi là Khóa Chính và Khóa Phụ). Hôm nay chúng ta sẽ tìm hiểu thêm về Foreign Key Constraints (các ràng buộc của Khóa Phụ). Để bắt đầu tìm hiểu Foreign Key Constraints là gì thì chúng

Ở bài trước chúng ta đã được hiểu về khái niệm Primary Keys và Foreign Keys (hay còn gọi là Khóa Chính và Khóa Phụ). Hôm nay chúng ta sẽ tìm hiểu thêm về Foreign Key Constraints (các ràng buộc của Khóa Phụ).

Để bắt đầu tìm hiểu Foreign Key Constraints là gì thì chúng ta sẽ cùng tạo 1 cơ sở dữ liệu blog bao gồm 2 bảng posts và comments

Ở bảng posts chúng ta sẽ tạo 1 cột title với Type là Varchar và lenght là 255, cột này thì mình sẽ không cho NULL

Bảng comments thì mình sẽ thêm cột body và post_id.

Tại sao lại thêm post_id thì các bạn có thể hiểu đơn giản là ở 1 bài viết thì chúng ta có thể có comments cho bài viết và chúng ta phải biết được comments nào đc dùng cho bài posts nào

Chúng ta sẽ nhập dữ liệu cho 2 bảng ví dụ như sau

Như chúng ta thấy thì khi mình đổi post_id sang 99 thì dữ liệu vẫn đc save. Lý do là do chúng ta chưa có ràng buộc cho Foreign Key nhưng như vậy thì sẽ không tạo được tính chính xác cho dữ liệu

Khi chúng ta chạy thêm lệnh

Khi đó chúng ta sẽ có ràng buộc có thể xem như sau

Và điều đó có nghĩa là gì ? Là khi chúng ta chuyển post_id sang 1 ids không có ở bảng post thì việc thay đổi dữ liệu sẽ bị sai và việc nhập liệu sẽ không được. Điều này sẽ đảm bảo chính xác cho dữ liệu

Và các ràng buộc cũng có các options để thực hiện ví dụ như on delete cascade khi bạn sử dụng thêm options này thì khi chúng ta thực hiện xóa dữ liệu ở bảng có chứa khóa chính cụ thế ở đây là post thì dữ liệu ở bảng comments cũng đc xóa đồng thời

Khi mình xóa dữ liệu ở bảng posts

Cùng kiểm tra lại dữ liệu ở bảng comments thì chúng ta cũng thấy dữ liệu được xóa đồng thời

Ngoài cascade thì cũng có thêm những lựa chọn như restrict, no action, …. Ngoài lựa chọn on delete thì còn lựa chọn on update sẽ thực hiện khi chúng ta update dữ liệu ở bảng chứa khóa chính, và lựa chọn on update này hay được sử dụng hơn trong thực tế.

Giờ chúng ta có thể quay lại cơ sở dữ liệu đã import ở bài 1 để tham khảo thêm về các ràng buộc và Khóa Chính, Khóa Phụ được sử dụng

Việc hiểu đúng về các khái niệm cơ bản sẽ giúp chúng ta thiết lập được 1 cơ sở dữ liệu đầy đủ và chính xác với những yêu cầu thực tế trong khi làm việc. Ở các bài sau mình sẽ giới thiệu đến các bạn những khái niệm khác nhé !!!

Nguồn: viblo.asia

Bài viết liên quan

Thay đổi Package Name của Android Studio dể dàng với plugin APR

Nếu bạn đang gặp khó khăn hoặc bế tắc trong việc thay đổi package name trong And

Lỗi không Update Meta_Value Khi thay thế hình ảnh cũ bằng hình ảnh mới trong WordPress

Mã dưới đây hoạt động tốt có 1 lỗi không update được postmeta ” meta_key=

Bài 1 – React Native DevOps các khái niệm và các cài đặt căn bản

Hướng dẫn setup jenkins agent để bắt đầu build mobile bằng jenkins cho devloper an t

Chuyển đổi từ monolith sang microservices qua ví dụ

1. Why microservices? Microservices là kiến trúc hệ thống phần mềm hướng dịch vụ,