数据库设计 – 是否为不同的产品类型创建单独的表?

前端之家收集整理的这篇文章主要介绍了数据库设计 – 是否为不同的产品类型创建单独的表?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在设计数据库,我对我最初的设计决策有了第二个想法……

产品类型如下……型号,零件,更换零件套件和选件.

选项A(第一个设计):
我计划为上述产品类型提供单独的表格.我会说每个表中大约75%的字段是相同的.

我创建了每个产品类型作为单独的表,因为我需要在它们之间创建关联.例如,模型可以有很多选项,选项可以有很多模型.一个选项也可以有很多部分,一个部分可以有很多选项…等等……

选项B:
我可以创建一个名为Product的表,而不是单独的表,该表包含模型,替换零件包和选项.我可以有一个名为type的字段来区分模型,选项等.我认为一个缺点是某些产品类型永远不会使用几个字段(左边为空).我猜这是“非最佳实践”会发挥作用的地方..

选项B将大大降低数据库设计的复杂性.在提取查询数据时,我也不必担心引用一堆表…

解决方法

如果这是我的设计决定,我可能会选择更多的“选项C”(修改后的选项a).

首先,为什么不’选项B’:

首先,我喜欢每个产品都有它自己的桌子提供的清晰度.如果它是一个带有字段的大表来确定类型,那么关系就不那么清楚了.

另一方面,索引策略总是要求列出类型字段.由于它只有4种类型,索引基数极低(SELECT * FROM product_table WHERE type =’X’基本上都在进行全表扫描)

选项C.

>创建一个父表,该表仅包含所有类型共享的列
>使用各自的列创建每个产品类型作为自己的表,还有一个额外的:指向父表的链接
>创建每个“链接”表:Product_Option,Model_option等,其中包含指向相应键的链接.
>对于具有互惠链接的人(MODEL_OPTION,OPTION_MODEL),请继续创建这些表.对于任何查看它的人来说,这将为您的联接增加清晰度.

缺点是确保在更新/删除内容时避免孤立的复杂性,以及最初设计使用这些表的查询.

原文链接:https://www.f2er.com/mssql/80649.html

猜你在找的MsSQL相关文章