員工表中的主鍵應該是什麼?子表的正確主鍵?
Table Stores
(PK) StoreID
{other store columns}
Table Employee
StoreID
EmployeeID
{other employee columns...}
[編輯] 我們的設置是這樣的僱員將永遠只屬於一個商店。每個員工都應該有一個唯一的ID(即,即使員工屬於不同的商店,也不應該有相同的ID)。
我認爲PK只應該是EmployeeID,因爲它應該總是唯一的。我的同事認爲PK應該與StoreID + EmployeeID複合,但是(理論上)可能會有重複的員工ID。我並不完全遵循他的推理,但他引用的一件事是表現。我不擔心查詢性能,因爲對於我們的數據庫,Employee表從未超過5000條記錄。我們確實有其他更大的引用StoreID的子表,這是創建這種密鑰的合理原因嗎?
[編輯] 如果你還創建了一個只在EmployeeID上強制唯一性的內部密鑰,那麼複合PK是可以的嗎?也許有多種方式來做到這一點,但我想選擇最被接受的做法。
你的描述正確,empID在整個數據庫中是唯一的。我更新了Q來澄清。我完全同意你的評估,PK需要反映表格的獨特欄目。我不知道我現在是否應該給你答案或稍微等一下,因爲我希望得到更多評論。由於這是口頭上的爭論,我可以指出更好的支持意見。 – Tekito