У меня есть структура EAV в БД и таблицах: attribute(id,parent_id,code,name)
и value(id,entity_id,attribute_id,value)
.EAV как сохранить дополнительную ценность поля?
Я использую parent_id
для сохранения списка атрибутов. Например,
id | parent_id | code | name
1 | null | color_id | Color
2 | 1 | null | Red
3 | 1 | null | Blue
4 | 1 | null | Other
Теперь мне нужна возможность хранить разные данные для выбора определенного элемента. Это может быть один или несколько входов. Например:
Color:
(o) Red
(o) Blue
(o) Other (please specify) ______________
Как сохранить его? Создать дополнительную таблицу или может храниться с parent_id, указывающим на выбранный элемент или что-то еще?
id | parent_id | code | name
4 | 1 | null | Other
5 | 4 | other_one | First text value
6 | 4 | other_two | Second text value
Вы изобретаете XML ... :-) Чем более вы гибки, тем больше боли в шее ... Если вы придерживаетесь этой структуры, вы скоро попадете в ад ... EAV - это очень опасный подход. Иерархический EAV - это то, что я бы даже не коснулся ... – Shnugo
Так как опция «Другой» вашего примера эффективно говорит «введите что-то обычное, не связанное с материалом, который у нас есть в базе данных» - это означает исключение из правила вытаскивая из дБ. В этом исключительном случае использования я бы (лично, так что это не факт, а мнение) использует дополнительную таблицу для хранения этих входных значений пользователя. – Mjh