如何在'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)
在这种情况下,user
和 comments
不知道它是 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,这是添加评论的两个不同操作,它不会为您提供可以使用的额外功能。
我目前正在编写博客以获取 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)
在这种情况下,user
和 comments
不知道它是 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,这是添加评论的两个不同操作,它不会为您提供可以使用的额外功能。