Nói rằng {Author, Title, Edition}
xác định duy nhất một cuốn sách, sau đó giữ nguyên các giá trị sau:
-
Nó là một siêu khóa - xác định duy nhất một bộ (hàng).
-
Điều này là không thể sửa chữa được - việc loại bỏ bất kỳ cột nào không làm cho nó trở thành một khóa nữa.
-
Nó là một khóa ứng viên - một superkey không thể thay đổi được là một khóa ứng viên.
Bây giờ chúng ta hãy xem xét ID (số nguyên)
Tôi có thể lý do rằng Book
khóa bảng sẽ hiển thị trong một vài bảng khác dưới dạng khóa ngoại và cũng trong một vài chỉ mục. Vì vậy, nó sẽ chiếm khá nhiều không gian - giả sử ba cột x 40 ký tự (hoặc bất cứ thứ gì ...) - trong mỗi bảng này cộng với các chỉ mục phù hợp.
Để làm cho các bảng và chỉ mục "khác" này nhỏ hơn, tôi có thể thêm cột số nguyên-duy nhất vào Book
bảng được sử dụng như một khóa sẽ được tham chiếu như một khóa ngoại. Nói điều gì đó như:
alter table Book add BookID integer not null identity;
Với BookID
cũng là (phải) duy nhất, Book
bảng hiện có hai khóa ứng viên.
Bây giờ tôi có thể chọn BookID
làm khóa chính.
alter table Book add constraint pk_Book primary key (BookID);
Tuy nhiên, {Author, Title, Edition}
phải giữ một khóa (duy nhất) để ngăn chặn một cái gì đó như thế này:
BookID Author Title Edition
-----------------------------------------------
1 C.J.Date Database Design 1
2 C.J.Date Database Design 1
Để tổng hợp, hãy thêm BookID
- và chọn nó làm tài liệu chính - đã không dừng lại {Author, Title, Edition}
là một (ứng cử viên) khóa. Nó vẫn phải có ràng buộc duy nhất của riêng nó và thường là chỉ mục phù hợp.
Cũng lưu ý rằng từ quan điểm thiết kế, quyết định này đã được thực hiện trên "cấp độ vật lý". Nói chung, ở cấp độ logic của thiết kế, ID
này không tồn tại - nó đã được giới thiệu trong quá trình xem xét kích thước cột và chỉ mục. Vì vậy, lược đồ vật lý được bắt nguồn từ lược đồ logic. Tùy thuộc vào kích thước DB, RDBMS và phần cứng được sử dụng, không lý luận kích thước nào trong số đó có thể có tác dụng đo lường được - vì vậy hãy sử dụng {Author, Title, Edition}
như một PK có thể là thiết kế hoàn toàn tốt - cho đến khi được chứng minh theo cách khác.