注释数据库的PHP结构

注释数据库的PHP结构,php,mysql,Php,Mysql,现在我用php创建了一个博客系统。管理员可以创建x个帖子,每个帖子下都应该有一个评论功能。我怎么能意识到这一点?我不知道数据库的结构,因为每个帖子都有很多表。也许你们中有人有很好的联系。我已经搜索过了,但没有找到我的问题。您不需要太多表格。您可以有一个表格,用于如下所示的帖子: id INT(10) title TEXT content TEXT id INT(10) postId INT(10) // this links to the column po

现在我用php创建了一个博客系统。管理员可以创建x个帖子,每个帖子下都应该有一个评论功能。我怎么能意识到这一点?我不知道数据库的结构,因为每个帖子都有很多表。也许你们中有人有很好的联系。我已经搜索过了,但没有找到我的问题。

您不需要太多表格。您可以有一个表格,用于如下所示的帖子:

id       INT(10)
title    TEXT
content  TEXT
id       INT(10)
postId   INT(10) // this links to the column post.id
content  TEXT
还有一张评论表,如下所示:

id       INT(10)
title    TEXT
content  TEXT
id       INT(10)
postId   INT(10) // this links to the column post.id
content  TEXT
当然,如果需要,您可以向两个表中添加更多列,例如添加时间戳等

现在,当你有一篇id为7的帖子时,你要确保所有对该帖子的评论都是7。这样,当您在网站上显示post 7时,您可以搜索postId=7的评论表中的所有行,并精确显示链接到该帖子的评论


我简化了这个例子。要优化表,可以添加索引、主键等。

@Skeptar,有很多方法可以实现这一点。让我给你推荐一个

Users table: (very obvious)
Columns: user_id (INTEGER(n) PRIMARY KEY), username (VARCHAR(n)), password (VARCHAR(32) for md5), level (INTEGER Example: 1 for admin, 3 for regular user)

Posts:
Columns: post_id (INTEGER(n) PRIMARY KEY), post_title (VARCHAR(n)), post (TEXT), user_id (INTEGER(n))

Comments:
Columns: comment_id (INTEGER(n)), comment(TEXT), post_id,(INTEGER FOREIGN KEY REFERENCES post(post_ID)) user_id(INTEGER(n) FOREIGN KEY REFERENCES users(user_id))
现在,我相信您已经有了一种方法,允许管理员和普通用户注册到您的系统中

插入时,您获取文章标题和实际文章,并借助一些用户标识机制(如会话),获取用户id并将其插入到post表中

然后,对于每个评论,在插入时,获取用户评论的帖子的post\u id,并将其与评论和用户id一起插入到评论表中

当您想要获取所有帖子时,这相当容易

当您想获取某篇文章的所有评论时,可以将该文章的post_id放入comments表中,如下所示:

SELECT * FROM comments C, posts P WHERE C.post_id = C.post_id;
由于您针对每个帖子和评论插入了用户id,因此类似地,您可以获取每个评论的相应用户信息:

SELECT U.username FROM comments C, users U Where C.user_id = U.user_id
记住,这只是给你一个想法,而不是作为一个完整的工作解决方案。我把这写下来了,可能会有一些错误。
另外,我在括号n INTEGERn中指出,这意味着您需要用所需的列大小替换n。希望能有所帮助。

ahh,所以我为所有评论创建了一个表?@Skeptar完全正确,有一列显示评论属于哪个帖子。谢谢你,你帮了我很多忙!:!我想了很久,我怎么能意识到我的最后一个问题:^^专业网站,采取同样的方式?@Skeptar肯定。这称为一对多关系,将许多评论链接到一篇文章。还有一种多对多的关系,例如,你可以使用标签将许多帖子链接到许多标签上,这些标签的工作原理略有不同,但思路相同。在专业网站中,您应该始终为表创建索引和外键,以优化数据库。如果你在谷歌上搜索“mysql优化”,你会发现很多关于这方面的解释。好吧,谢谢你的回答,谢谢你花了这么多时间来帮助我:你帮了我很多。哇,这个答案也太棒了!:谢谢你很高兴我能帮忙。