我有表格小工具和表格人员
它们都包含Identity列(种子)
标识列的推荐命名约定是什么?
它“id
”(对于两个表格):
Widgets.Id
Persons.Id
或
Widgets.WidgetId
Persons.PersonId
前者与后者相比有优点/缺点吗?
答案 0 :(得分:6)
这是我要求冗余并拥有Thing.ThingID的一种情况 否则,当你加入
时,你必须将到处别名注意:这已经在programmers.se上执行 death and beyond 了 Why is naming a table's Primary Key column “Id” considered bad practice?
答案 1 :(得分:3)
最佳做法是以表名开头。
这将使您在SELECT
列表中加入您所指的字段时更加清晰。
这也使偶然的不良JOIN
条件成为可能,即
JOIN TableA ON ID = TableA.ID
通常,应避免跨表的重复字段名称,除非它们表示相同的数据。
答案 2 :(得分:3)
在标识列中使用表名略有多余,但我发现它有用且更具描述性,尤其是在执行外键连接时。例如,这似乎更好:
SELECT P.PersonID, P.FullName, W.WidgetID, W.WidgetName
FROM Widgets W JOIN
PersonWidgets PW ON W.WidgetsID = PW.WidgetsID JOIN
Person P ON P.PersonID = PW.PersonID
OR
SELECT P.ID as PersonID, P.FullName, W.ID as WidgetID, W.WidgetName
FROM Widgets W JOIN
PersonWidgets PW ON W.ID = PW.WidgetsID JOIN
Person P ON P.ID = PW.PersonID
第一个查询更明确,导致意外连接减少。它还消除了在SELECT列表中使用别名的需要。