Я разрабатываю таблицу рейтингов в MySQL. Дело в следующем:
а) Тот, кто дает оценку другому, может быть другого типа
(Администратор, Клиент, Поставщик или что-либо еще в будущем)
б) Тот, кто получает оценку от другого, может отличаться
тип (Admin, Client, Provider или что-либо еще в будущем)
в) Предоставление оценок другим происходит, когда есть заказ (представьте
Просто зайдите на сайт и закажите еду. когда они приносят тебе еду, ты
оцените их). но заказы могут быть разного рода. В моем случае порядок
означает доставку грузов. Так что я могу иметь RoadOrder, SeaOrder.
Посмотрев на вышеперечисленные вещи, я пришел к выводу, что таблицы будут такими:
1) таблица all_ratings
(Эта таблица не рассчитывает текущие рейтинги для каждого типа пользователей. Здесь 3 морфа) * 1014 *
id | from_userable_type | from_userable_id | to_userable_type | to_userable_id | orderable_type | orderable_id | rating
2) таблица рейтингов (которая рассчитывает текущий рейтинг. All_ratings просто сохраняет
любой вид рейтинга от каждого пользователя, в то время как таблица оценок имеет окончательный
рейтинг. ratingable_id и ratingable_type могут быть любыми типами пользователей)
id | quantity | current_rating | ratingable_id | ratingable_type
Таблица пользователей
id | name | email | userable_id | userable_type
Администраторы, клиенты, провайдеры (они пока выглядят одинаково)
id
стол RoadOrder
id | from_place | to_place | ...etc
Вопрос: что вы думаете? это правильная схема таблицы для этого типа сценария?