Сейчас пишу приложение, где используется MySQL.
Имеются таблицы:
Таблица: ad_table
Поле: ad_id
Поле: image
Таблица: options
Поле: opt_id
Поле: opt_name
Поле: opt_value
В таблицу ad_table в поле image добавляются захешированные названия картинок через запятую:
5711c0e7a3c6b0de576cc8077e2f3e0e.png,
f1b3ec0cc3e96f05721b3d5f565d8fc0.png
В таблицу option добавляются в поле opt_name - название какой-либо опции, например: цвет, в поле opt_value значение этого цвета, например: красный, зеленый, синий. тоже через запятую.
красный, синий, зеленый
Теперь вопрос:
Чем плох такой способ хранения данных? Многие пишут, что это ненормальное использование реляционной бд, где нормализация и все остальные дела. Где EAV?
Стоит ли продолжать хранить данные таким способом, или разделить на несколько таблиц?
Если оно так, то поправьте меня, если я сделал неправильную архитектуру:
option - хранит в себе связь между
id name_id - id названия опции
value_id - id значения опции
option_nameidname - название
option_valueidvalue - значение
Если таким образом разделить на таблицы, то при добавлении опции придется делать 3 запроса или громоздить join что меня не радует.
Например, сначала добавляется в таблицу option_name название опции, (
нужно получить id последнего добавленного имени, чтобы записать потом его в таблицу option?), потом записывается значение в таблицу option_value (
снова нужно последний id добавленного, что меня не радует!), полученные идишники названия и значений записываем в таблицу option.
Насколько правильно такое решение?