Questo articolo è stato scritto principalmente per i principianti. Tuttavia, copre alcuni concetti di progettazione di database interessanti e spesso dimenticati che sono ugualmente interessanti per i professionisti di database SQL.
La parte corrente è incentrata sui concetti di progettazione del database e sulla relativa mappatura a tabelle, colonne e relazioni del database SQL. Se conosci il background dei database e degli strumenti che stiamo per utilizzare, progetterai il tuo primo database SQL con sicurezza.
Prerequisiti
Prima di procedere, assicurati di avere le seguenti cose:
- L'edizione Express/Developer di SQL Server 2016/2017/2019 è installata sul computer
- SSMS (SQL Server Management Studio) è installato
Inoltre, devi avere una conoscenza di base dei database e degli strumenti di cui sopra.
Non è un problema se non si dispone delle ultime versioni di SQL Server e SSMS. Tuttavia, si consiglia vivamente di avere le versioni più recenti, se non le più recenti disponibili. Puoi ottenere le versioni necessarie dalle risorse seguenti:
- Scarica SQL Server 2017 Developer Edition.
- Scarica SQL Server 2019 (in alternativa, per ottenere l'ultima edizione di SQL Server Express/Developer).
- Oppure, scarica un'edizione specializzata gratuita di Developer o Express SQL Server.
- Scarica SSMS (SQL Server Management Studio)
Tieni presente che questi collegamenti funzionano tutti correttamente al momento della stesura di questo articolo. Se Microsoft decide di sostituirli, scarica la versione più recente disponibile.
Informazioni sulla progettazione di database SQL
Per iniziare a progettare il tuo database SQL con SQL Server Management Studio (SSMS), devi avere in mente un piano di progettazione.
Non è facile senza conoscere i concetti fondamentali della progettazione di database. Tuttavia, una volta ottenuti questi concetti e la loro implementazione, inizi naturalmente a seguire i principi di progettazione. È comune a quasi tutti gli sviluppatori di database.
Esaminiamo prima alcuni concetti fondamentali di progettazione del database. Non è facile trattarli tutti in un articolo, ma abbiamo bisogno di qualcosa da cui partire.
Comprendiamo un database tipico in termini di quanto segue:
- Entità
- Attributi
- Relazioni
Cos'è un'entità?
Un'entità è qualsiasi cosa che l'azienda o un individuo vorrebbe archiviare in un database. Ad esempio:
- Cliente.
- Ordine.
- Prodotto.
Possiamo dire che un Cliente è un'entità se l'azienda desidera archiviarla in una struttura di database per scopi transazionali, di analisi e di reporting. Allo stesso modo, un Ordine inseriti dal Cliente è anche un'entità se l'azienda desidera vedere tali informazioni. Pertanto, queste informazioni devono far parte del database.
Tuttavia, un Ordine non ha molto senso senza un Prodotto . Un Prodotto offerto al Cliente è anche un'entità.
Come viene mappata l'entità al database?
Dal punto di vista del database, un'entità può essere mappata su una tabella. Pertanto, se un'azienda ha bisogno delle entità Cliente, Ordine e Prodotto, lo sviluppatore del database può mapparle come tre tabelle.
Cos'è un attributo?
Un attributo è una descrizione di un'entità. Ad esempio:
- Nome cliente
- Tipo ordine
- Nome prodotto
Se il Cliente è un'entità, il nome del cliente (Nome Cliente ) è un attributo. Questo attributo descrive la nostra entità (Cliente ). Allo stesso modo, TipoOrdine è un attributo dell'Ordine entità e NomeProdotto è un attributo del Prodotto entità.
Come viene mappato l'attributo al database?
Un attributo, ad esempio CustomerName, descrive il Cliente tabella e può essere mappato su una colonna in quella tabella.
Un'entità con più attributi
Va bene per un'entità avere più attributi. Pertanto, possiamo avere molte colonne (attributi) in una tabella (entità).
Relazioni tra entità
Un'entità può essere correlata a un'altra entità tramite relazioni. Una tabella può essere correlata a un'altra tabella. Esistono molti tipi di entità o relazioni tabulari:
Rapporto cliente-ordine (uno a molti)
Un Cliente (entità/tabella) può essere correlato a un Ordine (entità/tabella) per i seguenti motivi:
- Un cliente può effettuare un ordine.
- Un cliente può effettuare molti ordini.
È vero anche il contrario:
- Molti ordini possono essere effettuati da un cliente.
- Un ordine può essere effettuato da un cliente.
Questo è un esempio di una relazione uno-a-molti :un cliente può effettuare molti ordini e molti ordini possono essere effettuati da un cliente.
Rapporto prodotto-ordine (uno a molti)
Un Prodotto (entità/tabella) può essere correlato a un Ordine (entità/tabella) nel seguente modo:
- Un prodotto può essere assegnato a un ordine.
- Un prodotto può essere assegnato a molti ordini.
Allo stesso modo:
- Molti ordini possono essere assegnati a un prodotto.
- Un ordine può avere un prodotto.
Esiste una relazione uno-a-molti tra Prodotto e Ordine .
Rapporto cliente-prodotto (molti-a-molti)
Ora la relazione tra cliente e prodotto è spiegata come segue:
- Un cliente può acquistare un prodotto.
- Un cliente può acquistare più di un prodotto.
- Un prodotto può essere acquistato da un cliente.
- Un prodotto può essere acquistato da più di un cliente.
Molti prodotti possono essere acquistati da molti clienti, il che significa che il Cliente e Prodotto la relazione è molti-a-molti .
Dai un'occhiata all'illustrazione qui sotto:
Scenario di progettazione studente-insegnante
Consideriamo uno scenario di progettazione di database diverso. Lo implementerai utilizzando SSMS (SQL Server Management Studio) nell'altra parte di questo articolo.
Requisiti aziendali
Supponiamo di dover progettare un database che memorizzi le seguenti informazioni:
- Studente/i.
- Istruttore/i.
- Studenti a cui è stato assegnato un istruttore.
- Istruttori assegnati agli studenti.
Analisi preliminare
Dopo un'attenta osservazione, scoprirai qualcosa di molto interessante sui requisiti di cui sopra. "Gli studenti che hanno assegnato un istruttore" e "Gli insegnanti che sono stati assegnati agli studenti" sono lo stesso requisito.
Può essere frequente che due requisiti di aspetto diverso risultino uguali nel contesto della progettazione di database.
Identifica entità
Dai requisiti possono essere immediatamente estratte le seguenti entità:
- Studente
- Istruttore
Tuttavia, un'altra entità serve a fornirci informazioni sugli istruttori assegnati agli studenti.
Ricordiamo il primo esempio in cui abbiamo utilizzato una tabella Order:molti clienti possono acquistare molti ordini nella relazione Cliente-Ordine. È simile al nostro insegnante-studente relazione tabulare:molti istruttori possono essere assegnati a molti studenti.
Identifica attributi
Possiamo scegliere attributi utili per le entità identificate, in base allo scenario dell'ordine cliente:
- Studente:ID studente, nome.
- Istruttore:ID istruttore, nome.
- Studente-Istruttore:ID Studente-Istruttore, ID Studente, ID Istruttore.
Relazioni di identità:
Identificare le relazioni tra entità:
- Studente -> Studente-Istruttore (uno-a-molti).
- Istruttore-> Studente-Istruttore (uno-a-molti).
- Studente -> Istruttore (molti-a-molti).
Ricorda che usiamo sempre un mid-table per risolvere la relazione molti-a-molti. Ecco perché abbiamo inserito nel piano l'entità Studente-Istruttore.
Mappatura di entità e attributi a tabelle e colonne
Ora possiamo mappare le entità alle tabelle. Pertanto, creeremo le seguenti tre tabelle:
- Studente.
- Istruttore.
- Studente-Istruttore.
Allo stesso modo, gli attributi di tali entità, una volta mappati sulle colonne, saranno i seguenti:
- Studente:ID studente, nome.
- Istruttore:IstruttoreId, Nome.
- Studente-Istruttore:StudentInstructorId, StudentId, InstructorId.
Nota l'illustrazione seguente:
Congratulazioni! Hai imparato con successo i concetti di progettazione del database. Conosciamo entità, attributi e relazioni e i passaggi per mapparli a tabelle e colonne nel database.
I prossimi articoli ti guideranno attraverso i passaggi di progettazione del database utilizzando SSMS (SQL Server Management Studio).
Cose da fare
Ora che hai compreso le basi della progettazione di database, prova le seguenti cose per migliorare ulteriormente le tue abilità:
- Prova ad aggiungere un'altra entità denominata Fornitore con gli attributi SupplierId e SupplierName. Verifica se riesci a identificare correttamente le seguenti relazioni:
- Ordine-Fornitore;
- Fornitore-Cliente;
- Fornitore-Prodotto.
- Progetta un database insieme all'identificazione di entità, attributi e relazioni per una libreria. Suggerimento:i libri vengono rilasciati ai membri e i membri prendono in prestito libri dalla biblioteca. Membro, Libro, Emesso possono essere entità.
- Identificare il tipo delle seguenti relazioni tabulari per le entità di cui sopra:
- Rilasciato dal membro;
- Libro emesso;
- Libro dei membri;
- Membro del libro.
Leggi anche
Impara la progettazione di database con SQL Server Management Studio (SSMS) – Parte 2