关于数据库:多个父对象的注释

Comments for multiple parent objects

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

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

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

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

第二,如果可以将这些注释放入同一个表中,那么这样做是否有效?为每个父对象创建一个注释表是否更有效?

提前谢谢,希望这是一个足够有趣的话题。

干杯,

尼克


我将把评论作为自己的一张桌子。注释表将有一列用于photoid和postid。这些是允许空值的外键。然后,数据库检查约束将确保photoid和postid中只有一个为空。也就是说,每个评论都只附加到一个父级。


另一种选择是拥有一个所有日志都与之相关的日志表(无论类型如何)。所以不管是照片还是普通的帖子,它都会在这个表中为它创建一个记录。

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

因此,您发布的表格将类似于:

  • 身份证件
  • 发布内容
  • 照片
  • 照片类型
  • 等。。。

如果选择不将两者存储在同一个表中,则可以有一个表用于照片,一个表用于与日志ID相关的日志。

这样,您就可以拥有一个与post-id相关的注释表(不管它是正确的路由)。


我可以建议三张桌子的结构

表:【实体类型】(列出所有对象标题,如照片、文章)例子:PK:1001,"照片"

表:【照片】例子:PK:2001,"我的第一张照片标题"pk:2002,"我的第二张照片标题"

表:【注释】示例:pk:3001,"我第一张照片的第一条评论",fk:1001,fk:2001pk:3002,"我第一张照片的第二条评论",fk:1001,fk:2001pk:3003,"我对第二张照片的第一条评论",fk:1001,fk:2002