Подскажите по структуре БД

Тема в разделе "Базы данных", создана пользователем danneo, 14 дек 2015.

Модераторы: latteo
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    Типа количественный рейтинг.
    У объекта нужно оценить несколько параметров, например, уровень отделки, уровень цены, дизайн и т.д. Набор параметров меняется в зависимости от категории (раздела сайта).
    На странице объекта выводится его набор параметров, а также результаты голосов, типа, проголосовало 15 человек, за отделку собралось 3,5 баллов, за цену 3,7 баллов, а за дизайн 4,5 баллов (сумма баллов / кол-во оценок).
    Не могу придумать, как это все "организовать".
     
  2. javx

    javx

    Регистр.:
    28 авг 2015
    Сообщения:
    527
    Симпатии:
    244
    Если сложно в одной таблице уместить, можешь под каждую оценку отдельные таблицы делать, которые будут относится к объекту.
     
  3. Vallium

    Vallium Постоялец

    Регистр.:
    22 авг 2014
    Сообщения:
    142
    Симпатии:
    11
    для каждого параметра хранить общую сумму и количество голосов. можно во внешней таблице с кроссированием по айди объекта
     
  4. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.445
    Симпатии:
    113
    Например, на один объект 4-7 параметров. Категорий объектов - 40-50. Итого 350 таблиц?

    Мало чего понятно без названий полей и таблиц.
    Я так понял:
    tbl_parametres (id, name, id_cat)
    tbl_result (id, id_param, summ, count, id_object)
    Правильно?
    Получается вроде не много: 2000 объектов * 7 параметров = 14000 записей.

    У меня еще такая мысля:
    сохранять все в поле объекта, как сериализованный массив: id_param, средний балл, кол-во голосов. А при голосовании брать эти параметры в массив и считать новые значения.

    Какой вариант удобнее?

    И еще вопрос. Как быть, когда появляются новые параметры? Ведь значения по ним будут пустые - 0 / 30 голосов. Или одна оценка 5, разделенная на кол-во голосов (30), не есть правильно, т.к. за этот параметр проголосовали всего 1 раз - 5/1, а не 5/30.
     
  5. javx

    javx

    Регистр.:
    28 авг 2015
    Сообщения:
    527
    Симпатии:
    244
    Например, на один объект 4-7 параметров. Категорий объектов - 40-50. Итого 350 таблиц?
    -----
    нет, итого 4-7 таблиц
    _______
    И еще вопрос. Как быть, когда появляются новые параметры? Ведь значения по ним будут пустые - 0 / 30 голосов. Или одна оценка 5,разделенная на кол-во голосов (30), не есть правильно, т.к. за этот параметр проголосовали всего 1 раз - 5/1, а не 5/30.

    нихрена не понял, какие еще 30 голосов, в чем вообще проблема?
     
  6. imba2la

    imba2la Постоялец

    Регистр.:
    1 май 2015
    Сообщения:
    68
    Симпатии:
    91
    Структура примерно такая


    Запрос примерно такой, в нем можно сразу рассчитать рейтинг и т д.
    Код:
    SELECT p.*, fp.*, (fp.feature_value / fp.feature_count) as `rate`
    FROM product p
    LEFT JOIN feature_category fc ON (fc.id_category = p.id_category)
    LEFT JOIN feature f ON (f.id_feature = fc.id_feature)
    LEFT JOIN feature_product fp ON (fp.id_product = p.id_product AND f.id_feature = fp.id_feature)
    WHERE p.id_product = NNN;
    
     
    Последнее редактирование: 15 дек 2015