Делаю форум, есть несколько видов контента: топик, пост, галерея, фото галереи. Не уверен как правильно сделать систему рейтинга(лайк и дизлайк) для каждого вида контента, при этом на главной странице нужно выводить лучшее по контенту за день, за месяц и за все время(у кого набранный рейтинг за эти периоды лучший) Например, лучшие топики за день - это когда у поста значение лайки минус дизлайки за день больше остальных топиков.
Думаю сделать так: для каждого контента сделать таблицу содержащая историю изменения рейтинга, с полями: имя_контента_id(например, topic_id, photo_id), value(как изменился рейтинг: 1 как лайк или -1 как дизлайк)
Получатся такие таблицы: rating_topic(topic_id, value), rating_post(post_id, value), rating_galery(galery_id, value), rating_photo(photo_id, value) И связать с таблицами топиков, постов и т.д. через hasMany. Получать лучшее за сегодня или месяц в зависимости от created_at.
Мне кажется можно сделать проще, не создавая так много таблиц, но запутался в отношениях. Буду очень благодарен за помощь!
Необязательно делать так много таблиц. Можно обойтись и одной. Например rating_content. И связывать ваши сущности (топик, пост, галерея и т.д) через MorphTo отношения.
В таблице будет например два поля - content_id и content_type. Как раз в content_type и будет задаваться тип контента.
Почитайте про полиморфные отношения и сразу поймете.
Тут ваш подход зависит от масштаба. Если закладывать голоса заранее на биг дата, то лучше много таблиц. Не имеет смысл хранить терабайты пустых голосов вместе с основной таблицей(кучу false или none, которые приедут к тормозам при голосовании). С той же точки зрения если объединить в одну таблицу может быть ситуация(кучу false или none,пару миллионов). Так что с точки зрения производительности маленькие сущности лучше и запрашиваются они там где нужны.
Я так понял вы просто путаетесь, однако есть инструменты для работы с базой например можете использовать это https://erdplus.com/, в mysql workbench есть схемы тоже. Советую подкачать скилл MySql тут https://ru.coursera.org/learn/analytics-mysql
Виртуальный выделенный сервер (VDS) становится отличным выбором
Здравствуйте! Есть лендинг пока на тестовом домене http://elenadvabeget
Имеется массив с ключами идущими по порядкуМне необходимо создать новый массив в каждой строке которого будет по несколько значений предыдущего...