Quindi vuoi creare il tuo primo modello di database ma non sai come iniziare? Continua a leggere!
Presumo che tu sappia già qualcosa di tabelle, colonne e relazioni. In caso contrario, guarda i nostri tutorial video prima di continuare.
Inizia con una descrizione del sistema
Dovresti sempre iniziare a creare un modello di database con una descrizione di un sistema. In una situazione in classe, un insegnante ti fornisce una descrizione del sistema. Nella vita reale, preparare una descrizione è un processo in suo diritto. Presumo solo che tu abbia la descrizione. Non importa se te l'hanno dato il tuo cliente, il tuo capo, il tuo insegnante o l'hai scritto tu stesso.
Dai un'occhiata alla descrizione e evidenzia tutti i nomi . I nomi nella descrizione possono essere approssimativamente suddivisi in tre categorie:tabelle, attributi ed esempi.
- Tabelle rappresentano le entità primarie nel sistema:persone, oggetti fisici, eventi, transazioni, ecc.
- Attributi sono proprietà associate a un'entità primaria. Descrivono le caratteristiche della tua entità. Nel modello di database saranno le colonne nelle tue tabelle.
- Esempi sono proprio questo, esempi. Ti aiutano a comprendere i tipi di dati di determinati attributi e ti aiutano a capire la relazione tra entità diverse.
Iniziare con una descrizione ha il vantaggio di costringerti a utilizzare lo stesso glossario come tuoi utenti. Se crei un sistema per una scuola primaria, dovresti parlare di alunni. Se crei un sistema simile per un'università, dovresti parlare di studenti.
Tabelle, relazioni, colonne
- Una volta evidenziati i nomi, identifica le tabelle . Non devi modellare tutto in una volta. Concentrati innanzitutto sulle funzionalità principali del sistema.
- Quando hai le tabelle, scopri le relazioni tra i tavoli. Questo passaggio potrebbe portare all'introduzione di nuove tabelle intermedie (di giunzione).
- Infine aggiungi le colonne ai tavoli.
A questo punto, dovresti rileggere la descrizione e vedere se manca qualcosa. Ti assicuro che ci sarà qualcosa da aggiungere. Aggiungi le nuove tabelle, le nuove relazioni e le nuove colonne. Leggi di nuovo la descrizione...
Cose da tenere a mente
La creazione di un modello di database è un iterativo processi. Non provare a modellare tutto in una volta. Inizia con le entità principali del tuo sistema. Puoi aggiungere ulteriori dettagli in seguito.
È consentito porre domande . Non importa quanto sia precisa la descrizione, avrai sempre dei dubbi. Qualcosa sarà sempre sottospecificato. Fai domande sulle cose di cui non sei sicuro. Se non puoi fare domande, fai un'ipotesi ragionevole e prendi nota di quella che fai.
C'è sempre più di un modo per modellare ogni sistema. Alcuni modelli sono chiaramente cattivi, ma con la maggior parte degli altri è difficile giudicare se sono giusti o sbagliati. Il modello dipende dallo scopo del sistema, da come i dati arrivano al sistema, anche dal gusto personale del progettista. Man mano che acquisirai esperienza, diventerai più sicuro delle tue decisioni di progettazione.
Esempio:sistema di noleggio auto
Ad esempio creeremo un modello di database per un sistema di autonoleggio. Per prima cosa, dai un'occhiata a una descrizione del sistema:
Una società di autonoleggio noleggia auto ai clienti. L'azienda possiede diverse automobili. Ogni auto ha un marchio, nome del modello, anno di produzione, chilometraggio, colore e così via. Le auto sono suddivise in diverse categorie:piccole, medie, grandi, limousine.
L'azienda ha molte sedi in cui è possibile noleggiare un'auto. Le sedi di noleggio si trovano in diverse città in tutto il paese. Ci possono essere più sedi di società in una città.
Chiunque abbia più di 21 anni in possesso di una patente di guida valida può noleggiare un'auto. I clienti di età inferiore a 25 o superiore a 75 anni pagano tariffe diverse (superiori) rispetto agli altri clienti.
Prima di noleggiare un'auto, un cliente di solito effettua una prenotazione per un'auto. Un cliente specifica le date in cui verrà noleggiata l'auto, il luogo di ritiro, il luogo di riconsegna e la categoria di auto che desidera noleggiare. Un cliente può specificare di volere dell'equipaggiamento extra nell'auto, ad esempio un GPS, un seggiolino per auto per un bambino, ecc.
Quando un cliente noleggia un'auto, dichiara il luogo di ritiro e riconsegna e la data di riconsegna. Il cliente può acquistare vari tipi di assicurazione. Può anche decidere che non ha bisogno di un'assicurazione perché l'assicurazione è coperta in altro modo, ad esempio dalla compagnia della sua carta di credito. Il cliente può scegliere ulteriori opzioni come la possibilità di una riconsegna anticipata, varie opzioni di rifornimento, ecc.
Il cliente paga le spese al momento della restituzione dell'auto.
Iniziamo evidenziando tutti i nomi:
La fase successiva consiste nel trovare tabelle . Cerchiamo le entità di base nel sistema. Per cominciare, dovresti avere almeno questi:auto, cliente, posizione, città, attrezzatura, categoria (auto), assicurazione. Li mettiamo nel diagramma. Ho aggiunto l'id
colonna in ogni tabella perché ogni tabella dovrebbe avere una sorta di ID. Puoi sempre modificare la chiave primaria in un secondo momento.
Le entità del sistema di base sono nel modello, ma dovresti notare che ci manca la funzionalità principale del sistema:noleggio auto e prenotazioni. Ricorda quello che abbiamo detto all'inizio:le tabelle non sono solo oggetti fisici ma anche eventi e transazioni. Dovresti aggiungere reservation
e rental
anche come tavoli. Eccoci:
Ora aggiungiamo i riferimenti tra le tabelle nel modello. Ho numerato i riferimenti man mano che li aggiungevo. La nota accanto a ogni riferimento ti dice quando è stato aggiunto:
- Ogni auto appartiene a una categoria,
- Ogni prenotazione è per una categoria di auto,
- Ogni luogo è in una città,
- Ogni prenotazione ha un punto di ritiro e di riconsegna,
- Ogni prenotazione è effettuata da un cliente,
- Ogni noleggio è effettuato da un cliente,
- Ogni noleggio è per una determinata auto,
- Ogni noleggio ha un luogo di ritiro e riconsegna.
- Ogni noleggio è collegato a una certa assicurazione. Ma c'è una sola assicurazione per ogni noleggio? No. Ci possono essere molte assicurazioni collegate a un noleggio (assicurazione contro i danni al veicolo, contro i danni alle persone, contro i danni all'auto di qualcun altro, ...). Ho aggiunto una tabella intermedia chiamata
rental_insurance
collegato arental
einsurance
tabelle.
Manca ancora il riferimento tra auto e attrezzatura. L'attrezzatura è fissata in modo permanente a un'auto o può essere spostata da un'auto all'altra? Non c'è una risposta a questa domanda nella descrizione, quindi faremo un'ipotesi ragionevole:sì, può essere spostato. Aggiungiamo una nuova tabella car_equipment
e riferimenti tra car
e equipment
.
Eliminiamo la company
tavolo. La società di noleggio è implicitamente presente nel sistema. Dopotutto, un'altra azienda avrà il proprio sistema e il proprio database.
Infine, aggiungiamo le colonne e i loro tipi di dati. Notiamo inoltre che non esiste alcuna relazione tra reservation
e equipment
. Ma la prenotazione viene effettuata per un particolare apparecchio? No, è fatto per un tipo di attrezzatura:aggiungiamo la tabella equipment_category
e collega i tavoli reservation
e equipment
ad esso.
Abbiamo finito? Leggi di nuovo la descrizione. Il nostro modello di database omette ancora gli addebiti. Bene...
Questo è un esercizio per il lettore. (Ma se non hai voglia di esercitare le tue abilità di modellazione di database, qui puoi trovare una struttura di database pronta per l'uso per una società di autonoleggio.)