学术界认为表名应该是他们存储属性的实体的单数。
我不喜欢任何需要方括号的 T-SQL,但是我已经将一个Users
表重命名为单数,永远判断那些使用表的人有时必须使用括号。
我的直觉是,保持单数是更正确的,但我的直觉也是括号表示不受欢迎的人,如列名,其中有空格等。
我应该走还是留?
我有同样的问题,在阅读完这里的所有答案后,我肯定会留在 SINGULAR,原因:
原因 1 (概念)。你可以想到包含苹果的包如 “AppleBag”,如果包含 0,1 或者 100 万个苹果没关系,它总是相同的包。表只是容器,表名必须描述它包含的内容,而不是它包含的数据量。另外,复数概念更多地是关于口语(实际上确定是否存在一个或多个)。
原因 2 。 (方便)。与复数名称相比,更容易出现奇异名称。对象可以具有不规则的复数或者根本不具有复数,但是总是具有单数(除了新闻之外的少数例外)。
原因 3 。 (审美和秩序)。特别是在主 - 详细信息场景中,这更好地读取,更好地按名称对齐,并且具有更多逻辑顺序(Master first,Detail second):
相比:
原因 4 (简单)。总而言之,表名,主键,关系,实体类...... 最好只知道一个名称(单数)而不是两个(单数类,复数表,奇异字段,单数 - 复数主 - 细节.. 。)
Customer
Customer.CustomerID
CustomerAddress
public Class Customer {...}
SELECT FROM Customer WHERE CustomerID = 100
一旦您知道自己正在处理 “客户”,就可以确定您将使用相同的单词来满足您的所有数据库交互需求。
原因 5 。 (全球化)。世界变得越来越小,你可能拥有一个不同国籍的团队,而不是每个人都有英语作为母语。非本地英语程序员更容易想到 “存储库” 而不是 “存储库” 或 “状态” 而不是 “状态”。具有单一名称可以减少错别字导致的错误,通过不必考虑“是孩子还是孩子?” 来节省时间,从而提高生产率。
原因 6 。 (为什么不?)。它甚至可以节省您的写作时间,节省您的磁盘空间,甚至可以让您的电脑键盘持续更长时间!
SELECT Customer.CustomerName FROM Customer WHERE Customer.CustomerID = 100
SELECT Customers.CustomerName FROM Customers WHERE Customers.CustomerID = 100
你已经保存了 3 个字母,3 个字节,3 个额外的键盘点击:)
最后,您可以将那些与保留名称混淆的名称命名为:
或使用臭名昭着的方括号 [用户]
如果您使用对象关系映射工具,或将来我建议使用Singular 。
像 LLBLGen 这样的工具可以自动更正多个名称,例如用户到用户,而无需更改表名本身。为什么这很重要?因为当它被映射时你希望它看起来像 User.Name 而不是 Users.Name,或者更糟糕的是我的一些旧数据库表命名 tblUsers.strName,这在代码中只是令人困惑。
我的新经验法则是判断一旦它被转换成对象后它的外观。
我找到的一个表不适合我使用的新命名是 UsersInRoles。但总会有少数例外,即使在这种情况下它看起来也很好,如 UsersInRoles.Username。
就 “标准” 而言,其他人已给出了相当不错的答案,但我只想添加这个......“用户”(或 “用户”)是否可能实际上并不是表中所含数据的完整描述?并不是说你应该对表名和特异性过于疯狂,但也许类似 “Widget_Users”(其中 “Widget” 是你的应用程序或网站的名称)会更合适。