Различные типы наследования в одной и той же схеме

Я использую 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

Есть ли опасности / предостережения?

1 ответ

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

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

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

ИЛИ ЖЕ

КЛАСС A РАСШИРЯЕТСЯ C

КЛАСС Б РАСШИРЯЕТ А

КЛАСС С РАСШИРЯЕТСЯ

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

КЛАСС А

КЛАСС Б РАСШИРЯЕТ А

КЛАСС С РАСШИРЯЕТСЯ

КЛАСС D РАСШИРЯЕТ B, C

Другие вопросы по тегам