在我们的开发小组中,我们对主键和外键的命名约定进行了激烈的辩论。我们小组基本上有两种思想流派:
1:
Primary Table (Employee)
Primary Key is called ID
Foreign table (Event)
Foreign key is called EmployeeID
要么
2:
Primary Table (Employee)
Primary Key is called EmployeeID
Foreign table (Event)
Foreign key is called EmployeeID
我不希望在任何列中重复表的名称(因此,我更喜欢上面的选项1)。从概念上讲,它与其他语言中的许多推荐做法是一致的,在这种情况下,不要在对象的属性名称中使用对象的名称。我认为命名外键EmployeeID
(或Employee_ID
可能更好)可以告诉读者这是表的ID
列Employee
。
其他一些人则更喜欢选项2,在该选项中,您将主键命名为表名,以使整个数据库中的列名相同。我明白了这一点,但是现在您无法从视觉上区分主键和外键。
另外,我认为将表名包含在列名中是多余的,因为如果您将表视为实体,而将列视为该实体的属性或属性,则将其视为的ID属性,而Employee
不是EmployeeID
员工的属性。我不走了问我的同事他什么PersonAge
或者PersonGender
是。我问他他的年龄是多少。
因此,就像我说的那样,这是一场激烈的辩论,我们将继续对此进行讨论。我有兴趣获得一些新观点。