1

我已经阅读了几个教程、关于 mysql、db 结构的文档,并且我通过 php 使用它已有数周了。现在我遇到了一个问题,我不知道如何为帖子和评论形成/组织/创建我的数据库结构。我已经阅读了一些关于此的帖子(在 stackoverflow 上),但我没有发现任何有用的东西。我知道我需要 2 个表用于帖子和评论,当我需要使用外键(或 ID)在页面上打印它们时,我“合并”它们(仅在页面上,而不是 SQL)。当一个人在查看页面时,他可以正常查看帖子和评论,但在“后台”中,所有内容都存储在 2 个表中。

每次有人添加新评论或回复时,我是否需要添加新列?

如果我的问题是真的,这意味着如果帖子中有 100 多条评论,那意味着我每次都需要更改表格?这意味着如果帖子“A”有 3 条评论,而帖子“B”有 150 条评论,我的表“评论”将有 100 多列?

例如:

帖子| 第 1 列| 第 2 列| ... | 第 N 列

一个| 布拉1 | 布拉2 | 布拉3 | - 空 | - 空 | ... | - 空的 - |

| 布拉1 | 巴尔2 | 布拉3 | 布拉4 | 布拉5 | 布拉6 | ... | bla100 |

4

1 回答 1

6

在基本级别上,您的应用程序中的每种“事物”都会有一个表格。在这种情况下,一个用于 Posts 的表和一个用于 Comments 的表。像这样简单的事情:

Post
--------
Id
Content
User
DatePosted

Comment
--------
Id
PostId
Content
User
DatePosted

这将在帖子和评论之间创建所谓的一对多(或实际上是零对多)关系,其中每个帖子可以有零个或多个相关联的 Pomments,但每个评论只能与一个帖子相关联。

在您的代码中(这完全是另一个主题),要显示帖子及其相关的评论,您可以做几件事。假设您有所需的 Post 的输入作为输入,Id您可以获得该 Post 及其评论:

SELECT `Content`, `User`, `DatePosted` FROM `Post` WHERE `Id` = ?Id
SELECT `Id`, `Content`, `User`, `DatePosted` FROM `Comment` WHERE `PostId` = ?Id

您如何处理生成的数据取决于您以及您希望如何在应用程序中使用它。它将作为两个表结果返回,前者有一个记录(如果 Post 存在),后者有零个或多个记录。自然,您会想在尝试使用它们之前检查它们是否存在,等等。(因此,如果第一个查询没有返回结果,请不要尝试继续显示帖子。只显示默认响应或错误。)

于 2012-01-10T18:00:06.103 回答