员工表中的主键应该是什么?子表的正确主键?
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