Khóa chính so với Khóa duy nhất
Một cột hoặc một tập hợp các cột, có thể được sử dụng để xác định hoặc truy cập một hàng hoặc một tập hợp các hàng trong cơ sở dữ liệu được gọi là khóa. Khóa duy nhất là khóa có thể xác định duy nhất một hàng trong bảng trong ngữ cảnh của cơ sở dữ liệu quan hệ. Khóa duy nhất được tạo thành từ một cột hoặc một tập hợp các cột. Khóa chính cũng là sự kết hợp của các cột trong bảng xác định duy nhất một hàng. Nhưng nó được coi là một trường hợp đặc biệt của khóa duy nhất.
Khóa duy nhất là gì?
Như đã đề cập trước đó, khóa duy nhất là một cột hoặc tập hợp các cột có thể xác định duy nhất một hàng trong bảng. Vì vậy, một khóa duy nhất bị ràng buộc sao cho không có hai giá trị nào của nó bằng nhau. Một thuộc tính quan trọng là các khóa duy nhất không thực thi ràng buộc NOT NULL. Vì NULL đại diện cho việc thiếu giá trị, nếu hai hàng có NULL trong một cột thì điều đó không có nghĩa là các giá trị bằng nhau. Cột được xác định là một khóa duy nhất chỉ cho phép một giá trị NULL duy nhất trong cột đó. Sau đó, nó có thể được sử dụng để xác định duy nhất hàng cụ thể đó. Ví dụ, trong một bảng có chứa thông tin sinh viên, ID sinh viên có thể được định nghĩa là một khóa duy nhất. Vì không có hai sinh viên nào có thể có cùng một ID nên nó xác định duy nhất một sinh viên. Vì vậy cột mã số sinh viên thỏa mãn tất cả các tính chất của một khóa duy nhất. Tùy thuộc vào thiết kế của cơ sở dữ liệu, một bảng có thể có nhiều hơn một khóa duy nhất.
Khóa chính là gì?
Khóa chính cũng là một cột hoặc một tổ hợp các cột xác định duy nhất một hàng trong bảng của cơ sở dữ liệu quan hệ. Một bảng có thể có nhiều nhất một khóa chính. Khóa chính thực thi ràng buộc NOT NULL ngầm. Vì vậy, một cột được xác định là khóa chính không thể có giá trị NULL trong đó. Khóa chính có thể là một thuộc tính bình thường trong bảng được đảm bảo là duy nhất, chẳng hạn như số an sinh xã hội hoặc nó có thể là một giá trị duy nhất được tạo bởi hệ thống quản lý cơ sở dữ liệu như Mã định danh duy nhất toàn cầu (GUID) trong Microsoft SQL Server. Khóa chính được xác định thông qua ràng buộc CHÍNH CHÍNH trong ANSI SQL Standard. Khóa chính cũng có thể được xác định khi tạo bảng. SQL cho phép khóa chính được tạo thành từ một hoặc nhiều cột và mỗi cột được bao gồm trong khóa chính được định nghĩa ngầm định là KHÔNG ĐẦY ĐỦ. Nhưng một số hệ thống quản lý cơ sở dữ liệu yêu cầu tạo các cột khóa chính một cách rõ ràng KHÔNG ĐẦY ĐỦ.
Sự khác biệt giữa khóa chính và khóa duy nhất
Mặc dù cả khóa chính và khóa duy nhất đều là một hoặc nhiều cột có thể xác định duy nhất một hàng trong bảng, chúng có một số điểm khác biệt quan trọng. Quan trọng nhất, một bảng chỉ có thể có một khóa chính duy nhất trong khi nó có thể có nhiều hơn một khóa duy nhất. Khóa chính có thể được coi là một trường hợp đặc biệt của khóa duy nhất. Một điểm khác biệt nữa là khóa chính có ràng buộc NOT NULL ngầm trong khi khóa duy nhất không có ràng buộc đó. Do đó, các cột khóa duy nhất có thể chứa hoặc không thể chứa giá trị NULL nhưng các cột khóa chính không được chứa giá trị NULL.