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

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ