我有一个模型,已经有几十列,将填补大部分时间。现在我需要添加可能每次都不同的字段。
最好的方法是什么?我不喜欢EAV模式。我也不喜欢有一个稀疏表的想法,特别是考虑到这些额外的属性可能会有很大的不同。
例子:
WorkOrder:
PK id
FK assigned_to
FK contractor
DATE expected_completion
DATE actual_completion
... (many more)
现在我想添加如下属性:
ep_1 (extra_property)
ep_2
ep_3
ep_4
... (many more)
这些额外的属性在不同的记录中可能会有很大的不同,而且大多数情况下它们的数量是有限的,但是没有保证。
将记录视为:
id | assigned_to | contractor | ... | ep_1 | ep_2 | ep_3 | ... | ep_n
1 | 2 | 3 | ... | XYZ | NULL | NULL | ... | 23
2 | 3 | 5 | ... | NULL | 1 | NULL | ... | NULL
3 | 2 | 1 | ... | NULL | 0 | NULL | ... | NULL
4 | 4 | 1 | ... | XYZ | NUL | NULL | ... | 45
SELECT fields FROM table WHERE ep_n > 20
和
SELECT fields FROM table WHERE ep_1='ABC'
最好的解决办法是什么?