SqlServer标识命名约定

时间:2011-11-28 14:54:06

标签: sql-server naming-conventions

我有表格小工具和表格人员

它们都包含Identity列(种子)

标识列的推荐命名约定是什么?

它“id”(对于两个表格):

Widgets.Id
Persons.Id

Widgets.WidgetId
Persons.PersonId

前者与后者相比有优点/缺点吗?

3 个答案:

答案 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列表中使用别名的需要。