26

Я использую Doctrine 1.2 в проекте symfony, , и я рассматриваю возможность смешивания типов наследования белков и агрегации столбцов в моей схеме: агрегация столбцов позволяет мне запрашивать в родительской таблице и получать как родительские, так и дочерние записи, в то время как конкретное наследование позволяет мне получить более чистую схему. Плюс, микс будет в одной цепочке наследования. Как написать файл схемы? Как показано ниже?Различные типы наследования в той же схеме

A: 

B: 
    inheritance: 
    extends: A 
    type: concrete 

C: 
    inheritance: 
    extends: B 
    type: column_aggregation 
    keyField:   type 
    keyValue:   1 

Или, как это возможно:

A: 

B: 
    inheritance: 
    extends: A 
    type: concrete 

C: 
    inheritance: 
    extends: B 
    type: concrete 
D: 
    inheritance: 
    extends: C 
    type: column_aggregation 
    keyField:   type 
    keyValue:   1 


E: 
    inheritance: 
    extends: C 
    type: column_aggregation 
    keyField:   type 
    keyValue:   2 

Существуют ли какие-либо вид опасности/предостережений?

+0

Похоже никто другой не имеет опыта для обмена. Мне было бы интересно узнать, как это произошло - моя первоначальная мысль заключалась в том, что это не сработает. – benlumley

+0

@benlumley Ну, мы это пробовали, и мы тестируем, и на данный момент это работает очень хорошо. Я отредактирую свое сообщение и добавлю комментарий, если мы столкнемся с некоторыми проблемами. Мы попробовали со второй версией схемы. – greg0ire

+0

@ greg0ire: ОБЕСПЕЧИТЬ отношения, когда задействуется конкретное наследование :-) Убедитесь, что вы не определяете их на базовой таблице. Ive никогда не смешивался и не соответствовал ни в какой степени, ни потому, что вам было бы интересно узнать о какой-либо проблеме, с которой вы сталкиваетесь ... – prodigitalson

ответ

1

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

A кругового наследования (очевидно, выглядит следующим образом

Класс A Расширяет B Расширения класса B A

OR

КЛАССА А ПРОДЛЕВАЕТ С

КЛАССА В Расширяет

Класс C Расширяет

Алмаз Форменно наследования является немного более кругом. Это происходит, когда следующий тип состояния происходит

КЛАСС

КЛАССА В Расширяет

Класс C Расширяет

Класс D ПРОДЛЕВАЕТ B, C

+0

Вы говорите, что множественное наследование возможно с учением? Поскольку это не с php, я сомневаюсь ... +1 для словаря, хотя – greg0ire

+0

Все, что я пытаюсь сказать, до тех пор, пока эти ограничения не существуют. Мы можем безопасно выполнять наследование. – footy