如何在'user'和'his comment'之间建立关系?

How to build a relationship between a 'user' and 'his comment'?

我目前正在编写博客以获取 php(我制作了一个 MVC 框架)的经验,所以我对此还是个新手。

我有两个 table 对这个问题很重要:

user(id, username, password, registrated)

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

comments-table 中 comment_author 尚未 link 编辑到用户 ID,因为我不确定如何实际执行此操作。

一个用户可以写任意多条评论,但一条评论只能有一个作者。

comment_author 目前有 username,但我知道我需要 id(如果用户被删除并且其他人会使用此用户名注册,则评论将是他的)。

我现在应该如何构建 tables?

1.) comments_author_id in comments-table, id in user 作为外键:

在这种情况下,我会在 comments-table 中找到评论作者的 id,但 user 不知道他的评论书面。如果我想在其个人资料上显示用户最近的评论,我可以通过 inner-join 查询获取它们吗?

2.) 新建一个table user_comments(id, user_id, comment_id)

在这种情况下,usercomments 不知道它是 author/comments。

我还有'editedBy',其中是最后编辑用户的用户名。我可以用 users-table 中的用户名以某种方式 link 还是我也应该 link 使用 id?

我对这个问题真的很迷茫,因为我对数据库了解不多;所以我很感激我能得到的每一个帮助和建议。

如果我需要提供任何进一步的信息或更改某些内容以便更好地理解,也请告诉我。

最好的方法是创建一个新的 table user_comments(id, user_id, comment_id)。如果你想跟踪每个 changed/edit 评论或 post 如果你为此创建另一个 table 会更好,如果用户只能编辑那么我认为 editedBy 字段不会生成。该结构完全取决于您想要成为什么样的跟踪。

你选择第一个选项是有道理的。

正如你所说的评论只有一个作者所以只需使用外键给用户table。

在第二个选项中,您要为不需要新 table 的数据创建一个新 table 洞,这样您就可以存储不需要的数据。您还必须编写两个不同的 tables,这是添加评论的两个不同操作,它不会为您提供可以使用的额外功能。