命名数据库的表和模式时,最好使用单数或复数。 例如。应该是客户还是客户?
当命名应该是资本,如客户或客户?有关命名的最佳做法吗?
答案 0 :(得分:21)
这个问题需要一场宗教战争。
我毫不怀疑它应该是复数,因为......
SELECT * FROM Customers
而不是SELECT * FROM Customer
。Customer
以及一个名为Customers
的列表或其他客户。SELECT * FROM Customers AS Customer WHERE Customer.FirstName = 'John'
- Customers
表示整个表格,而Customer
表示当前行。否定的事情
在开发过程中,必须在单数和复数之间切换几次。您可以从概念模型开始 - 例如实体关系模型 - 其中自然选择是命名实体Customer
。在此模型中,您将生成一个数据库,并且必须复制该名称才能获得Customers
表。最后,你选择你喜欢的O / R映射器,它必须再次单独命名以获得一个名为Customer
的类。
如果你必须手动执行此操作,因为该工具缺乏支持(例如.NET 4.0之前的EntityFramework),保持表名称为单数可能是一个合理的选择,因此得到类Customer
而不是Customers
无需手动更改。
答案 1 :(得分:7)
单数命名。
所有关于元组,而不是表格,元组是一个客户,而不是客户。我也更喜欢在较低的情况下命名,但那是无缘无故的,我只是在学校里学到它。
最后,正如其他人所说,这更多是一种偏好问题。比选择更重要的是使用复数还是单数是为了保持一致并为所有表格做同样的方式 - 如果你混合了羽毛和单数命名,那真是一团糟。答案 2 :(得分:6)
这几乎是一个偏好问题
答案 3 :(得分:4)
您选择recipe.ingredient
还是recipes.ingredient
?
...或者您从ingredient
选择recipes
而不是ingredient
中的recipe
。
您是选择recipe.ingredient
列表还是recipes.ingredient
列表?
...或者您从ingredient
中选择recipes
列表而不是ingredient
中的recipe
列表?
我认为一致性比公约本身更重要。就个人而言,我更喜欢单一的小写表名,但我不会强烈捍卫这种选择。
答案 4 :(得分:0)
我的选择是Singular和TitleCase:)
客户是一个实体。表是多个实体的逻辑集合。所以复数是首选。
对于表名,pascal case更好。即,CustomerMaster。
最好使用tblCustomerMaster等前缀。
如果您使用组名作为前缀,请使用大写字母,例如 NEWCustomer,OLDCustomer