表和实体命名约定

时间:2017-07-07 20:24:07

标签: sql entity naming-conventions naming

我读过类似的问题(Relational table naming convention),但不幸的是我无法找到问题的答案。

我有产品。产品可以有图像和评论。他们是一对多的关系。

表和实体名称如下:

  • 产品(产品)
  • product_comment(ProductComment)
  • product_image(ProductImage)

产品是独立的,评论和形象取决于产品。到目前为止没问题。

但我需要将产品分类(一对多)。

类别可以独立存在,它是独立的,所以我不能使用 product_category(ProductCategory)命名(它表示产品可以有类别)。< / p>

没有任何前缀(类别(类别))的命名也不好,因为数据库中可能有其他类别(用户类别等)。

所以对我来说,唯一的解决方案是:

  • 类别(类别)
  • category_product(CategoryProduct)
  • category_product_Comment(CategoryProductComment)
  • category_product_Image(CategoryProductImage)

但我对此也不满意。它表示类别可以有产品......

非常感谢任何帮助!

谢谢!

1 个答案:

答案 0 :(得分:0)

有点晚了,但也许可以帮助别人努力命名...

考虑与实际数据库关系无关的表/实体名称可能会有所帮助。如果这种类型的“类型”仅适用于产品,那么它就是现实世界中的“产品类别”,因此命名表entityBIds是有意义的。如果您有用户的类别类型,那么您拥有的是“用户类别”,逻辑表名称将是public interface IConsumer { bool TryConsume(Product product); } public class ConcreteConsumerA : IConsumer { public bool TryConsume(Product product) { if (product is SpecificProductA a) { //consume a return true; } return false; } } 。您的产品图片和评论也是如此。

因此,在命名实体时,请尝试考虑实体是什么,而不是它与其他实体的关系。