Bentornati. Piano piano l’applicativo MS Access per la gestione di un ristorante/pizzeria sta prendendo vita. Ho creato tutte le tabelle necessarie e le ho messe opportunamente in relazione ottenendo il seguente schema (logico):
Ad un primo colpo d’occhio potrebbe sembrare alquanto complesso. In realtà, se andiamo ad analizzarlo in modo più localizzato, ci accorgiamo che si tratta di una complessità solo apparente.
Analizziamo queste prime relazioni. La tabella ordini è certamente quella che possiamo considerare centrale per l’applicazione in quanto rappresenta l’elemento attraverso il quale i camerieri raccolgono le scelte dei clienti, ne definiscono la collocazione, inviano le richieste in cucina e consentono la stesura del conto. All’interno di tale tabella c’è la chiave esterna id_tavolo che è messa in relazione uno-a-molti con la chiave primaria idTavolo della tabella tavoli. In pratica nell’ordine si inserisce un riferimento al tavolo dove siederanno i clienti di quell’ordine; ogni tavolo va poi collocato in una certa sala e ciò avviene attraverso la relazione uno-a-molti grazie alla chiave esterna idSala della tabella tavoli con la chiave primaria idSala della tabella sale. Da notare che nella tabella ordini è presente il campo nr_persone e ci si potrebbe chiedere perché indicarlo quando nella tabella tavoli è presente il campo nrPosti: la risposta è abbastanza intuitiva perché sappiamo benissimo che al ristorante ci si può accomodare a tavoli con un numero di posti maggiore di quello necessario oppure, al contrario, tale numero può essere integrato, con l’aggiunta di coperti e sedie mancanti.Sempre all’interno della tabella ordini troviamo la chiave esterna id_ricevente in relazione uno-a-molti con la chiave primaria id_dipendente della tabella dipendenti; questa relazione consente di inserire nella tabella ordini un riferimento al cameriere (o altro dipendente) che ha ricevuto quell’ordine. Ad ogni dipendente è assegnata una mansione come si evince dalla relazione con la tabella mansioni.
In questa immagine possiamo notare che la tabella ordini è in relazione con la tabella prenotazioni, una relazione nella quale tuttavia non è stato impostato il vincolo di integrità referenziale. Ciò è dovuto al fatto che non necessariamente è presente una prenotazione per ogni ordine: ci sono clienti che si presentano senza prenotazione. Inoltre nella tabella prenotazioni vi è un flag (valore boolean, vero o falso, del campo asporto) per indicare se la prenotazione riguarda appunto prodotti da asporto. Da rilevare la presenza del riferimento al dipendente che ha inserito la prenotazione, a data e ora di prenotazione ed eventuale annullamento della stessa (campo disdetto_il). Le prenotazioni possono riguardare sia la consumazione sul posto, sia prodotti da ritirare personalmente.
La tabella voci_ordini, in relazione uno-a-molti con la tabella ordini, contiene l’elenco di ciò che è stato ordinato dai clienti in un certo ordine. Non si tratta soltanto di pietanze, ma possono essere anche presenti voci quali coperti, bevande, caffetteria, ecc. Da dove vengono selezionate queste voci? Dalla tabella voci_categorie_menu, che associa alle categorie in cui si articola ogni menu (antipasti, primi, secondi, contorni, ecc.) le voci che si trovano normalmente negli stessi, e quindi le varie tipologie di pizze, di primi, di secondi, di dessert e così via, con le diverse denominazioni che vengono assegnate a queste voci nei ristoranti e nelle pizzerie. Le voci si compongono di uno o più ingredienti, che vengono tracciati grazie alla relazione ingredienti_voci che crea un elenco degli ingredienti presenti in ogni voce: ad es. per la voce pizza margherita troveremo gli ingredienti pomodoro e mozzarella.
Infine le voci presenti negli ordini possono essere oggetto di variazioni, sia in aggiunta che in sottrazione di ingredienti. La tabella variazioni_voci ha proprio questo scopo e, come vedremo nel prossimo post, nella maschera di inserimento delle voci degli ordini sarà possibile aprire una finestra a popup, che visualizzerà gli ingredienti di ogni voce e darà la possibilità di depennarli oppure aggiungerne di nuovi.
Pertanto restate sintonizzati perché nel prossimo articolo renderò disponibile per il download una prima versione pressoché completa del database di gestione ristorante-pizzeria!