Какую структуру данных сделать для доски объявлений?
Всем привет! Пытаюсь продумать структуру БД для доски объявлений, но проблема состоит в разных полях, которые индивидуальны для каждого раздела.
Как правило в каждом разделе доски объявлений есть свои поля для заполнения, например:
для раздела авто нужны примерно такие поля (марка, двигатель, пробег, цвет и т.д.).
для одежды нужны: размер, фасон, фирма и т.д.
Тоесть совершенно разные поля. Как это реализуется при добавлении и отображении объявлений?
У меня вариант такой...
Для разделов делаем таблицу в БД 'category'
Для общих данных типа: "дата публикации, название объявления, категории объявления и т.д." будет таблица 'ad'
Названия полей для заполнения будут храниться в таблице 'params'
Четвертая таблица будет связывать 'category' и 'params'. Точнее в ней будут указываться id полей из 'params' которые нужно отображать для каждой 'category'.
А пятая таблица `params_values` будет хранить заполненные данные по полям из 'params' где будет `id_category`, `id_params`, `value`.
При выводе объявления нужно будет выбрать объявления из 'ad' далее выбрать все записи из таблицы `params_values` где `id_category` равно id категории из таблицы 'ad' ну и дальше уже как обычно - вывод полученных данных.
Правильное ли это решение?
Извиняюсь за такое описание вопроса! Старался описать понятнее, но вот так получилось....
Для правильного вопроса надо знать половину ответа
Это классическое решение. Обычно кроме названия параметру задают какой-либо тип (число, сторока, один-из-списка, несколько-из-списка), граничные значения или список допустимых значений. В связке категория-параметр ещё указывают признак обязательности параметра. А вот param_values обычно сразу привязывают не к категории, а к конкретному объекту, в вашем случае - ad_id вместо category_id.