学术界认为,表名应该是存储其属性的实体的单数。
我不喜欢任何需要在名称周围加方括号的T-SQL,但我已经将一个Users表重命名为单数,这永远意味着使用该表的人有时不得不使用括号。
我的直觉是,保持单数更正确,但我的直觉也是,括号表示不需要的东西,比如列名中有空格等。
我该留下还是该走?
学术界认为,表名应该是存储其属性的实体的单数。
我不喜欢任何需要在名称周围加方括号的T-SQL,但我已经将一个Users表重命名为单数,这永远意味着使用该表的人有时不得不使用括号。
我的直觉是,保持单数更正确,但我的直觉也是,括号表示不需要的东西,比如列名中有空格等。
我该留下还是该走?
当前回答
没有要求表名为单数的“约定”。例如,我们在一个评级过程使用的数据库中有一个名为“REJECTS”的表,其中包含了一次运行程序时被拒绝的记录,我看不出任何理由不使用复数形式来表示该表(将其命名为“REJECT”会很有趣,或者过于乐观)。关于另一个问题(引号),它取决于SQL方言。Oracle不要求在表名周围加引号。
其他回答
我曾经在User表中使用过“Dude”——同样短的字符数,与关键字没有冲突,仍然是对普通人的引用。如果我不担心那些可能看到代码的愚蠢的人,我会一直这样做。
TABLE名称是表结构的一个定义。VIEW或QUERY名称是(一个或多个)表的视图或查询的一个定义。表格、视图或查询可能包含以下内容之一:
0条记录1条记录许多记录。
你到底为什么要在一个对象名称的末尾加一个“s”?将“s”放在对象名称的末尾,表示什么意思?
如果要区分,请添加“_tbl”。视图是“_vew”(而不是愚蠢的“_v”约定)。
最少3个字符的后缀-这会使讨论停止。
表是一个DB对象,与其他对象没有区别。
保存3个字符只会使意思清晰。
红色;-)
我在之前的任何回答中都没有看到这一点。许多程序员在处理表时没有正式的定义。我们经常以“记录”或“行”的形式直观地交流。然而,除了一些非规范化关系的例外,表通常被设计为使得非键属性和键之间的关系构成集合论函数。
函数可以定义为两个集合之间的叉积的子集,其中键集合的每个元素在映射中最多出现一次。因此,从这个角度产生的术语往往是单数。在涉及函数的其他数学和计算理论(例如代数和lambda演算)中,人们可以看到相同的单数(或至少是非复数)约定。
如果您使用对象关系映射工具,或者将来会使用,我建议您使用Singular。
一些工具(如LLBLGen)可以自动更正多个名称(如用户到用户),而无需更改表名本身。为什么这很重要?因为当它被映射时,你希望它看起来像User.Name而不是User.Name,或者更糟糕的是,我的一些旧数据库表命名为tblUsers.strName,这在代码中令人困惑。
我的新经验法则是判断它转换成对象后的外观。
我发现一个不适合我使用的新命名的表是UsersInRoles。但总会有一些例外情况,即使在这种情况下,它看起来也很像UsersInRoles.Username。
我总是使用单数,因为这就是我所学到的。然而,在最近创建一个新的模式时,这是很长一段时间以来的第一次,我积极地决定保持这种惯例,因为。。。它更短。对我来说,在每个表名的末尾添加“s”和在每个表的前面添加“tbl_”一样无用。