我有一个模型,它已经有几十个列,大部分时间都会被填充。现在我需要添加每次可能不同的字段。
最好的方法是什么?我不喜欢 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'
最好的解决方案是什么?