Ereditarietà delle tabelle di classe: le tabelle figlio richiedono una chiave primaria?

1

Sto utilizzando l' architettura di ereditarietà delle tabelle di classe con la mia applicazione e ho letto Fowler. Quando ho mappato le tabelle del mio database alle classi nel codice, ho realizzato che non ho bisogno di una proprietà "ID" sulle mie classi derivate e, in effetti, può causare problemi se ha lo stesso nome perché nasconde la classe base proprietà.

Le tabelle my child devono avere le proprie chiavi primarie sostitutive, o le chiavi esterne che le collegano al loro record padre servono anche come chiave primaria per i record figlio? Fowler non ottiene quello specifico su CTI. Sono abituato ad avere sempre le chiavi surrogate, quindi un allontanamento da questa convenzione non mi sembra giusto e se c'è una buona ragione per attenervisi, lo prenderò.

    
posta rory.ap 09.01.2015 - 21:19
fonte

1 risposta

2

Sì in generale quando si utilizza la tabella per l'ereditarietà delle classi, la tabella derivata ha la stessa chiave primaria della tabella di base.

Personalmente preferisco la gerarchia delle tabelle quando possibile, perché non richiede un join aggiuntivo. Crea colonne inutilizzate nella tabella che potrebbero essere ingombranti con gerarchie di grandi dimensioni, ma molti database moderni supportano adeguatamente questo scenario (ad esempio, SQL Server dal 2008 supporta Indicatore Sparse Column che consente al DB di ottimizzare lo spazio di archiviazione di conseguenza)

    
risposta data 09.01.2015 - 21:27
fonte

Leggi altre domande sui tag