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
MOTORseparata 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?
