Agatov
Новичок
Архитектурный вопрос ( произвольное кол-во доп. полей к записи )
Разрабатываю каталог объявлений. Клиент хочет, чтобы к объяве в конкретной категории можно было помимо стандартных полей ("заголовок", "тип предложения", "цена" и.т.п.) пришить ещё произвольное количество полей, списков, чекбоксов и.т.п. Потом эти данные будут выводится при просмотре объявления.
сразу напросилось такое решение - сделать дополнительную таблицу вида "id/category_id/field_type/". и таблицу со значениями "id/category_id/id объявления/field_id/значение".
Теперь предположим, что дополнительных полей у нас так штук по 5-20 в зависимости от категории. Получается что при вставке/обновлении значений в бд это ещё + 5-20 запросов. Тематика сайта, правда, такова, что вставок будет не так уж и много и на это дело можно, скрестив пальцы, закрыть глаза. Но что, если потом клиенту понадобится организовать поиск по этим "доп" полям или выводить их в общей таблице с объявлениями?
Вобщем вопрос сообществу форума - допустим ли такой подход, или же лучше поискать другой? Какие ещё варианты решения существуют?
Разрабатываю каталог объявлений. Клиент хочет, чтобы к объяве в конкретной категории можно было помимо стандартных полей ("заголовок", "тип предложения", "цена" и.т.п.) пришить ещё произвольное количество полей, списков, чекбоксов и.т.п. Потом эти данные будут выводится при просмотре объявления.
сразу напросилось такое решение - сделать дополнительную таблицу вида "id/category_id/field_type/". и таблицу со значениями "id/category_id/id объявления/field_id/значение".
Теперь предположим, что дополнительных полей у нас так штук по 5-20 в зависимости от категории. Получается что при вставке/обновлении значений в бд это ещё + 5-20 запросов. Тематика сайта, правда, такова, что вставок будет не так уж и много и на это дело можно, скрестив пальцы, закрыть глаза. Но что, если потом клиенту понадобится организовать поиск по этим "доп" полям или выводить их в общей таблице с объявлениями?
Вобщем вопрос сообществу форума - допустим ли такой подход, или же лучше поискать другой? Какие ещё варианты решения существуют?