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

时间:2019-02-11 09:26:03

标签: php sql database phpmyadmin structure

我目前正在编写博客来获得php的使用经验(我已经制作了MVC框架),所以我对此还是很陌生。

对于这个问题,我有两个重要的表格:

user(id, username, password, registrated)

comments(id, content, post_id, comment_author, date, editedAt, editedBy)

comments表中,comment_author尚未链接到用户ID,因为我不确定如何实际执行此操作。

用户可以写任意数量的评论,但一个评论只能有一个作者。

comment_author目前包含username,但我知道我需要id(如果删除了用户,并且其他人会使用该用户名注册,则注释会是他)。

我现在应该如何构造表?

1。)comments_author_id表中的commentsid中的user作为外键:

在这种情况下,我将在id表中包含评论作者的comments,但是user不会知道他所写的评论。如果我想在其个人资料上显示用户的最近评论,那么可以通过inner-join查询来获取他们吗?

2。)创建一个新表user_comments(id, user_id, comment_id)

在这种情况下,usercomments不会知道它的作者/评论。

我还有一个“ editedBy”,其中最后一个编辑用户的用户名在其中。我可以通过某种方式将其与users表中的用户名链接起来,还是应该将其与id表中的用户名链接起来?

我对这个问题真的迷失了,因为我对数据库了解不多。因此,我感谢能获得的所有帮助和建议。

也请告知我是否需要提供进一步的信息或更改某些内容以更好地理解。

2 个答案:

答案 0 :(得分:1)

最好的方法是创建一个新表user_comments(id, user_id, comment_id)。而且,如果您想跟踪每一个更改/编辑评论或发布,则最好为此创建另一个表,并且如果用户只能编辑,那么我认为最好不要生成editedBy字段。该结构完全取决于您要进行哪种跟踪。

答案 1 :(得分:1)

选择第一个选项很有意义。

正如您所说,评论只有一位作者,因此只需在表中使用外键即可。

在第二个选项中,您将为不需要新表的数据创建一个新的空表,因此您将存储不需要的数据。另外,您还必须在两个不同的表中进行编写,这是用于添加注释的两个不同的操作,并且没有任何可使用的额外功能。