Ho una struttura di tabella SQL esistente che assomiglia a questa:
Orders
- order_id
- organisation_id
- [all the rest of the order data]
Organisations
- organisation_id
- [all the rest of the organisation data]
Users
- user ID
- [all the rest of the user data]
Sto provando a modificare la tabella Orders
in modo che un ordine possa essere collegato a Organisation
o a User
. Ho due idee:
Opzione A
- Aggiungi campo
orders.user_id
, quindi impostauser_id
oorganisation_id
su null per ogni ordine, indicando se l'ordine è stato inserito da un utente o un'organizzazione.
Opzione B
- Aggiungi una tabella
orderers
(o simile) e aggiungi i campiorganisations.orderer_id
eusers.orderer_id
. Quindi, gli utenti e le organizzazioni sono entrambi ordinatori e gli ordini degli ordini sono ordinati.
Valutazione
L'approccio basato sui ruoli dell'opzione B sembra avere senso e sembra essere più estendibile, ma non posso fare a meno di pensare alla seccatura che la% diJOIN
in più causerà, in termini di prestazioni e SQL complessità.
Qual è il modo migliore per farlo?