【发布时间】:2012-02-07 03:17:57
【问题描述】:
我已经阅读了几个教程、有关 mysql、数据库结构的文档,而且我已经通过 php 使用它数周了。现在我遇到了一个问题,我不知道如何为帖子和 cmets 形成/组织/创建我的数据库结构。我已经阅读了一些关于此的帖子(在 stackoverflow 上),但我没有发现任何有用的东西。我知道我需要有 2 个用于帖子和 cmets 的表,当我需要使用外键(或 ID)在页面上打印它们时,我“合并”它们(仅在页面上,而不是使用 SQL)。当一个人在查看页面时,他可以正常查看帖子和 cmets,但在“后台”中,所有内容都存储在 2 个表中。
每次有人添加新评论或回复时,我是否需要添加新列?
如果我的问题是真的,这意味着如果一个帖子中有 100 多个 cmets,这意味着我每次都需要 ALTER the TABLE?这意味着如果帖子“A”有 3 个 cmets,而帖子“B”有 150 个 cmets,我的表“cmets”将有 100 多列?
例如:
帖子 | 第 1 列 | 第 2 列 | ... | 列N
A |布拉1 |布拉2 |布拉3 | - 空 | - 空 | ... | - 空 - |
B |布拉1 |巴尔2 |布拉3 |布拉4 |布拉5 |布拉6 | ... | bla100 |
【问题讨论】:
-
没有。 'alter table' 应该是一个非常少见的东西,只响应“业务需求”的变化。谷歌“数据库规范化”(和一般 RDBMS 理论)来了解如何/为什么更好地构建您的数据库。
-
不,你说的是 CommentID 和 CommentContent 并为每个评论添加另一行。
-
我同意@Marc B ...但是快速回答是这样的结构:
POSTS(id,title,text);COMMENTS(id,postid,text);。每个帖子在POSTS中有一行,每个评论在COMMENTS中有一行。通过使用与帖子的posts.id匹配的comments.postid,您可以知道哪些cmet 用于哪些帖子。