База данных MySQL; лучшая схема - PullRequest
0 голосов
/ 02 декабря 2009

У меня есть вопрос о схеме базы данных для определенного сайта, где люди могут продавать и покупать вещи.

Когда кто-то добавляет объявление в базу данных, он выбирает категорию и заполняет фильтры, относящиеся к выбранной категории, поэтому любой может легко найти свое объявление, просмотрев категорию и выбрав фильтры, например:

[блютуз] да

[камера] 3 - 5 мегапикселей.

и так далее

Как лучше всего хранить эти фильтры в базе данных? Это то, что я до сих пор:

Схема http://img98.imageshack.us/img98/5089/database2.jpg

Это просто идея, но она никогда не отправит объявления со значением фильтра "мегапиксели" в диапазоне от 3 до 5, поскольку filter_value имеет тип VARCHAR.

.

Ответы [ 3 ]

0 голосов
/ 02 декабря 2009

По моему мнению, дизайн работает довольно хорошо, мне любопытно, почему вы включили дополнительное поле идентификатора в таблицу соединений, например, между объявлениями и категориями. Я думаю, что вы могли бы обойтись без них. Дизайн в целом довольно хорош, потому что он позволяет вам вносить изменения в базовые таблицы, например, в рекламу.

Другая вещь Что такое filter_value? и почему он не может войти в таблицу фильтров?

0 голосов
/ 02 декабря 2009

Рассматривали ли вы дополнительную таблицу filter_value_list с id столбцов, filter_id и значением? Эта таблица будет содержать список ответов VARCHAR, которые будут предоставляться пользователю в форме раскрывающегося списка для каждого фильтра, связанного с категорией размещаемого объявления.

Для фильтра «Bluetooth» возможны следующие значения: «Да» и «Нет». Для фильтра «Камера» возможны следующие значения: «Менее 1 мегапикселя», «1 или 2 мегапикселя», «3–5 мегапикселей», «5–10 мегапикселей», «более 10 мегапикселей» планирование будущих технологий здесь).

Преимущества:

  1. Пользователь выбирает, а не типы, свой ответ.

  2. Каждый фильтр гарантированно понимает ваша система.

  3. Согласованность всех рекламных объявлений.

  4. Список возможных значений также можно использовать на боковой панели «Добавить / удалить фильтры», как вы видите на многих сайтах в наши дни.

0 голосов
/ 02 декабря 2009

Я бы сделал с таблицами для:

  • объявления
  • имена фильтров (категория - это только один из фильтров)
  • значения фильтра
  • связь между объявлением и значениями фильтра

Храните его так, как вам нравится, но для эффективного запроса, основанного на этих фильтрах, установите Solr и используйте фасетный поиск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...