我目前正在编写一个博客,以获得使用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_id
,user
中的id
作为外键:
在这种情况下,我会在comments
-表中有评论作者的id
,但user
不会知道他写的评论。如果我想在用户的个人资料上显示用户最近的评论,我可以用inner-join
查询吗?
2.)创建新表user_comments(id, user_id, comment_id)
在这种情况下,user
和comments
不会知道它的作者/评论。
我还有'editedBy',其中最后一个编辑用户的用户名是。我可以以某种方式将它与users
-table中的用户名链接吗?或者我应该将它与id
链接吗?
我对这个问题真的很困惑,因为我对数据库了解不多;所以我很感激我能得到的每一个帮助和建议。
如果我需要给予任何进一步的信息或更改某些内容以便更好地理解,请告诉我。
2条答案
按热度按时间ajsxfq5m1#
你选择第一个选择是有道理的。
正如你所说的,评论只有一个作者,所以只需使用一个外键到用户表。
在第二个选项中,您正在为不需要新表的数据创建一个新表,因此您正在存储不需要的数据。此外,你必须写在两个不同的表,这是两个不同的操作添加注解,它给你没有额外的功能,你可以使用。
piah890a2#
最好的方法是创建一个新的表
user_comments(id, user_id, comment_id)
。如果你想跟踪每一个修改/编辑的评论或帖子,它将更好,如果你创建另一个表,如果用户只能编辑,那么我认为这是更好的editedBy
字段不生成。结构完全取决于你想成为什么样的跟踪。