许多表之间的多对多?

Osc*_*car 3 mysql database-design eav subtypes many-to-many

在此处输入图片说明


TL;DR:我如何在这么多表之间建立多对多关系,它是否可行/推荐?

  • 每种体型都有自己的表格
  • 每个车身类型表中的每辆车都可以有几个特征

正如您从我的“架构”中看到的,每辆车都可以有多个功能,但我需要将功能表连接到几个车身类型表(多对多关系)。我已经考虑了几天,但我仍然不确定如何实现这一点。

为什么所有体型都在单独的表格中?这似乎遵循规范化规则,它还应该加快查询速度,因为我永远不必一次查询多种主体类型。

有可能还是我应该重新考虑一下?我应该制作另一张关于车身类型的表格并将所有汽车组合起来吗?我希望最多有 100 万个条目(所有身体类型相结合)。读取将比写入多得多。

Ser*_*erg 5

为 Sedan、SUV 等子类型创建一个超类型实体 CarBody,并将所有一般信息移动到该超类型。您的 MM 关系将在 CarBody 和 Feature 之间。请参阅此主题以了解在数据建模Supertype/Subtype 中决定类别的子类型:完全不相交或不完全重叠

  • 通常,DBMS 针对多表场景中的大量读取数据进行了高度优化。经常请求的数据将在内存中兑现,加上适当的索引将使加入多个表非常快。 (2认同)