【问题标题】:Symfony is-a database schemaSymfony 是一种数据库模式
【发布时间】:2010-01-06 03:18:21
【问题描述】:

所以我是 symfony 的新手,正在尝试在几个表之间建立一个 is-a 关系。我有一个媒体表,它的 id 字段是主键。然后我除了有 2 个或更多附加表是该表的“子类”,例如文章或事件表。这些是媒体表的子类,我在这些表中放置了一个 media_id 字段,该字段与媒体表具有 FK 约束,并且是特定表的主键。但是,当我基于此模型构建模块时,这种关系不成立。

例如,当我尝试添加一篇文章时,我必须先添加一个媒体项,但然后在创建文章表单中,没有办法为其添加媒体 id。

有什么想法吗?

谢谢!

【问题讨论】:

    标签: php database-design frameworks symfony1


    【解决方案1】:

    使用inheritance 代替关系:

    detect_relations: true
    Media:
      columns:
      #columns for all sub classes
    
    Event:
     columns:
     # other columns for Event Subclass
     inheritance:
        extends: Media
        type: column_aggregation
        key_field: type
        key_value: 1
    
    Other:
     columns:
     # other columns for Other Subclass
     inheritance:
        extends: Media
        type: column_aggregation
        key_field: type
        key_value: 2
    

    【讨论】:

    • 有趣。但这会创建一个包含所有列的大表。如果我以后想添加更多子类表,这听起来不是一个好主意。
    • 具体继承(与列聚合相反)会将它们放在单独的表中。虽然使用迁移可以让您在以后添加列。
    • 再次感谢您的帮助。所以我尝试了具体的,但它似乎实际上并没有在媒体表中添加任何行。我为什么要这样做的重点是保持所有媒体类型之间的 id 同步,以便我可以将 cmets 和标签附加到所有媒体类型。有任何想法吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 2012-12-05
    相关资源
    最近更新 更多