1

我正在学习在 Yii PHP 框架中构建网络应用程序,但我认为我的问题一般适用于网络应用程序。

我想知道如何为与不同类型的父对象(即照片或帖子)相关的评论构建数据库表。

照片和帖子本质上是不同的,不会坐在同一张桌子上。然而,在大多数情况下,对这些对象的注释格式相同。

我的问题是双重的,是否可以将多个父对象的注释放入同一个表中?[在我看来这是自然的解决方案,但我不确定如何使用外键/主键等来处理这个问题。我认为它还需要一个指向父对象类型的键......?]

其次,如果可以将这些评论放在同一个表中,这样做是否有效,为每个父对象都有一个评论表是否更有效?

在此先感谢,希望这对某人来说是一个足够有趣的话题。

干杯,

缺口

4

3 回答 3

1

另一种选择是有一个所有帖子相关的帖子表(无论类型如何)。因此,无论是照片还是普通帖子,都会在此表中为其创建记录。

根据内容的类型,您可以在此表中存储照片和普通帖子(每个都有可选字段,例如:照片、照片类型、post_content 可能是可选的,具体取决于正在创建的类型(这将是一个很好的机会)了解 Yii 模型验证场景)。

所以你发布的表格看起来像:

  • ID
  • post_content
  • 照片
  • 照片类型
  • ETC...

如果您选择不将两者存储在同一个表中,则可以有 1 个用于照片的表和 1 个用于与 post_id 相关的帖子

这样,您可以有一个与 post_id 相关的评论表(无论是正确的路线)。

于 2012-10-21T19:29:26.387 回答
1

我会将评论建模为自己的表格。Comment 表将包含 PhotoId 和 PostId 列。这些是允许空值的外键。然后,数据库检查约束将确保 PhotoId 和 PostId 中的一个为空。即每条评论都附在一个父母身上。

于 2012-10-22T01:08:24.523 回答
0

我可以建议 3 表结构

表:[Entity_Types](列出所有对象标题,例如照片、帖子)示例:PK:1001,“照片”

表:[照片] 示例:PK:2001,“我的第一张照片标题” PK:2002,“我的第二张照片标题”

表:[评论] 示例:PK:3001,“我对我的第一张照片的第一个评论”,FK:1001,FK:2001 PK:3002,“我对我的第一张照片的第二个评论”,FK:1001,FK:2001 PK :3003,“我对第二张照片的第一条评论”,FK:1001,FK:2002

于 2014-05-06T00:36:14.713 回答