我正在设计数据库,我对我最初的设计决策有了第二个想法……
产品类型如下……型号,零件,更换零件套件和选件.
选项A(第一个设计):
我计划为上述产品类型提供单独的表格.我会说每个表中大约75%的字段是相同的.
我创建了每个产品类型作为单独的表,因为我需要在它们之间创建关联.例如,模型可以有很多选项,选项可以有很多模型.一个选项也可以有很多部分,一个部分可以有很多选项…等等……
选项B:
我可以创建一个名为Product的表,而不是单独的表,该表包含模型,替换零件包和选项.我可以有一个名为type的字段来区分模型,选项等.我认为一个缺点是某些产品类型永远不会使用几个字段(左边为空).我猜这是“非最佳实践”会发挥作用的地方..
解决方法
如果这是我的设计决定,我可能会选择更多的“选项C”(修改后的选项a).
首先,为什么不’选项B’:
首先,我喜欢每个产品都有它自己的桌子提供的清晰度.如果它是一个带有字段的大表来确定类型,那么关系就不那么清楚了.
另一方面,索引策略总是要求列出类型字段.由于它只有4种类型,索引基数极低(SELECT * FROM product_table WHERE type =’X’基本上都在进行全表扫描)
选项C.
>创建一个父表,该表仅包含所有类型共享的列
>使用各自的列创建每个产品类型作为自己的表,还有一个额外的:指向父表的链接
>创建每个“链接”表:Product_Option,Model_option等,其中包含指向相应键的链接.
>对于具有互惠链接的人(MODEL_OPTION,OPTION_MODEL),请继续创建这些表.对于任何查看它的人来说,这将为您的联接增加清晰度.