Come posso rappresentare la gerarchia di classificazione degli oggetti in un RDBMS
-
08-07-2019 - |
Domanda
I miei dati, SE sarebbero rappresentati da oggetti, sembrerebbero:
abstract class A{
int a;
int b;
string c;
}
class B inherits A{
string D;
}
class C inherits A{
int e;
int f;
}
La mia domanda: devo creare una tabella separata per le entità B e C,
Oppure creo una tabella principale e per ogni tipo di entità faccio diversi join per recuperare i dati.
Nel mondo reale, avrò circa 15 campi simili per tutte le entità e circa 1-3 campi univoci per ogni entità.
Mi aspetto un massimo di 100.000 record.
Qualche idea?
Soluzione
Non mancheranno opinioni su questo argomento. Molte persone sostengono eredità di tabelle concrete , dove (come descrivi nella tua prima opzione) definisci il dati esplicitamente in ogni tabella.
Data la tua seconda affermazione, non consiglierei questo schema. Vorrei andare con l'idea di avere un "principale" tabella che rappresenta il tuo genitore e tabelle ausiliarie che rappresentano i bambini. Potresti voler includere un identificatore di tipo di qualche tipo nella tua tabella principale per indicare che tipo di entità è, ma questo potrebbe essere o non essere necessario. Come minimo, hai bisogno di qualcosa come ...
tableA
(
ID (primary),
A,
B,
C
)
tableB
(
ID (primary and foreign->table_A),
D
)
tableC
(
ID (primary and foreign->table_A),
E,
F
)
Altri suggerimenti
table_a contiene tutti i campi simili, table_B e table_c contengono i campi univoci
table_A
PKa
a int
b int
c string
table_B
PKb
FKa
D string
table_C
PKc
FKa
e int
f int