Більшість людей не рекомендують EAV, і я знаю деякі причини. Однак якою є різниця між підходом до ЄВА та таким підходом?
Таблиця комп'ютер:
id, price, description
Таблиця з'єднання:
id, name (possible values: LAN, USB, HDMI, ..., all all about 10)
Таблиця connections_computer
comp_id, conn_id
Або це теж EAV? Якщо так, то яка буде нормалізованою альтернативою?
Подумайте, що я хочу виконувати такі пошукові запити:
Всі комп'ютери, що мають БІЛЬШ LAN та HDMIз'єднання У такому випадку мені потрібен атрибут 1 join / filter, коли його буде як 1 колонка / атрибут, пошук буде легким, але я маю б багато значень NULL.
Будь-яка рекомендація, як це зробити?
Відповіді:
0 для відповіді № 1Ваш приклад - простота багатьох для багатьох. В EAV ан назва атрибута це вартість колонки, а не бути ім'я колонки. Наприклад,
computer: {computer_id, attr_name, attr_value}
insert into computer (computer_id, attr_name, attr_value)
values
(1, "connection", "HDMI")
, (1, "connection", "USB")
, (1, "memory", "2 GB")
;
буде підхід EAV.
Ось приклад від ціни, яку ви платите за підхід EAV (гнучкість) в СУБД.