多个父对象的注释

时间:2012-10-21 18:27:54

标签: database database-design web-applications yii

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

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

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

我的问题是双重问题,是否可以将多个父对象的注释放入同一个表中? [似乎对我来说是天生的解决方案,但我不知道如何用外键/主键等来处理这个问题。我认为它还需要一个指向父对象类型的键...?] < / p>

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

提前致谢,希望对某人来说这是一个非常有趣的主题。

干杯,

尼克

3 个答案:

答案 0 :(得分:1)

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

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

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

  • ID
  • POST_CONTENT
  • 照片
  • photo_type
  • 等...

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我可以建议3表结构

表:[Entity_Types](列出所有对象标题,如照片,帖子) 例: PK:1001,&#34;照片&#34;

表:[照片] 例: PK:2001,&#34;我的第一张照片标题&#34; PK:2002,&#34;我的第2张照片标题&#34;

表:[评论] 例子: PK:3001,&#34;我对我的第一张照片的评论&#34;,FK:1001,FK:2001 PK:3002,&#34;我对我的第一张照片的评论&#34;,FK:1001,FK:2001 PK:3003,&#34;我对我的第2张照片的评论&#34;,FK:1001,FK:2002

相关问题