@examplyz

Как связать лайки и другие сущности в реляционной бд с помощью ORM Sequelize?

У меня есть несколько сущностей : Манга , Комментарий, Лайк и Дизлайк. Как их правильно связать с помощью Sequelize , что бы таблицы не хранили лишние поля.
Например я связываю Мангу и Лайки таким образом : Manga.hasMany(Like) Like.belongsTo(Manga)
и точно также связываю Комментарии и Лайки , и тогда выходит , что при добавления лайка на мангу в таблице появляеться лишнее поле comment_id : null , которое забирает драгоценную память, и наоборот при добавления лайка на комментарий . Как решить данную проблему ?
  • Вопрос задан
  • 128 просмотров
Пригласить эксперта
Ответы на вопрос 1
includedlibrary
@includedlibrary
Если поле, в данном случае comment_id, добавлено в таблицу, то в каждой строке у этого поле всегда будет значение. Есть вариант убрать поля manga_id и comment_id из таблицы с лайками и добавить два поля

object_class VARCHAR(255) NOT NULL
object_id INTEGER NOT NULL


Для связи лайка с мангой в поле object_class надо вставлять "Manga", а в поле object_id - id манги. Для комментариев соответственно вставлять "Comment" и id комментария. Плюсом данного подхода является то, что при добавлении новой сущности, которую можно лайкать, в таблице с лайками ничего менять не придётся. А главный минус - невозможность использовать внешние ключи.

Есть ещё вариант создать отдельные таблицы для лайков манги и лайков комментариев.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы