Considera un database con tabelle Prodotti e Dipendenti. Esiste un nuovo requisito per modellare i product manager attuali, essendo l'unico dipendente responsabile di un prodotto, osservando che alcuni prodotti sono abbastanza semplici o abbastanza maturi da non richiedere un product manager. Cioè, ogni prodotto può avere zero o un product manager.Questi stili di progettazione del database (o anti-pattern) hanno nomi?
Approccio 1: alter table Product
per aggiungere un nuovo NULL
grado colonna product_manager_employee_ID
modo che un prodotto con nessun manager prodotto è modellato dal valore NULL
.
Approccio 2: creare una nuova tabella ProductManagers
con non NULL
colonne grado product_ID
e employee_ID
, con un vincolo univoco product_ID
, in modo che un prodotto con nessun manager prodotto è modellato dall'assenza di una riga in questa tabella.
Ci sono altri approcci ma questi sono i due che mi sembra di incontrare più spesso.
presupponendo che siano entrambe le scelte progettuali legittime (come io sono propenso a credere) e si limita a rappresentare diversi stili, non hanno nomi? Preferisco l'approccio 2 e trovo difficile trasmettere la differenza di stile a qualcuno che preferisce l'approccio 1 senza impiegare un esempio reale (come ho fatto qui!) Sarei gentile se potessi dire: "Preferisco il inclinazione-verso-6NF (o qualsiasi altra cosa) stile me stesso. "
Supponendo che uno di questi approcci sia in effetti un anti-pattern (come ho solo il sospetto potrebbe essere il caso per l'approccio 1 modellando una relazione tra due entità come un attributo di una di quelle entità) questo anti-pattern ha un nome?
Punto giusto ma non intendevo che fosse così. Ora sono stanco di modificare per chiarire il mio intento che ogni prodotto avrà zero o un product manager (per l'approccio 2 ciò richiede un vincolo univoco solo sull'ID del product manager, penso). – onedaywhen