1

我不是数据库专家。所以我只是作为初学者问它。我要设计一个数据库,但是我不确定我在数据库设计中所做的是对还是错。该网站应包含文章和帖子,每个帖子可能有几个评论。我决定将所有文章、帖子和用户个人资料视为节点。所以我创建了一个名为“节点”的表,每个“节点”都有一个“内容”作为文本。现在我正在考虑是否应该将评论视为“节点”,或者我应该将不同的表作为“comment_nodes”。我正在寻找有效的方法。

所以,一句话:是否可以将评论视为普通节点?

谢谢

4

2 回答 2

0

这称为表继承,这不是一个坏主意。例如,在 Drupal 中,大多数东西都是一个“节点”。

主要优点是它可以让你有指向稍微不同的东西(相同的父类型)的外键。

我会在你的情况下使用类表继承。你可以这样做:

NODE
id

NODE_POST
id pk fk node(id)
title
body

NODE_COMMENT 
id pk fk node(id) 
body 
post_id fk node_post(id) 
parent_comment_id fk node_comment(id)

无论如何,请在 Google 上为 Martin Fowler 提供关于表继承的信息,并确保您了解其中的含义。

如果您使用的是 PHP,那么 Doctrine 将帮助您解决继承问题。

如果您要进行嵌套评论,我也会推荐 Postgres 而不是 MySQL,因为 Postgres 的分层查询比 MySql 更好。

于 2013-05-21T20:57:47.337 回答
0

如果您使用 MySQL,那么您的设计是不正确的。

基本上,您必须以表格、列和行的形式考虑数据。每个表都应该代表一个业务实体,而不是抽象的东西。列表示业务实体的属性,行是项(业务实体的实例)。您需要定义主键和外键。

您需要为列提供适当的类型并定义索引以允许快速搜索。

所以只是给你一个例子

==================================
| 后桌 |
==================================
| 编号 | 标题 | 身体 |



==================================
| 评论表 |
==================================
|标识 | 帖子编号 | 正文 |

我将从 MySQL 的基本教程开始(虽然不推荐)。如果这个答案太基本,请道歉。

于 2013-05-21T17:25:54.223 回答