У меня есть модель, в которой уже есть пара десятков столбцов, которые будут заполняться большую часть времени. Теперь мне нужно добавить поля, которые могут каждый раз отличаться.
каков наилучший подход? Мне не нравится шаблон 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'
Какое лучшее решение для этого?