Database design 递归在学说中有多糟糕?

Database design 递归在学说中有多糟糕?,database-design,symfony,doctrine-orm,Database Design,Symfony,Doctrine Orm,在我的数据库中,两个表之间有两个关系: “多对一”和“多对多” 因此,当我加载对象时,我有: [ceo] => Object ( [id] => 1 [Current_Company] => Object ( [id] => 1 [ceo] => Object *RECURSION*

在我的数据库中,两个表之间有两个关系:

“多对一”和“多对多”

因此,当我加载对象时,我有:

[ceo] => Object
    (
        [id] => 1
        [Current_Company] => Object
             (
                 [id] => 1
                 [ceo] => Object
                  *RECURSION*
             )
    )

没有错误,条令和符号都很有效。但这是在模式中保持递归的好方法吗

声明您应该尽可能避免双向关系,所以如果可以的话就这样做。就我个人而言,当我觉得在我的代码中需要它们时,我会建立它们。

我认为这个问题比教义和符号更一般,所以我会给出一个高层次的答案,分享我的理念

有两种思维阵营:

  • 数据库比使用它的应用程序更重要
  • 应用程序比数据库更重要
  • 我属于第一阵营。对我来说,数据库通常比使用它的应用程序寿命长,因此将应用程序绑定到数据库是合乎逻辑的,反之亦然。这意味着,如果数据库和应用程序层发生冲突,则数据库层获胜。这就是为什么我喜欢DataMapper模式而不是ActiveRecord:AR使您更改数据库模式以匹配您的应用程序,而DM使您的应用程序适合数据库模式

    在数据库模式中有双向关系是非常好的,所以无论我使用的是什么数据库抽象工具,它都必须接受并接受它