数据库表命名,复数或单数

时间:2010-07-15 09:18:34

标签: database visual-studio

命名数据库的表和模式时,最好使用单数或复数。 例如。应该是客户还是客户?

当命名应该是资本,如客户或客户?有关命名的最佳做法吗?

5 个答案:

答案 0 :(得分:21)

这个问题需要一场宗教战争。

我毫不怀疑它应该是复数,因为......

  • 表格是行的集合。
  • SQL语法变得更自然 - SELECT * FROM Customers而不是SELECT * FROM Customer
  • 与OOP的比喻 - 您有一个班级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