在不同类别的多个公司之间共享的产品--sql表设计

时间:2012-01-23 18:24:26

标签: sql sql-server sql-server-2008 database-design

如何在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(支持级别)

产品

产品编号

ProductCategoryXProduct

ProductCategoryId

产品编号

通过这种方式,我可以查询产品的所有产品类别,并按公司进行过滤,以获得其产品的特定类别结构。即使产品相同,这对另一家公司也可能有所不同。

这会覆盖吗?有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

看起来像一个很好的3NF设计,适合你所描述的。

请注意,随着数据集的增长,此设计将开始变慢(主要是由于所需的连接),因此当时机到来时,您可能希望对这些表中的某些表进行非规范化以便更快地进行读取。

答案 1 :(得分:0)

假设您需要产品属于多个类别,我认为这种结构很好。