你如何存储变量字段?

时间:2010-10-07 18:19:12

标签: sql database database-design

我有一个数据库,我有评论,投票,画廊,图像等... 例如,可以使用相同的表单对图库和图像进行注释,然后将其存储在单个表中,注释。

我想知道如何在评论表中存储此类型信息? 使用ENUM类型,针对类型表的外键,插入时硬编码等。?

2 个答案:

答案 0 :(得分:2)

在保留外键的同时,可能有两种方法可以设计它。

第一种是基本上为每种类型都有一个评论表;让他们分开。对于每个注释,都有父图库或图像的外键,具体取决于表。

第二个是有一个表(比如评论),其中包含可评论的任何内容的公共数据。每个图库或图像都有一个外键,用于评论中唯一对应的行。注释表中的每一行都有一个可注释的外键,以及注释文本,日期等。

你可能会觉得这很有用,因为你最终会想要整个评论的集合的元数据......例如。指定是禁用评论,仅为朋友启用评论还是为所有人启用评论。

编辑选项3与选项1类似,但不是每个可注释类型都有完整的单独注释表,只需为每个可注释类型分别使用关联表。

|comments|    |gallery_comments|   |image_comments |
 --------      ----------------     ---------------
|id  (pk)|    |comment_id  (fk)|   |comment_id (fk)|
|text    |    |gallery_id  (fk)|   |image_id   (fk)|
|date    |     ----------------     ---------------
|author  |
 --------

在我看来比选项1好多了。

答案 1 :(得分:2)

针对类型表的外键将获得我的投票。像这样:

alt text