Различные типы наследования в одной и той же схеме
Я использую 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