学术界认为,表名应该是存储其属性的实体的单数。

我不喜欢任何需要在名称周围加方括号的T-SQL,但我已经将一个Users表重命名为单数,这永远意味着使用该表的人有时不得不使用括号。

我的直觉是,保持单数更正确,但我的直觉也是,括号表示不需要的东西,比如列名中有空格等。

我该留下还是该走?


当前回答

表格:复数

用户表中列出了多个用户。

型号:单数

可以从用户表中选择单个用户。

控制器:复数

http://myapp.com/users将列出多个用户。

无论如何,这是我的看法。

其他回答

我更喜欢使用未选择的名词,它在英语中恰好是单数。

影响表名的数量会导致正交问题(正如许多其他答案所示),但选择这样做是因为表通常包含多行,在语义上也充满了漏洞。如果我们考虑一种基于大小写对名词进行屈折的语言(就像大多数语言一样),这一点就更明显了:

既然我们通常都在处理行,为什么不把名字放在宾格中呢?如果我们有一个写得比读得多的表,为什么不把这个名字放在与格中呢?这是一张桌子,为什么不使用属格呢?我们不会这样做,因为表被定义为一个抽象容器,无论其状态或用途如何,它都存在。在没有确切和绝对的语义原因的情况下影响名词是在胡言乱语。

使用未选择的名词是简单、逻辑、规则和语言独立的。

我也会使用复数形式,对于前面提到的用户困境,我们确实采用了方括号方法。

我们这样做是为了在数据库体系结构和应用程序体系结构之间提供一致性,基本上理解为用户表是用户值的集合,就像代码工件中的用户集合是用户对象的集合一样。

让我们的数据团队和开发人员使用相同的概念语言(尽管不总是相同的对象名称),可以更容易地在他们之间传达想法。

这可能有点多余,但我建议谨慎行事。重命名表不一定是坏事,但标准化就是这样;一个标准——这个数据库可能已经被“标准化”了,无论多么糟糕:)——我建议一致性是一个更好的目标,因为这个数据库已经存在,而且它可能不仅仅由两个表组成。

除非您能够标准化整个数据库,或者至少计划为此目的而努力,否则我怀疑表名只是冰山一角,专注于手头的任务,忍受命名不好的对象的痛苦,可能符合您的最大利益--

实际一致性有时是最佳标准…:)

my2内容---

指导方针确实如此。这不是“板上钉钉”,这就是为什么你可以选择忽略它们。

我想说,使用多个表名在逻辑上更直观。表毕竟是实体的集合。除了提到的其他选项,我通常在表名上看到前缀。。。

tbl用户tbl此待定tbl其他

我并不是建议这样做,我也看到表名中使用了很多空格,我对此深恶痛绝。我甚至遇到过带有白痴字符的域名,比如?好像说这个字段回答了一个问题。

如果您使用对象关系映射工具,或者将来会使用,我建议您使用Singular。

一些工具(如LLBLGen)可以自动更正多个名称(如用户到用户),而无需更改表名本身。为什么这很重要?因为当它被映射时,你希望它看起来像User.Name而不是User.Name,或者更糟糕的是,我的一些旧数据库表命名为tblUsers.strName,这在代码中令人困惑。

我的新经验法则是判断它转换成对象后的外观。

我发现一个不适合我使用的新命名的表是UsersInRoles。但总会有一些例外情况,即使在这种情况下,它看起来也很像UsersInRoles.Username。