我目前正在编写一个博客,以获得使用php的经验(我已经制作了一个MVC-Framework),所以我对此仍然很陌生。
对于这个问题,我有两张很重要的表:
user(id, username, password, registrated)
comments(id, content, post_id, comment_author, date, editedAt, editedBy)
在comments中,-table comment_author还没有链接到用户的id,因为我不确定如何实际这样做。
用户可以编写任意数量的评论,但评论只能有一个作者。
comment_author目前有username,但我知道我需要id(如果用户被删除,其他人会用这个用户名注册,评论将是他的)。
我现在该如何安排桌子呢?
) comments_author_id in comments**-table,** id in user as外键:
在这种情况下,我会让评论作者的id在comments-table中,但是user不会知道他所写的评论。如果我想显示用户最近在它的配置文件上的评论,那么我可以通过inner-join查询获得它们吗?
( 2.)创建一个新的表user_comments(id, user_id, comment_id)
在这种情况下,user和comments不会知道它的作者/评论。
此外,我还有“editedBy”,其中最后一个编辑用户的用户名是。我可以以某种方式将它与users-table中的用户名链接起来吗?还是也应该将它与id链接起来?
我对这个问题真的很困惑,因为我对数据库不太了解,所以我很感激能得到的每一个帮助和建议。
如果我需要提供更多的信息,或者为了更好的理解而改变一些东西,请让我知道。
发布于 2019-02-11 09:35:08
第一种选择是合理的。
正如您所说的,评论只有一个作者,所以只需使用一个外键对用户表。
在第二个选项中,您正在为不需要新表的数据创建一个空洞的新表,因此您正在存储不需要的数据。此外,您还必须编写两个不同的表,这是添加注释的两个不同操作,它没有提供您可以使用的额外功能。
发布于 2019-02-11 09:33:19
最好的方法是创建一个新的表user_comments(id, user_id, comment_id)。如果您想跟踪每个更改/编辑注释或帖子,如果您为此创建另一个表,如果用户只能编辑,我认为最好是editedBy字段,而不是生成。结构完全取决于你想成为什么样的追踪者。
https://stackoverflow.com/questions/54627360
复制相似问题