Giải thích khóa chính là gì và tại sao nó là một phần không thể thiếu của cơ sở dữ liệu quan hệ.
Khi tạo hai bảng, chúng tôi cũng tạo khóa chính cho mỗi bảng.
Khi bạn mở rộng các nút ở SCHEMAS bên trái , bạn có thể thấy các khóa chính (và khóa ngoài — chúng ta sẽ đến với những khóa tiếp theo) được liệt kê dưới mỗi bảng:
Như ảnh chụp màn hình đi kèm hiển thị, Chỉ mục các nút chứa bất kỳ chỉ mục nào (trong trường hợp của chúng tôi là khóa ngoại và / hoặc khóa chính). Các khóa chính và khóa ngoại này chỉ có ở đó vì chúng tôi đã chỉ định chúng trong mã của mình khi tạo bảng.
Cụ thể, chúng tôi đã sử dụng PRIMARY KEY (FruitId)
để tạo
FruitId
cột khóa chính cho
Fruit
và chúng tôi đã sử dụng PRIMARY KEY (UnitId)
để tạo
UnitId
cột khóa chính cho
Đơn vị
bảng.
Khóa chính là gì?
Một khóa chính (còn được gọi là khóa duy nhất ) là một cột đã được cấp phát làm trường định danh duy nhất. Giá trị trong cột khóa chính là duy nhất cho mỗi bản ghi. Nói cách khác, không có hai bản ghi nào có thể chia sẻ cùng một giá trị trên cột đó.
Một ví dụ cổ điển về trường khóa chính là trường "ID". Hầu hết các bảng sẽ có một trường ID cung cấp một số nhận dạng duy nhất cho mỗi bản ghi. Ví dụ có thể bao gồm "CustomerId", "ProductId", "FruitId", v.v. Nếu không có các trường ID như thế này, chức năng của cơ sở dữ liệu của bạn sẽ bị cản trở nghiêm trọng. Nếu bạn có hai hoặc nhiều khách hàng có cùng tên, làm thế nào bạn có thể tìm thấy hồ sơ của họ? Mặc dù đúng là bạn có thể tìm thấy điều gì đó độc đáo ở mọi bản ghi, nhưng sẽ rõ ràng và dễ dàng hơn rất nhiều nếu có một cột có mục đích chính là cung cấp nhận dạng duy nhất cho mỗi bản ghi.
Giá trị chính có thể là một giá trị bình thường được đảm bảo là duy nhất (số ISBN cho sách, mã sản phẩm, v.v.) hoặc nó có thể là một giá trị được tạo bởi ứng dụng hoặc DBMS cụ thể là duy nhất (chẳng hạn như một giá trị duy nhất trên toàn cầu số nhận dạng hoặc số nguyên tự động tăng dần).
Chọn khóa chính
Hãy cẩn thận khi chọn một cột cho khóa chính của bạn. Bạn cần đảm bảo rằng mọi bản ghi sẽ có một và không có khả năng hai bản ghi sẽ chia sẻ cùng một giá trị hoặc một bản ghi sẽ có nhiều hơn một giá trị.
Ví dụ:sử dụng địa chỉ email của người dùng có thể hoạt động trong một số trường hợp, nhưng nó không phải là cơ sở rất chắc chắn cho một số nhận dạng duy nhất. Người dùng có thể thay đổi địa chỉ email của họ. Người dùng có thể chia sẻ địa chỉ email. Một số người dùng có thể không có địa chỉ email. Tất nhiên, bạn có thể viết hệ thống của mình để ngăn người dùng thay đổi địa chỉ email của họ hoặc chia sẻ nó, nhưng hệ thống của bạn sẽ không linh hoạt hoặc thân thiện với người dùng.
Bạn có thể yêu cầu tất cả người dùng phải có một tên người dùng duy nhất. Điều đó có thể hoạt động. Tuy nhiên, bạn cần suy nghĩ kỹ về mọi khả năng. Nếu có bất kỳ cơ hội nào, người dùng có thể thay đổi hoặc chia sẻ nó (quá khứ, hiện tại hoặc tương lai), đừng sử dụng nó làm khóa chính. Điều gì sẽ xảy ra nếu "TechGuy12" hủy kích hoạt tài khoản của anh ấy. Điều đó có nghĩa là người dùng khác hiện có thể sử dụng "TechGuy12"? Đó sẽ là vấn đề đối với ứng dụng của bạn hay bất kỳ báo cáo nào bạn cần tạo?
Nếu bạn nghi ngờ về "tính duy nhất" của trường khóa chính của mình, hãy sử dụng một số được tạo tự động tăng dần với mỗi bản ghi được tạo.