Сообщения, комментарии, ответы и лайки схемы базы данных - PullRequest
0 голосов
/ 09 марта 2019

У меня есть сайт, где пользователи могут комментировать сообщения или отвечать на комментарии. Пользователь также может понравиться ответы или комментарии. Однако в таблице ответов есть еще одно поле с именем reply_to. Вот моя текущая схема:

Comment
id
user (foreign key)
post (foreign key)
comment

Reply
id
user (foreign key)
reply_to (who the user is replying to)
comment (foreign key)
reply

CommentLike (Table that shows which user liked which comments)
id
comment (foreign key)
user (foreign key)
like (1 = likes, 0 = dislikes)

ReplyLike (Table that shows which user liked which replies)
id
reply (foreign key)
user (foreign key)
like (1 = likes, 0 = dislikes)

Кажется ли это хорошей схемой для использования, или есть лучший способ создать такую ​​структуру?

1 Ответ

2 голосов
/ 09 марта 2019

Я бы предложил структуру, подобную приведенной ниже, имеющую только 2 таблицы:

Comment:
id
user (foreign key)
post (foreign key)
comment_text
parent_comment_id (null or -1 if a new comment and comment_id of the parent if a reply)


CommentLike (Table that shows which user liked which comments):
id
comment (foreign key)
user (foreign key)
like (1 = likes, 0 = dislikes)
  • Причина, по которой это делается, заключается в том, что reply - это не что иное, как comment, само по себе, будучи только дочерним по отношению к какому-либо родительскому комментарию. Следовательно, я не стал бы выделять это как отдельную сущность.
  • Обратите внимание, что вам нужно позаботиться об операции удаления и удалить все комментарии, для которых текущий комментарий удаляется как его parent_id.
...