SqlServer自增字段命名规范

8

我有一个名为Widgets和一个名为Persons的表格。

它们都包含了Identity列(种子)。

那么,对于Identity列,推荐使用什么命名规范呢?

"id" (两个表格的都一样)吗:

Widgets.Id
Persons.Id

Widgets.WidgetId
Persons.PersonId

前者和后者相比有什么优缺点吗?

2
这个问题之前在程序员SE上被问过了,不幸的是我不能在那里发送它。它对于 Stack Overflow 来说太广泛了。 - Tim Post
@TimPost 你好,我还是不明白为什么你关闭了它……我只是因为有一个困惑而提出了一个问题,从未想过要引发争论…… - Royi Namir
@RoyiNamir 这从来不是一个辩论。这就是 Stack Exchange 网络的工作方式。你没问题。 - jcolebrand
@RoyiNamir 如果选择了该关闭原因,则自动应用关闭原因下的文本。这个问题很有趣,只是不适合这个网站。我们非常擅长回答那些有一个单一、技术上“最佳”的答案的问题。对于这种类型的问题,投票基本上只表示“是的,这就是我做的方式”。programmers.stackexchange.com成立的目的是为了提供一个场所,讨论现实世界中不太适合在Stack Overflow上讨论的问题。你没有做错任何事 :) - Tim Post
3个回答

6

我总是在连接表时给它们取别名,所以我不认为这会带来不便。 - Icarus
@Icarus:给取别名,这样在结果集中就不会有两个Id了。 - gbn
@gbn,当你说“alias”时,你是指在select语句中吗? - Royi Namir
@Royi Namir:是的,根据Garrett Vlieger的回答。 - gbn
@Royi Namir:我的程序员广场链接可能会有100多个投票和评论。 - gbn
显示剩余2条评论

3

最佳实践是在表名前加上前缀。

这将使在连接时更清楚地了解您在SELECT列表中引用的字段。

它还可以避免意外的错误JOIN条件,例如:

JOIN TableA ON ID = TableA.ID

通常情况下,应避免跨表重复字段名称,除非它们表示相同的数据。


意外的连接参数是一个非常好的观点。我总是在连接时为我的表设置别名,但肯定存在这种可能性。 - Icarus

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

或者

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接