我的数据库中的两个表如下:
[Employee] Table:
Id (Primary Key, Autoincrement)
FirstName
LastName
Status
[Status] Table:
Status (Primary Key)
状态为以下之一:“FullTime”“Contractor”“Terminated”
[Employee] .Status如何引用[Status] .Status作为外键?我看到两种方法:
其他表也可以引用Status表。这两种方法中的一种是“正确的”做事方式还是设计问题?
答案 0 :(得分:4)
这基本上是设计问题,但通常最好在Status表中添加ID字段。这允许您更改状态值(拼写更正,语言翻译,术语更改以阐明含义等),而无需更新引用它的表中的数据。
此外,如果链接到字符串字段,则链接字段需要足够的空间来存储最长的状态字符串。链接到ID意味着您只需在链接字段中存储整数(或最坏的情况下,GUID)。
答案 1 :(得分:0)
更复杂的表格中的第三个选项,您希望在不丢失引用的情况下删除记录和更新名称,就像
[Employee] Table:
Id (Primary Key, Autoincrement)
FirstName
LastName
StatusNumber
[Status] Table:
Id (PK)
Number
Name