我已经阅读了几个教程,关于mysql,db结构的文档以及我通过php使用它几周。现在我遇到了问题,我不知道如何为帖子和评论形成/组织/创建我的数据库结构。我已经阅读了一些关于此的帖子(这里是stackoverflow),但我没有找到任何有用的东西。我知道我需要有2个表用于帖子和评论,当我需要在页面上用外键(或ID)打印它时,我“合并”它们(仅在页面上,而不是在SQL上)。当一个人正在查看该页面时,他正在正常查看帖子和评论,但在“背景”中,所有内容都存储在2个表格中。
每当有人添加新评论或回复时,我是否需要添加新列?
如果我的问题属实,那就意味着如果在帖子中有100多个评论,这意味着我需要每次都更改一次表格吗?这意味着如果帖子“A”有3条评论而帖子“B”有150条评论,那么我的表“评论”会有100多列吗?
E.g:
帖子 | column1 | column2 | ...... |的 columnN
A | bla1 | bla2 | bla3 | - 空| - 空| ...... | - 空 - |
B | bla1 | bal2 | bla3 | bla4 | bla5 | bla6 | ...... | bla100 |
答案 0 :(得分:6)
在基本级别,您可以在应用程序中为每种类型的“事物”创建一个表。在这种情况下,Posts表和Comments表。像这样简单:
Post
--------
Id
Content
User
DatePosted
Comment
--------
Id
PostId
Content
User
DatePosted
这将创建帖子和评论之间所谓的一对多(或零对多,实际上)关系,其中每个帖子可以有零个或多个关联的Pomments,但每个评论只能与一个帖子相关联
在您的代码中(完全是一个完整的其他主题),要显示帖子及其相关的评论,您可以做一些事情。假设您有所需帖子的Id
作为输入,您可以获得该帖子及其评论:
SELECT `Content`, `User`, `DatePosted` FROM `Post` WHERE `Id` = ?Id
SELECT `Id`, `Content`, `User`, `DatePosted` FROM `Comment` WHERE `PostId` = ?Id
您对结果数据的处理取决于您以及您希望如何在应用程序中使用它。它将返回两个表结果,前者有一个记录(如果Post存在),后者有零个或多个记录。当然,您需要在尝试使用它们之前检查是否存在等等。(因此,如果第一个查询没有返回结果,请不要尝试继续显示Post。只显示默认响应或错误。)