Nel mio progetto ho un oggetto Player
(attr esempio: pl_id
, pl_data1
) che è uno di questi tipi:
- La sua
GoalKeeper
(attr esempio:gk_data1
) - OR
Defender
(attr esempio:df_data1
) - OR
Forward
(attr esempio:fw_data1
)
Nella mappatura di questi oggetti nel database:
Opzione 1:
Crea una tabella Player
con colonne ( pl_id
, pl_data1
, gk_data1
, df_data1
, fw_data1
)
In questa opzione abbiamo un record per ogni giocatore. Quindi se un giocatore è un portiere, la colonna gk_data1
sarà riempita e l'altra colonna ( df_data1
e fw_data1
) sarà nullo.
Opzione 2: fai
- Tabella
Player
con colonne: (pl_id
,pl_data1
,type
) - Tabella
GoalKeeper
con colonne: (pl_id
,gk_data1
) - Tabella
Defender
con colonne: (pl_id
,df_data1
) - Tabella
Forward
con colonne: (pl_id
,fw_data1
)
e pl_id
nelle tabelle child ( GoalKeeper
, Defender
e Forward
) si collega a Player.pl_id
. la relazione dalle tabelle figlio al genitore è una a una e dal genitore al figlio è da uno a uno_o_zero.
domande:
- che è meglio?
- ci sono altre (e migliori) opzioni?
- e infine qual è la migliore pratica in questa situazione?