如何在sql表中表示以下数据模型。
我有3个实体,company, productcategory and product
。
商业模式是公司可以拥有产品类别1-N,每个类别可以有很多产品。
诀窍是产品在不同类别的公司之间共享。产品类别不共享。每家公司都有自己的类别。
例如,
product1 belongs to category1 under company1
product1 belongs to category2 under company2
我正在考虑使用下表。下面仅显示相关的Id字段。
CompanyId
ProductCategoryId
CompanyId
ParentCategoryId(支持级别)
产品编号
ProductCategoryId
产品编号
通过这种方式,我可以查询产品的所有产品类别,并按公司进行过滤,以获得其产品的特定类别结构。即使产品相同,这对另一家公司也可能有所不同。
这会覆盖吗?有更好的方法吗?
答案 0 :(得分:2)
看起来像一个很好的3NF设计,适合你所描述的。
请注意,随着数据集的增长,此设计将开始变慢(主要是由于所需的连接),因此当时机到来时,您可能希望对这些表中的某些表进行非规范化以便更快地进行读取。
答案 1 :(得分:0)
假设您需要产品属于多个类别,我认为这种结构很好。