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

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

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

我该留下还是该走?


当前回答

如果你去那里会有麻烦,但如果你留下来,麻烦就会加倍。

我宁愿违背一些假定的非复数命名惯例,也不愿用可能是保留词的名称来命名我的表。

其他回答

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

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

tbl用户tbl此待定tbl其他

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

可能的替代方案:

重命名表SystemUser使用括号保留多个表名。

IMO使用括号从技术上来说是最安全的方法,尽管它有点麻烦。IMO是一个6个,另一个6打,您的解决方案实际上只是归结为个人/团队偏好。

就“标准”而言,其他人给出了相当好的答案,但我只是想补充一下。。。是否可能“用户”(或“用户”)实际上不是表中数据的完整描述?并不是说你应该对表名和特定性太着迷,但也许像“Widget_Users”(其中“Widget”是应用程序或网站的名称)这样的东西会更合适。

我不喜欢复数表名,因为英语中的一些名词是不可数的(水、汤、现金),或者当你使其可数时,其含义会发生变化(鸡vs鸡;肉vs鸟)。我也不喜欢使用表名或列名的缩写,因为这样做会给已经陡峭的学习曲线增加额外的斜率。

具有讽刺意味的是,我可能会将User作为一个例外,并将其称为User,因为User(Transac SQL),因为如果不需要的话,我也不喜欢在表周围使用括号。

我还喜欢将所有ID列命名为ID,而不是ChickenId或ChickenId(复数个家伙对此做什么?)。

这一切都是因为我对数据库系统没有适当的尊重,我只是在重新应用OO命名约定中的一个技巧,比如Java的习惯和懒惰。我希望有更好的IDE支持复杂的SQL。

没有要求表名为单数的“约定”。例如,我们在一个评级过程使用的数据库中有一个名为“REJECTS”的表,其中包含了一次运行程序时被拒绝的记录,我看不出任何理由不使用复数形式来表示该表(将其命名为“REJECT”会很有趣,或者过于乐观)。关于另一个问题(引号),它取决于SQL方言。Oracle不要求在表名周围加引号。