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