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?

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top