26

Sto usando Doctrine 1.2 su un progetto symfony, e sto considerando la possibilità di combinare tipi di ereditarietà di aggregazione di cemento e colonne nel mio schema: aggregazione di colonne mi consente di eseguire query in una tabella padre e ottenere entrambi i record genitore e figlio, mentre l'ereditarietà concreta mi consente di ottenere uno schema più pulito. Inoltre, il mix si troverà nella stessa catena ereditaria. Come scrivere il file dello schema? Ti piace il seguente?Diversi tipi di ereditarietà nello stesso schema

A: 

B: 
    inheritance: 
    extends: A 
    type: concrete 

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

O come questo, forse:

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 

ci sono pericoli/avvertimenti?

+0

Sembra nessun altro ha esperienza da condividere. Sarei interessato a sapere come è andata - il mio pensiero iniziale era che non avrebbe funzionato bene. – benlumley

+0

@benlumley Beh, l'abbiamo provato, e stiamo testando, e sembra funzionare abbastanza bene per il momento. Modificherò il mio post e aggiungerò un commento se incontriamo alcuni problemi. Abbiamo provato con la seconda versione dello schema. – greg0ire

+0

@ greg0ire: ATTIVA le relazioni quando è coinvolta l'eredità concreta :-) Assicurati di non definirle sulla tabella di base. Non ho mai mescolato e abbinato in alcun modo sia così tanto male da essere ascoltato su qualsiasi problema tu abbia incontrato ... – prodigitalson

risposta

1

Finché si evitare eredità circolare o diamante eredità forma si sarebbe fine e possibile utilizzare questa

Un circolare eredità (ovviamente si presenta come segue

Classe A Estende B Classe B estende A

O

CLASSE A ESTENDE C

CLASSE B ESTENDE A

CLASSE C ESTENDE A

Un Diamante eredità a forma è un po 'più rotonda. Succede quando il seguente tipo di condizione si verifica

CLASSE A

CLASSE B estende una

CLASSE C estende una

CLASSE D ESTENDE B, C

+0

Stai dicendo che l'ereditarietà multipla è possibile con la dottrina? Dal momento che non è con php, ne dubito ... +1 per il vocabolario anche se – greg0ire

+0

Tutto quello che sto cercando di dire è finchè questi vincoli non ci sono. Possiamo tranquillamente fare ereditarietà. – footy

Problemi correlati