Vấn đề của tôi là về khóa tự nhiên và số nguyên auto_increment làm khóa chính. Ví dụ: Tôi có các bảng A
và B
và A_B_relation
. A và B có thể là một số đối tượng và A_B_realtion
ghi lại nhiều mối quan hệ của nhiều A và B.phím tự nhiên so với phím auto_increment làm khóa chính
Cả A và B đều có id duy nhất toàn cầu của riêng chúng, chẳng hạn như UUID. UUID có sẵn cho người dùng, điều này có nghĩa là người dùng có thể truy vấn A hoặc B theo UUID.
Có hai cách để thiết kế khóa chính của bảng.
- sử dụng số nguyên auto_increment.
A_B_relation
tham chiếu số nguyên là FK. - sử dụng UUID.
A_B_relation
tham chiếu UUID dưới dạng FK.
Ví dụ: người dùng muốn truy vấn tất cả thông tin của B liên kết với UUID A by A.
Đối với trường hợp đầu tiên, dòng chảy truy vấn là thế này:
First, query A's integer primary key by UUID from `A`.
And then, query all the B's integer primary key from `A_B_relation`.
At last, query all the B's info from `B`.
Đối với trường hợp thứ hai, dòng chảy như sau:
Query all the B's UUID from the `A_B_relation` by A's UUID.
Query all the B's info from `B`.
Vì vậy, tôi nghĩ rằng, trường hợp thứ hai là thuận tiện hơn . Thê nay đung không? sự thiếu hụt của trường hợp sau là gì?