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