数据库设计:如何避免EAV?

时间:2011-05-10 04:57:22

标签: mysql sql database-design data-modeling

  

可能重复:
  Database Design: to EAV or not to EAV?

我在模拟车辆信息。车辆可以具有0个或更多个“设备”(例如发动机,车轮,扰流板,CD播放器等)。设备可以有0个或更多“属性”(例如发动机的“燃料类型”可能是“柴油”)。

我事先并不知道这些设备将会是什么(它们将由用户定义),更不用说这些未知设备的属性。

所以,现在诱惑是我使用EAV。我走错了路吗?我担心我必须做这样的事情:找到所有燃料类型都是柴油等的车辆。听起来很痛苦。

如果需要,是否有其他方法的建议?

1 个答案:

答案 0 :(得分:0)

经验法则是:

  1. 如果一个键/值对可能是where子句的一部分或通过sql操作,它可能应该是表中的适当类型列而不是eav存储。

  2. 如果经常组合多个键/值对,它们可能属于一个单独的表。