Trong cơ sở dữ liệu quan hệ, khóa chính và khóa ngoại là hai ràng buộc rất quan trọng. Đây là đối tượng cơ không thể thiếu trong việc tạo mối quan hệ giữa các bảng với nhau. Trong bài viết này chúng ta hãy cùng tìm hiểu và so sánh khóa chính và khóa ngoại trong SQL.
Xem thêm tại video sau:
Khóa chính là gì?
Khóa chính (primary key) là một ràng buộc được sử dụng để định danh một bản ghi là duy nhất trong bảng dữ liệu. Hiểu đơn giản giống như mỗi người chúng ra có một định danh là căn cước công dân chẳng hạn, từ giá trị căn cước công dân này ta có thể xác định được tất cả thông tin bản thân vì giá trị này là duy nhất trong hệ thống quản lý của nhà nước.
Ngoài ra, khóa chính còn được dùng làm tham chiếu tới một bảng khác mà mình đề cấp đến trong phần sau.
Khóa ngoại là gì?
Khóa ngoại (foreign key) là một ràng buộc được sử dụng để tham chiếu đến giá trị khóa chính của một bảng khác. Như ở phần trên mình đã nói, việc thiết lập khóa chính ngoại việc làm định danh duy nhất cho bản ghi trong bảng nó còn có thể được dùng làm giá trị để từ một bảng khác tham chiếu tới – đó là khóa ngoại.
Tại sao lại phải có khóa ngoại
Ví dụ: Giả sử ta có bảng nhanvien với các bản ghi có giá trị theo các trường:
Ta có thể thấy phần vitri và luong của bản ghi 1,3,4 bị lặp lại, ta hoàn toàn có thể tách bảng kia thành 2 bảng dữ liệu và thiết lập một khóa ngoại liên kết chúng lại như sau:
Thông quan đây ta có thể thấy dữ liệu không còn bị trung lặp lại (điều rất quan trọng với những database có dữ liệu lớn) và ta có thể quản lý dữ liệu dễ hơn.
So sánh khóa chính và khóa ngoại trong SQL
Từ định nghĩa ta có thể thấy khóa chính xác định duy nhất một bản ghi trong bảng, còn khóa ngoại thì là một trường trong bảng và tham chiếu đến khóa chính của một bảng khác.
Giống nhau: Chúng ta có thể tạo nhiều khóa chính hoặc nhiều khóa ngoại trên một bảng.
Ngoài ra khóa chính và khóa ngoại còn có một số điểm khác nhau
- Giá trị NULL: Khóa chính không nhận giá trị NULL, Khóa ngoại thì có thể – Điều này tương ứng với việc nó không trỏ đến giá trị nào của bảng quan hệ.
- Chỉ mục (index): Khi khởi tạo khóa chính đồng nghĩa với việc ta đã đánh chỉ mục trên trường, nhóm trường. Còn với khóa ngoại điều này không được xảy ra, nếu muốn đánh thêm chỉ mục trên trường là khóa ngoại thì ta cần thực hiện thêm các câu kệnh thiết lập khóa ngoại.
Kết luận
Khóa chính và khóa ngoại là hai loại khóa được sử dụng trong RDBMS. Sự khác biệt giữa khóa chính và khóa ngoại đã được chúng mình chia sẻ thông qua bài viết trên. Để tìm hiểu thêm các chủ đề hay về SQL, bạn có thể tìm kiếm trong seri về SQL của chúng tôi.
Nếu bạn là newbie có thể tham khảo bài viết này để tìm hiểu lộ trình học DA trong 6 tháng của SmartData
Nếu bạn thấy bài viết hay và hữu ích, bạn có thể tham gia các kênh sau của SmartData để nhận được nhiều hơn nữa: