I buoni d’ordine rappresentano un blocco di ordinazioni effettuate dal centro di
distribuzione, sono memorizzati nella tabella BuoniOrdine, e sono identificati dalla chiave codiceBuonoOrdine, di tipo intero, e ha un campo per memorizzare la consegna prevista degli ordini (consegnaPrevista). In Ordinazioni sono memorizzate tutte le ordinazioni effettuate, identificate da codiceOrdinazione, ogni ordinazione fa riferimento con buonoOrdine al buono d’ordine relativo a cui appartengono (più ordinazioni appartenenti allo stesso buono d’ordine avranno questo campo uguale tra loro), e con fornitore al fornitore al quale è stato effettuato l’ordine. Nella tabella Fornitori ci sono tutti i fornitori d’interesse per il centro, ai quali può effettuare ordini; sono distinti dalla partita iva (p_iva), e hanno un nome(nome), un numero di telefono (telefono) e un indirizzo della sede (indirizzo). Ciascun fornitore produrra o distribuira delle merci, di queste si mantiene traccia in MerciMagazzinoFornitore, la cui chiave primaria è costituita dalla merce e dal proprietario (riferimento a Fornitori) della merce, inoltre possiede anche il prezzo a cui il fornitore vende ciascuna merce (prezzoListino). Nel database sono salvate tutte le Merci con cui il centro di distribuzione entra in contatto. codiceMerci è l’identificativo univoco delle merci, di tipo intero, stesso prodotto di fornitori diversi, avra stesso identificativo. Inoltre ha dei campi per la tipologia, la descrizione e la marca della merce. MerciOrdinate crea un’associazione tra una Ordinazione e le Merci con essa ordinate, le prime tramite la chiave esterna ordinazione e le seconde con la chiave esterna merce, che assieme costituiscono la chiave primaria per MerciOrdinate. Un’ordinazione relativa a più merci vedra una ennupla di MerciOrdinate per ogni merce differente, ognuna di queste ennuple avra uguale ordinazione. Questa tabella contiene anche la quantita ordinata di ogni merce, e lo scontoPercentuale unitario accordato con il fornitore. Nel momento in cui una MerceOrdinata viene consegnata al centro, verra memorizzata in MerciConsegnate, con una chiave esterna alla merce ordinata, costituita da idMerceOrdinata e ordinazione (chiave esterna alla chiave primaria costituita da merce e ordinazione di MerciOrdinate). Inoltre nel centro di distribuzione viene attribuito un nuovo codice univoco (idMerce) alla merce ricevuta, questo per avere una distinzione più efficiente delle varie merci (invece di utilizzare due parametri). Viene memorizzata anche la data di ricezione in ricezione e il prezzo a cui è stata acquistato il blocco di merce considerando anche lo sconto applicato in prezzoAcquisto. In MerciSpermercati vengono memorizzati gli idMerce delle merci che vengono inoltrate direttamente ai supermercati. Quelle che non vengono inoltrate ai supermercati vengono 1 stoccate in magazzino, verra quindi memorizzato in MerciMagazzino il loro idMerce, assieme ad una chiave esterna (scaffale) allo scaffale Scaffali su cui vengono riposte. Le bolle di consegna per le merci da inviare ai supermercati sono nella tabella BolleConsegna, sono identificate da una stringa codiceBolla e avra una data di spedizione della merce (dataSpedizione). Le chiavi esterne sono merceDaSpedire riferimento a MerciSupermercato e indica i prodotti da spedire, responsabileConsegna riferimento a Camionisti e conterra il codice fiscale del camionista che si occupera della spedizione, e destinazione riferimento a Supermercati con la partita iva del destinatario. Supermercati contiene la chiave p_iva, partita iva del supermercato, il nome e l’indirizzo di ogni supermercato di interesse per il centro di distribuzione. In Camionisti sono salvati tutti i camionisti del centro di distribuzione, distinti dal loro codiceFiscale e di cui sono salvati il nome e il veicolo in dotazione corrente (veicoloInDotazione), chiave esterna ai Veicoli del centro di distribuzione. Il database è stato ideato per poter essere utilizzato anche da una grossa ditta di distribuzione merci, che può anche possedere vari centri di distribuzione disposti in posti diversi. I vari centri sono quindi memorizzati nella tabella CentriDiDistribuzione e sono identificati dall’indirizzo del centro (indirizzo), ed è memorizzato anche l’eventuale nome della sede (nome). Ogni centro di distribuzione può contenere vari MagazziniMerci e vari MagazziniRicambi. Ogni magazzino è distinto dagli altri dello stesso tipo da un identificativo idCapanno, costituito da un unico carattere. Inoltre queste tabelle hanno un riferimento esterno al centro di distribuzione a cui appartengono (centroDiDistribuzione riferimento ad indirizzo in CentriDiDistribuzione); questi due campi assieme costituiscono la chiave primaria dei magazzini, sono necessari entrambi in modo da permettere a magazzini di centri di distribuzione differenti di poter avere stesso identificativo. All’interno dei MagazziniMerci sono distribuiti vari scaffali, rappresentati dalla tabella Scaffali, che contiene il codice dello scaffale codiceScaffale, e un riferimento alla chiave primaria del magazzino merci nel quale lo scaffale si trova (idCapanno e centroDiDistribuzione riferimenti alle chiavi primarie omonime in MagazziniMerci). Inoltre codiceScaffale e centroDiDistribuzione sono chiavi primarie per Scaffali, il che significa che possono esserci scaffali con lo stesso codice in centri di distribuzione diversi, ma non in magazzini diversi nello stesso centro di distribuzione. I magazzini ricambi dei centri di distribuzione sono dedicati ad immagazzinare i ricambi destinati ai veicoli della ditta. I vari ricambi sono memorizzati nella tabella Ricambi, sono distinti tra loro da un identificativo di tipo intero id, e la tabella include una descrizione del ricambio (descrizione), il suo costo unitario(costoUnitario), la quantita presente nello stock (giacenza), la scorta minima di quel prodotto (scortaMinima), sotto la quale bisogna provvedere ad eseguire un ordine di restock, possiede anche un campo quantitaOrdineRestock con valore nullo se la giacenza è superiore alla scortaMinima, ma in caso contrario indichera la quantita di quel componente da ordinare, e questa quantita sara obbligatoriamente maggiore della differenza tra la 2 scortaMinima e la giacenza. Infine c’è un riferimento al magazzino ricambi nel quale si trova il componente idCapanno e centroDiDistribuzione sono il riferimento a MagazziniRicambi e indica in quale capanno di quale centro di distribuzione si trova quello specifico ricambio Per semplicita, ricambi dello stesso tipo, ma che si trovano in centri di distribuzione differenti, avranno anche id differenti, così da poter usare una chiave composta da un unico elemento invece di dover usare una chiave primaria composta da id e centroDiDistribuzione. Il database terra conto anche delle varie revisioni che verranno effettuate nell’officina del centro di ditstribuzione, e verranno memorizzate nella tabella Revisioni, sono differenziate da un intero (idRevisione), contengono un riferimento al veicolo revisionato attraverso il suo numero di telaio (veicoloRevisionato), viene memorizzata la data d’inizio (inizio) e quella di fine (fine) della revisione, quest’ultima può assumere valore nullo se la revisione è ancora in corso. Le revisioni possono essere Ordinarie oppure Straordinarie. Condividono idRevisione con la Revisione madre, però contengono parametri differenti: le revisioni ordinarie memorizzano anche la tipologia di revisione, l’intervallo kilometrico (intervalloKm) al quale viene effettuato quel tipo di revisione (es. intervalloKm=1000, significa che quel tipo di revisione viene effettuata ogni 1000 km), e il valore del contakilometri del veicolo revisionato al momento della revisione (contatoreKilometrico); le revisioni straordinarie invece memorizzano il motivo per cui è stata effettuata quella revisione non prevista (motivo). Se il veicolo revisionato supera la revisione, allora viene rilasciato il tagliando relativo alla verifica superata. I Tagliandi hanno un campo revisione che fa riferimento a idRevisione della revisione ordinaria a cui appartiene, e questo campo, insieme al campo tipologiaValidita, costituiscono la chiave primaria di Tagliandi. Il campo tipologiaValidita è necessario dal momento che ad una singola revisione possono essere accorpati anche più tagliandi, uno per ogni validita superata, questo parametro va proprio a identificare la validita superata. In una revisione può capitare che vengano utilizzati alcuni ricambi, qui entra in gioco la tabella RicambiUtilizzati, che crea una relazione tra la revisione e i ricambi utilizzati. Nel momento in cui durante una revisione si decide di prendere un certo ricambio, viene aggiunta una ennupla a questa tabella, con il riferimento alla revisione in questione (utilizzatoInRevisione), al ricambio utilizzato (ricambio) e alla quantita utilizzata (quantita). La chiave per questa tabella è costituita dalla combinazione delle due chiavi esterne. Se in una revisione vengono utilizzati più ricambi differenti, allora ci saranno vari membri di questa tabella con uguale campo utilizzatoInRevisione. Il database dedica anche una tabella per memorizzare tutti i veicoli nel parco automezzi del centro di distribuzione, la tabella Veicoli. I veicoli sono distinti dal loro numero di telaio (numeroTelaio), e sono memorizzati anche il costruttore, la capacita di carico (capacita) espressa in tonnellate e la patente necessaria per poterlo guidare. In una tabella a parte chiamata DatiLogistici sono memorizzati tutti i dati secondari relativi ad un veicolo quali il suo contatore chilometrico (contaKm), la sua data di immatricolazione (immatricolazione) e la data della prossima revisione prevista 3 (prossimaRevisione). La chiave di questa tabella è la chiave esterna veicolo che fa riferimento a numeroTelaio del veicolo al quale appartengono i dati logistici. Sono memorizzati anche i Meccanici impiegati nel centro di distribuzione, dei quali interessa solo il nome (nome) e il numero di telefono (telefono), ragion per cui è stata presa la decisione di identificare i meccanici attraverso il numero di telefono, essendo questo unico. Ogni meccanico può avere delle competenze su vari veicoli. Queste competenze vengono gestite da Competenze, che mette in corrispondenza un meccanico (meccanico riferimento a telefono in Meccanici) con il veicolo su cui ha le competenze (competenzeSuVeicolo riferimento a numeroTelaio in Veicoli). Questi due parametri oltre a essere chiavi esterne costituiscono anche la chiave primaria per Competenze. La tabella Associazioni invece gestisce la relazione tra un veicoli e i meccanici addetti allo stesso. Infatti la tabella possiede un riferimento veicolo (riferimento a numeroTelaio in Veicoli) del veicolo interessato, e un riferimento meccanico (riferimento a telefono in Meccanici) al meccanico addetto. Queste chiave esterne fanno parte anche della chiave primaria. Ad ogni revisione lavorera uno o più meccanici, e per gestire ciò si deve sfruttare la tabella Incarichi, che associa una revisione al meccanico che se ne occupa, rispettivamente attraverso le chiavi esterne revisione (riferimento ad idRevisione in Revisioni) e meccanico(riferimento a telefono in Meccanici).