php 如何在“用户”和“他的评论”之间建立关系?

wf82jlnq  于 2023-04-28  发布在  PHP
关注(0)|答案(2)|浏览(133)

我目前正在编写一个博客,以获得使用php的经验(我已经制作了一个MVC框架),所以我仍然是新手。
对于这个问题,我有两个重要的表:
user(id, username, password, registrated)
comments(id, content, post_id, comment_author, date, editedAt, editedBy)
comments-table中,comment_author还没有链接到用户的id,因为我不确定如何实际做到这一点。
一个用户可以写任意多的评论,但是一个评论只能有一个作者。
comment_author目前有username,但我知道我需要id(如果用户被删除,其他人会用这个用户名注册,评论将是他的)。
我现在应该如何组织表格?

1.)comments-表中的comments_author_iduser中的id作为外键:

在这种情况下,我会在comments-表中有评论作者的id,但user不会知道他写的评论。如果我想在用户的个人资料上显示用户最近的评论,我可以用inner-join查询吗?

2.)创建新表user_comments(id, user_id, comment_id)

在这种情况下,usercomments不会知道它的作者/评论。
我还有'editedBy',其中最后一个编辑用户的用户名是。我可以以某种方式将它与users-table中的用户名链接吗?或者我应该将它与id链接吗?
我对这个问题真的很困惑,因为我对数据库了解不多;所以我很感激我能得到的每一个帮助和建议。
如果我需要给予任何进一步的信息或更改某些内容以便更好地理解,请告诉我。

ajsxfq5m

ajsxfq5m1#

你选择第一个选择是有道理的。
正如你所说的,评论只有一个作者,所以只需使用一个外键到用户表。
在第二个选项中,您正在为不需要新表的数据创建一个新表,因此您正在存储不需要的数据。此外,你必须写在两个不同的表,这是两个不同的操作添加注解,它给你没有额外的功能,你可以使用。

piah890a

piah890a2#

最好的方法是创建一个新的表user_comments(id, user_id, comment_id)。如果你想跟踪每一个修改/编辑的评论或帖子,它将更好,如果你创建另一个表,如果用户只能编辑,那么我认为这是更好的editedBy字段不生成。结构完全取决于你想成为什么样的跟踪。

相关问题