powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как сделать лайки/дизлайки для блога в БД?
18 сообщений из 18, страница 1 из 1
Как сделать лайки/дизлайки для блога в БД?
    #40052599
stavatar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я делаю блог в котором есть как минимум две разных сущности,которые можно лайкать.
Вопрос - как правильно спроектировать таблицы?
Единственный вариант,который мне приходит - создать две разных доп таблицы связей Юзер-пост и Юзер-комментариев.
Одна с лайками для комментариев,а другая для постов,но я думаю,что это не верный подход.

Как верно это сделать?

Если что,то БД - Postgres
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40052600
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начни с обдумывания вопроса "почему у меня пост и коммент - разные сущности".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40052605
stavatar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, потому что это разные сущности.Пост и комментарий это разное
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40052607
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stavatar
Dimitry Sibiryakov, потому что это разные сущности.Пост и комментарий это разное

А комментарий к комментарию это еще одна разная?
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40052608
stavatar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat,нет,тут просто хранится ссылка у комментария на родителя.
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40052614
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stavatar,

А посмотреть как сделано - не судьба? У меня по запросу туева куча ссылок вылазит. Изучай сколько влезет, было б желание.
Очередной изобретатель велосипеда )))
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40052617
stavatar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр,я,видимо,как то не так ищу,потмоу что я не нашел решения.По крайней мере,понятного мне
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40052624
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stavatarПост и комментарий это разное

И чем же они отличаются?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40052627
stavatar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

stavatarПост и комментарий это разное

И чем же они отличаются?


Тем что комментарии могут друг на друга отвечать,а посты нет.Тем,что посты могут иметь теги,а комментарии нет.И мало ли чем еще их функциональность будет отличатся
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40052631
Агрох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stavatar, т.е. пост это комментарий с дополнительным функционалом.
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40052632
stavatar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Агрох
stavatar, т.е. пост это комментарий с дополнительным функционалом.


Да,можно сказать и так
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40052637
Агрох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stavatar, поалагаю эту мысль и пытались до тебя довести комментаторы выше.
Пост и комментарий по своему функционалу совпадают на 95% и ради этих самых 5% выделять новую таблицу с усложнением структуры БД не всегда имеет смысл.
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40052809
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агрох
stavatar, поалагаю эту мысль и пытались до тебя довести комментаторы выше.
Пост и комментарий по своему функционалу совпадают на 95% и ради этих самых 5% выделять новую таблицу с усложнением структуры БД не всегда имеет смысл.
+1.

Просто ввести тип поста: Пост/Лайк/Дизлайк/Прочее
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40071934
Кесарь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агрох
stavatar, т.е. пост это комментарий с дополнительным функционалом.


Ровно наоборот. Коммент - это вырожденный и подчинённый пост. Иначе замучаетесь логически переворачивать при проектировании и разработке.


В реальности посты первичны, а комменты подчинены и вторичны. Точно так же надо рассматривать и обобщения этих сущностей.
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40071938
Кесарь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stavatar
Я делаю блог в котором есть как минимум две разных сущности,которые можно лайкать.
Вопрос - как правильно спроектировать таблицы?
Единственный вариант,который мне приходит - создать две разных доп таблицы связей Юзер-пост и Юзер-комментариев.
Одна с лайками для комментариев,а другая для постов,но я думаю,что это не верный подход.

Как верно это сделать?

Если что,то БД - Postgres


Как уже написано выше, она таблица/тип объекта для постов и комментов.

И одна таблица для лайков. При чём любых лайков. Потому что лайк это лайк. Куда бы он не прилагался.

Если лайки будут прилагаться к разным типам сущностей, то вводите центральную таблицу сущностей (объектов). Это в будущем поможет, система будет связной. Сквозное ID по всей системе весьма удобно во многих случаях. Только не нужно центральный идентификатор делать гуидом, если есть возможность этого избежать.
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40072422
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

stavatarПост и комментарий это разное

И чем же они отличаются?

нагрузкой они отличаются в первую очередь. Потому их и разделяют, чтобы на два порядка более высоконагруженная таблица коментов не тормозила выдачу постов.
Лайки кстати тоже лучше иметь денормализованно в 2-х местах: и в своей сущности и отдельно счетчик в сущности того что лайкают. (который апдейтится асинхронно) опять же чтобы сверх-высоконагруженная сущность лайков ни на йоту не мешала выдаче постов и коментов.
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40072427
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakПотому их и разделяют, чтобы на два порядка более высоконагруженная таблица коментов не
тормозила выдачу постов.

А, у вас MyISAM. Тогда да, конечно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как сделать лайки/дизлайки для блога в БД?
    #40072434
Кесарь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durak
Dimitry Sibiryakov

пропущено...

И чем же они отличаются?

нагрузкой они отличаются в первую очередь. Потому их и разделяют, чтобы на два порядка более высоконагруженная таблица коментов не тормозила выдачу постов.
Лайки кстати тоже лучше иметь денормализованно в 2-х местах: и в своей сущности и отдельно счетчик в сущности того что лайкают. (который апдейтится асинхронно) опять же чтобы сверх-высоконагруженная сущность лайков ни на йоту не мешала выдаче постов и коментов.


Я бы сделал иначе:

Корневая таблица Сообщения (Message), в которой лежат сообщения всех типов (включая форумы, как сообщения первого уровня, нулевой уровень - это сайт). Там самая базовая инфа, служащая исключительно для опознания сущностей, их связи (и генерации и хранения сквозного ID).

К ней уже создаются добавочные таблицы для хранения дополнительных технических атрибутов, а так же собссно содержания. Вида MessageSubj и MessageLikes.

В таблице сообщений создаём поле TypeID, ссылающееся на таблицу типов сообщений. Тип smallint или даже tinyint для экономии места и убыстрения чтения. Топики-посты значит у нас будут иметь тип сообщения = 3 (0 сайт, 1 форум, 2 прикреплённая тема). Комменты соответственно 4.

А чтобы ничего не тормозило, создаём фильтрованный индекс с условием (TypeID = 3) и матвьюху, смотрящую на него.


Для чего это всё делается именно так? Для единообразия и простоты кода. Который будет со временем усложняться и наворачиваться. Например управление правами куда как проще будет делать для одной таблицы, чем для многих разных (ну если делать в разных, то получим иерархию вложенности форум-топик-коммент-лайк, отдельно "личное сообщение" и т.п. и это только навскидку).
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как сделать лайки/дизлайки для блога в БД?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]