Я использую 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
Есть ли какие-либо опасности/предостережения?
A
) создается, но не используется. Если у вас есть внешние ключи, указывающие наA
, проверка ключа завершится ошибкой, потому что данные фактически хранятся вB
. Пока вы сохраняете свои отношения в таблицах агрегации, вы должны быть в порядке. Но в некоторых случаях это противоречит цели наличияA
для начала. - person prodigitalson   schedule 17.01.2011