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