Tiểu học trọng điểm là một khái niệm tên miền duy nhất (nhất thiết và đủ) xác định đối tượng của bạn trong số các thực thể tương tự. Khóa chính kết hợp (nhiều cột) chỉ có ý nghĩa khi một phần của khóa đề cập đến một cá thể cụ thể của một thực thể tên miền khác.
Giả sử bạn có một bộ sưu tập sách cá nhân. Miễn là bạn ở một mình, bạn có thể đếm chúng và gán cho mỗi số. Số này là khóa chính của miền của thư viện của bạn.
Bây giờ bạn muốn hợp nhất thư viện của mình với thư viện của người hàng xóm nhưng vẫn có thể phân biệt được một cuốn sách thuộc về ai. Tên miền bây giờ rộng hơn và khóa chính bây giờ là (owner, book_id).
Vì vậy, làm cho mỗi tổng hợp khóa chính không phải là chiến lược của bạn, mà đúng hơn là bạn nên sử dụng nó khi cần.
Bây giờ, một số thông tin về MySQL. Nếu bạn định nghĩa một khóa chính hỗn hợp và muốn RDBSM tự động hóa các id cho bạn, bạn nên biết về sự khác biệt giữa hành vi MyISAM và InnoDB.
Giả sử chúng tôi muốn một bảng có hai trường: parent_id, child_id. Và chúng tôi muốn child_id được autoincremented.
MyISAM sẽ tự động hợp nhất trong hồ sơ với cùng parent_id và InnoDB sẽ tự động phân tách duy nhất trong toàn bộ bảng.
Trong MyISAM, bạn nên xác định khóa chính là (parent_id, child_id), và trong InnoDB là (child_id, parent_id), vì trường tự động tăng phải là thành phần ngoài cùng bên trái trong khóa chính trong InnoDB.
Bản sao có thể có của [Cách tạo đúng các khóa chính kết hợp - MYSQL] (http://stackoverflow.com/questions/5835978/how-to-properly-create-composite-primary-keys-mysql) –
Không thể là bản sao của nội dung được đăng sau 3 năm. – Kaji
http://meta.stackexchange.com/questions/147643/should-i-vote-to-close-a-duplicate-question-even-though-its-much-newer-and-ha ;-) –