【问题标题】:Doctrine 2: Can I have one address entity that can be associated with both a company and user entity?原则 2:我可以有一个地址实体,它可以与公司和用户实体相关联吗?
【发布时间】:2011-09-17 08:17:46
【问题描述】:

我怎样才能只为地址设置一个数据库表,并让公司和用户实体都访问它?还是我必须为每个人设置一个单独的地址表?谢谢!

【问题讨论】:

    标签: php database-design doctrine doctrine-orm


    【解决方案1】:

    是的。只需将相同的 Many-To-One 关联添加到 User 实体和 Company 实体上的 Address 即可。

    【讨论】:

    • 我希望公司和用户拥有多个地址,因此是多对多关系。因此,我应该在连接表中同时创建 user_id 和 company_id 吗?还是应该为 user_address 和firm_address 创建一个单独的连接表?
    • 这是一个有趣的问题。就我个人而言,我会使用单独的连接表,因为它更容易使用。多对多的关系最终可能会比你最初意识到的更丰富,例如,用户可能有不同类型的地址,如“帐单”和“家”。这意味着将连接表本身转变为实体。这在 Doctrine 文档中有所讨论:doctrine-project.org/docs/orm/2.0/en/reference/…(请参阅该部分底部的注释)
    • 感谢您的意见,我明白您的意思。最后一个问题,如果我不在用户和公司之间共享任何地址,因此地址将具有多对一的关系怎么办?在这种情况下,拥有一个 company_addresses 表和一个 user_addresses 表是否更有意义?或者我应该只有一个地址表并设置一个类型(用户或公司)作为鉴别列的单表继承,以便我可以将地址定向到作为目标实体的用户或公司。
    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 2015-07-19
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 2022-07-08
    相关资源
    最近更新 更多