Database
 sql >> Database >  >> RDS >> Database

Progettazione di un modello di dati per un sistema di prenotazione di camere d'albergo

È risaputo che il modo migliore per imparare qualcosa è metterlo in pratica in uno scenario di vita reale. Ovviamente, lo stesso vale per la modellazione di database. Pertanto, in questo articolo ho deciso di insegnarti come creare una semplice struttura di database, prendendo un esempio da manuale di un sistema di prenotazione di camere d'albergo. Ti mostrerò come iniziare e ti darò alcune idee per estendere il modello.

Modellazione di database:scopri, scopri, scopri

In questo articolo progetteremo un modello di dati per un sistema di prenotazione di camere d'albergo. Cerchiamo un modello di dati in cui possiamo rappresentare le informazioni sulle camere, gli ospiti e le prenotazioni prenotate nel nostro immaginario VERTABELO***** Hotel. Tutte queste informazioni verranno archiviate in tabelle.

La modellazione del database è un processo di rilevamento ciclico. Per prima cosa identifichiamo le tabelle principali e i suoi attributi. Nel nostro modello i tavoli principali sono:room , guest e reservation . Quindi continuiamo a perfezionare le nostre tabelle scoprendo i loro attributi o colonne. Ad esempio, la room la tabella ha attributi come:stanza number , name e smoke flag tra gli altri.

Reservation la tabella ha gli attributi date_in , date_out , status (annullato, confermato) e made_by (online, di persona, telefono, mail), mentre gli attributi del tavolo guest sono:name , last_name e member_since . Forse ti senti come la reservation la tabella ha bisogno di più attributi (come tipo di camera, numero di letti), tratteremo questo punto in seguito, fino ad allora, considera la nostra reservation tabella incompleta. Il seguente modello di dati creato in Vertabelo mostra le tabelle principali.




Tipi di dati:quali sono i domini dei valori consentiti per una colonna?

Si noti che ogni colonna ha un tipo di dati (varchar, integer, date, boolean) per indicare che tipo di valori possono essere assegnati alla colonna. Ad esempio, la colonna smoke sul tavolo room è booleano tipo di dati, che significa solo vero o falso sono i valori consentiti.

Chiavi primarie:il numero di previdenza sociale di ogni record

Ogni tabella dovrebbe avere una colonna (o più di una) che funge da identificatore per ogni record nella tabella. Questa colonna è chiamata chiave primaria (PK) e le best practice sulla progettazione del database suggeriscono che ogni tabella deve avere una PK.

Se diamo un'occhiata al precedente modello di dati Vertabelo, vedremo che ogni tabella ha una colonna chiamata id con un indicatore PK a destra. Queste colonne id formano la PK (come convenzione chiamiamo id la colonna PK).

Un concetto importante, forse ovvio per molti lettori, è che una colonna PK non può avere valori duplicati. In altre parole, ogni colonna PK ha un vincolo univoco e qualsiasi tentativo di creare un nuovo record con un valore duplicato verrà rifiutato con un errore dal gestore del database.

Continua a scoprire; Trova nuovi oggetti database

Una prenotazione è uno degli elementi più complessi da rappresentare in questo modello di dati. Ad una prenotazione possono essere associate più stanze (ad esempio “Desidero prenotare una camera doppia e una camera separata con 3 letti per i miei bambini”). Questo requisito aziendale aggiunge 4 cose al nostro modello:

Una nuova tabella: Dobbiamo creare una nuova tabella chiamata room_reserved , dove conserviamo tutte le camere appartenenti a una prenotazione.

Aggiungi due riferimenti: Un riferimento è un elemento molto importante in un modello di dati. Un riferimento descrive come una tabella è correlata a un'altra tabella. Nel nostro modello, ogni camera prenotata appartiene a una prenotazione, quindi utilizzeremo un riferimento per modellare tale fatto. Questo riferimento è rappresentato graficamente come una linea che collega entrambe le tabelle.

Inoltre, poiché ogni prenotazione appartiene a un ospite, dobbiamo creare un nuovo riferimento che colleghi il guest e la reservation tavoli.

Sposta una colonna: Poiché possiamo avere più camere appartenenti a una prenotazione, dobbiamo consentire la cancellazione per singola camera, dopodiché spostiamo l'attribute stato da reservation a reserved_room tabella.

Il modello di dati aggiornato è mostrato nel diagramma seguente progettato in Vertabelo:



Cosa succede alle tabelle collegate da un riferimento?

Quando creiamo un riferimento tra due tabelle, una nuova colonna viene aggiunta a una delle tabelle. Questa colonna appena aggiunta è chiamata chiave esterna e funge da puntatore all'altra tabella consentendo connessioni tra tabelle. Ad esempio, dai un'occhiata ai seguenti diagrammi:

Fig. 1 Tavoli reservation e guest prima e dopo l'aggiunta di un riferimento

Continua a scoprire; Scegli di più

Un punto in attesa di essere modellato è il fatto che le stanze possono essere utilizzate da alcuni ospiti per un periodo di tempo. Per rappresentare questo fatto commerciale, abbiamo aggiunto 2 tabelle:hosted_at e occupied_room .

Tieni presente che ogni persona che ha soggiornato presso l'hotel avrà un record in hosted_at . Questo record avrà un riferimento alla stanza che occupava e all'ospite. Ecco perché hosted_at ha un doppio riferimento verso guest e occupied_room .

La tabella occupied_room avrà un record per ogni stanza in affitto, su questo record possiamo trovare i campi:check_in e check_out di tipo timestamp che indica quando inizia e finisce il noleggio. Un tipo di dati timestamp memorizza un punto nel tempo con precisione arbitraria. Ogni occupied_room record conterrà anche un riferimento al numero della camera affittata e indirettamente tramite hosted_at agli ospiti che hanno soggiornato in questa camera.

Abbiamo anche aggiunto la tabella room_type al modello dati; l'idea è di raggruppare le stanze per categoria o tipologia di stanza. Ad esempio, "standard un letto matrimoniale", "lusso 2 letti matrimoniali" possono essere descrizioni del tipo. Abbiamo anche un attributo max_capacity qui.




Esercizi: La progettazione di database è una disciplina di facile approccio, tuttavia, ci vuole tempo per diventare un esperto in materia. Se stai facendo i primi passi sulla progettazione del database, prova a completare il modello di dati corrente per consentire:

  • Se due o più ospiti condividono una camera, consenti check-in e check-out diversi per ogni ospite.
  • In alcuni casi gli hotel possono modificare la configurazione delle camere (ad esempio da standard un letto matrimoniale a 2 letti matrimoniali luxury). Aggiungi al modello dati gli elementi per rappresentare tali modifiche alla configurazione, mantenendo lo storico di ogni stanza.