Questa è una domanda su come modellare le entità e le relazioni del database quando si tratta di archiviare dati persistenti e trattare con tipi di prodotti gestiti in modo diverso.
Usa caso
L'azienda vende varie percentuali di% di co_de che vengono prodotte all'interno dell'azienda e varie percentuali di Products
, che non sono prodotte in azienda e sono trattate in modo diverso.
Ogni prodotto ha un numero di parte individuale specifico, ma i motori non sono l'attività principale dell'azienda e in quanto tali stanno prendendo un sedile posteriore nel senso che, indipendentemente dal tipo di motore venduto, è sempre elencato sotto generico numero di parte di Motors
sul libro mastro delle vendite. Questo è anche perché il più delle volte, il motore è una parte "una tantum", solo di passaggio, e spesso deve essere acquistato su misura, e non è tenuto in magazzino permanente.
Allo stesso tempo, quando possibile, è necessario sapere esattamente quale motore viene venduto a fini di inventario e ci sono diversi modi per affrontarlo concettualmente.
- mantieni la tabella di dati
MOTOR
separata con i motori dei fornitori tipici - sul libro mastro accanto al numero di parte MOTOR, descrivere il motore esatto nella descrizione
- sposta i Motori nella tabella dei prodotti principali, ma poi deve creare molti numeri di pezzi del motore a perdere a causa di pezzi unici (non desiderabili e non della rotta che voglio percorrere)
Pensieri correnti
Ho un diagramma ER in cui ho definito alcune tabelle, in questo modo:
Tuttiiprodottiprodottidall'aziendaconilpropriospecificonumerodipartesitrovanonellatabellamotor
.Ilnumerodipartegenericodi"MOTOR" si trova anche nella tabella product
.
Tipici motori di vari fornitori che sono probabilmente ordinati si trovano nella tabella products
.
Il problema con il mio approccio è più o meno evidente nella tabella motor
. Ho ledger_item
e motor_id
, rispettivamente discernente prodotto e motore. Se è un product_id
, quindi estraggo i dati di product
e utilizzo il numero di parte specifico di quel prodotto, che può essere discernuto da product
.
Se product_id
significa che cercare il motore nella tabella dei motori per scoprire il motore specifico, ho bisogno di leggere product_id == MOTOR
e andare nella tabella motor_id
per trovare le specifiche.
Per i casi in cui viene aggiunto un motore che non è nella tabella motori (una parte singola), posso solo contare sulle chiavi motor
e category_id
per dirmi che è un motore, non fare affidamento sulla tabella product_id
, quindi leggere la descrizione nel libro mastro.
Questo può essere ... reso migliore? Oppure ho ragione a usare motor
come metodo per indicare la relazione di tipo category_id
nel libro mastro e poi a scavare nelle chiavi esterne appropriate per le specifiche?