【问题标题】:Products shared among multiple companies under different categories - sql table design不同类别下多个公司共享的产品——sql表设计
【发布时间】:2012-01-23 18:24:26
【问题描述】:

如何在 sql 表中表示以下数据模型。

我有 3 个实体,company, productcategory and product

商业模式是公司可以有产品类别1-N,每个类别可以有很多产品。

诀窍在于不同类别的公司之间共享产品。产品类别不共享。每个公司都有自己的类别。

例如,

product1 belongs to category1 under company1

product1 belongs to category2 under company2

我正在考虑使用以下表格。下面仅显示相关的 ID 字段。

公司

公司编号

产品类别

ProductCategoryId

公司编号

ParentCategoryId(支持级别)

产品

产品编号

ProductCategoryXProduct

ProductCategoryId

产品编号

这样我可以查询产品的所有产品类别并按公司过滤以获得其产品的特定类别结构。即使产品相同,另一家公司的情况也可能不同。

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

【问题讨论】:

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


    【解决方案1】:

    看起来不错的3NF 设计符合您的描述。

    请注意,随着数据集的增长,这种设计会开始变慢(主要是由于需要连接),所以到时候您可能希望对其中一些表进行非规范化以加快读取速度。

    【讨论】:

    • 我没有完全理解您发送的链接。 3NF 与我上面描述的模型不同吗?
    • @AlexJ - 不要出汗。我是说您的设计是有效的第三范式设计。我建议你阅读不同的范式。
    • 好的,会的。为什么说随着数据的增长这会变慢。 productcategoryXproduct 只有一个额外的连接,它只包含 id。如果我必须进行非规范化(正如您在稍后阶段提到的),您建议我如何做。
    • @AlexJ - 我说的是数百万行,这只是需要加入大量数据的结果。至于怎么做……每个案例都是独一无二的。这取决于应用程序及其需要的数据。
    • 我过去处理过数百万行。一些好的索引应该可以处理只读查询,希望:)
    【解决方案2】:

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

    【讨论】:

    • 是的,产品将属于多个类别(在不同的公司下)。在一家公司下,它只属于一个类别。
    猜你喜欢
    • 2016-05-03
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 2014-10-22
    • 1970-01-01
    • 2012-03-14
    相关资源
    最近更新 更多