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
Playercon colonne: (pl_id,pl_data1,type) - Tabella
GoalKeepercon colonne: (pl_id,gk_data1) - Tabella
Defendercon colonne: (pl_id,df_data1) - Tabella
Forwardcon 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?