tôi có các bảng sau trong cơ sở dữ liệu của tôi rằng có một nhiều-nhiều mối quan hệ, được thể hiện bằng một bảng kết nối đó có các phím nước ngoài vào khóa chính của mỗi bảng chính:Một hoặc hai khóa chính trong bảng nhiều người?
- Widget: WidgetID (PK), Tiêu đề, Giá
- User: UserID (PK), FirstName, LastName
Giả sử rằng mỗi sự kết hợp với người sử dụng widget là duy nhất. Tôi có thể thấy hai tùy chọn cho cách cấu trúc bảng kết nối định nghĩa mối quan hệ dữ liệu:
- UserWidgets1: UserWidgetID (PK), WidgetID (FK), UserID (FK)
- UserWidgets2: WidgetID (PK, FK), UserID (PK, FK)
Tùy chọn 1 có một cột duy nhất cho Khóa chính. Tuy nhiên, điều này có vẻ không cần thiết vì dữ liệu duy nhất được lưu trữ trong bảng là mối quan hệ giữa hai bảng chính và mối quan hệ này có thể tạo thành một khóa duy nhất. Do đó, dẫn đến tùy chọn 2, có khóa chính hai cột, nhưng mất mã định danh duy nhất một cột mà tùy chọn 1 có. Tôi cũng có thể tùy ý thêm chỉ mục duy nhất gồm hai cột (WidgetID, UserID) vào bảng đầu tiên.
Có sự khác biệt thực sự nào giữa hai lý do hiệu suất, hoặc bất kỳ lý do nào để thích cách tiếp cận này hơn cách khác để cấu trúc bảng nhiều người dùng đến nhiều người dùng không?
Các chỉ mục bạn cần được quyết định bởi các yêu cầu truy vấn của bạn, không phải là thiết kế lược đồ của bạn. – dkretz