Насколько плоха рекурсия в Учении? - PullRequest
3 голосов
/ 24 ноября 2011

В моей БД у меня есть две взаимосвязи между двумя таблицами:

"многие к одному" и "многие ко многим"

Database Schema

Так что когдаЯ загружаю генеральный директор объекта, который у меня есть:

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

Нет ошибок, доктрина и Symfony работают хорошо.Но это хороший способ сохранить эту рекурсию в схеме?

Ответы [ 2 ]

4 голосов
/ 24 ноября 2011

Я думаю, что этот вопрос является более общим, чем Doctrine и Symfony, поэтому я дам ответ высокого уровня, разделяя мою философию.

Есть два лагеря мышления:

  1. База данных важнее, чем приложение, использующее ее,
  2. Приложение важнее базы данных.

Я принадлежу к первому лагерю. Для меня база данных обычно переживает приложения, использующие ее, поэтому логично сгибать приложения в базу данных, а не наоборот. Это означает, что, если база данных и прикладной уровень имеют конфликт, уровень базы данных побеждает. Вот почему я предпочитаю шаблон DataMapper перед ActiveRecord: AR заставляет вас изменять схему базы данных, чтобы она соответствовала вашему приложению, в то время как DM адаптирует ваше приложение к схеме базы данных.

Прекрасно иметь двунаправленные отношения в схеме базы данных, поэтому, какой бы инструмент абстракции базы данных я ни использовал, он должен принять это и жить с этим.

0 голосов
/ 24 ноября 2011

В этом разделе страниц «Лучшие практики» говорится, что вы должны избегать двунаправленных связей, насколько это возможно, поэтому сделайте это, если можете.Лично я устанавливаю их, когда чувствую необходимость в них в своем коде.

...