Sei pronto per iniziare a creare database e tabelle con il Structured Query Language? In questo articolo, esploriamo il processo di creazione manuale delle tabelle con i comandi CREATE DATABASE e CREATE TABLE. Se non conosci SQL, potresti voler rivederne alcuni Nozioni di base su SQL primo.
Requisiti aziendali
Prima di sederci alla tastiera, dobbiamo assicurarci di avere una solida comprensione delle esigenze del cliente. Qual è il modo migliore per ottenere questa intuizione? Parlando con il cliente, ovviamente! Dopo aver incontrato il direttore delle risorse umane di XYZ, abbiamo appreso che è una società di vendita di widget e che è principalmente interessata a tenere traccia delle informazioni sul personale di vendita.
XYZ Corporation divide la sua forza vendita in regioni orientali e occidentali, ognuna delle quali è suddivisa in molti territori coperti da singoli rappresentanti di vendita. Il dipartimento delle risorse umane vorrebbe monitorare il territorio coperto da ciascun dipendente, nonché le informazioni sullo stipendio e la struttura di supervisione di ciascun dipendente. Per soddisfare questi requisiti, abbiamo progettato un database composto da tre tabelle, mostrate nel
Diagramma entità-relazione su questa pagina.Scelta di una piattaforma di database
Abbiamo deciso di usare a sistema di gestione del database (o DBMS) che si basa sullo Structured Query Language (SQL). Pertanto, tutti i nostri comandi per la creazione di database e tabelle dovrebbero essere scritti tenendo presente lo standard ANSI SQL.
Come ulteriore vantaggio, l'utilizzo di SQL conforme ad ANSI garantirà che questi comandi funzioneranno su qualsiasi DBMS che supporti lo standard SQL, inclusi Oracle e Microsoft SQL Server. Se non hai ancora selezionato una piattaforma per il tuo database, Database Software Options ti guida attraverso il processo di selezione.
Creazione del database
Il nostro primo passo è creare il database stesso. Molti sistemi di gestione di database offrono una serie di opzioni per personalizzare i parametri del database in questa fase, ma il nostro database consente solo la semplice creazione di un database. Come per tutti i nostri comandi, potresti voler consultare la documentazione del tuo DBMS per determinare se i parametri avanzati supportati dal tuo sistema specifico soddisfano le tue esigenze. Usiamo il comando CREATE DATABASE per impostare il nostro database:
CREA DATABASE personale
Prendere nota in particolare della capitalizzazione utilizzata nell'esempio precedente. È pratica comune tra i programmatori SQL utilizzare tutte le lettere maiuscole per le parole chiave SQL come "CREATE" e "DATABASE" utilizzando tutte le lettere minuscole per i nomi definiti dall'utente come il database "personale" nome. Queste convenzioni garantiscono una facile leggibilità.
Ora che abbiamo progettato e creato il nostro database, siamo pronti per iniziare a creare le tre tabelle utilizzate per memorizzare i dati del personale di XYZ Corporation.
Creare il nostro primo tavolo
La nostra prima tabella è costituita dai dati personali di ciascun dipendente della nostra azienda. Dobbiamo includere il nome, lo stipendio, l'ID e il manager di ciascun dipendente. È buona prassi di progettazione separare il cognome e il nome in campi separati per semplificare la ricerca e l'ordinamento dei dati in futuro. Inoltre, terremo traccia del manager di ciascun dipendente inserendo un riferimento all'ID dipendente del manager in ogni record del dipendente. Diamo prima un'occhiata alla tabella dei dipendenti desiderata.
L'attributo ReportsTo memorizza l'ID del manager per ogni dipendente. Dai record di esempio mostrati, possiamo determinare che Sue Scampi è il manager sia di Tom Kendall che di John Smith. Tuttavia, non ci sono informazioni nel database sul manager di Sue, come indicato dalla voce NULL nella sua riga.
Ora possiamo usare SQL per creare la tabella nel nostro database del personale. Prima di farlo, assicuriamoci di essere nel database corretto emettendo un comando USE:
USE personale;
In alternativa, il "personale DATABASE"; comando svolgerebbe la stessa funzione. Ora possiamo dare un'occhiata al comando SQL utilizzato per creare la tabella dei nostri dipendenti:
CREA TABELLA dipendenti
(impiegato INTEGER NOT NULL,
cognome VARCHAR(25) NOT NULL,
nome VARCHAR(25) NOT NULL,
riporta a INTEGER NULL);
Come per l'esempio precedente, si noti che la convenzione di programmazione impone di utilizzare tutte le lettere maiuscole per le parole chiave SQL e le lettere minuscole per le colonne e le tabelle con nome utente. Il comando sopra può sembrare inizialmente confuso, ma in realtà c'è una semplice struttura dietro. Ecco una visione generalizzata che potrebbe chiarire un po' le cose:
CREATE TABLE nome_tabella
(opzioni del tipo di dati nome_attributo,
...,
attributi_nome opzioni del tipo di dati);
Attributi e tipi di dati
Nell'esempio precedente, il nome della tabella è dipendenti e ne includiamo quattro attributi: idimpiegato, cognome, nome e rapporti a. Il tipo di dati indica il tipo di informazioni che desideriamo memorizzare in ogni campo. L'ID impiegato è un semplice numero intero, quindi utilizzeremo il tipo di dati INTEGER sia per il campo idimpiegato che per il campo reportto. I nomi dei dipendenti saranno stringhe di caratteri di lunghezza variabile e non prevediamo che nessun dipendente abbia un nome o un cognome più lungo di 25 caratteri. Pertanto, utilizzeremo il tipo VARCHAR(25) per questi campi.
Valori NULL
Possiamo anche specificare sia NULL o NON NULL nel campo delle opzioni dell'istruzione CREATE. Questo dice semplicemente al database se i valori NULL (o vuoti) sono consentiti per quell'attributo quando si aggiungono righe al database. Nel nostro esempio, il reparto risorse umane richiede che per ogni dipendente vengano archiviati un ID dipendente e un nome completo. Tuttavia, non tutti i dipendenti hanno un manager (l'amministratore delegato non riferisce a nessuno!), quindi consentiamo voci NULL in quel campo. Nota che NULL è il valore predefinito e l'omissione di questa opzione consentirà implicitamente i valori NULL per un attributo.
Costruire le tabelle rimanenti
Ora diamo un'occhiata alla tabella dei territori. Da una rapida occhiata a questi dati, sembra che abbiamo bisogno di memorizzare un intero e due stringhe di lunghezza variabile. Come nel nostro esempio precedente, non ci aspettiamo che l'ID regione consumi più di 25 caratteri. Tuttavia, alcuni dei nostri territori hanno nomi più lunghi, quindi espanderemo la lunghezza consentita di tale attributo a 40 caratteri.
Diamo un'occhiata all'SQL corrispondente:
CREA TABELLA territori
(territoryid INTEGER NOT NULL,
territorio Descrizione VARCHAR(40) NOT NULL,
regionid VARCHAR(25) NOT NULL);
Infine, utilizzeremo la tabella EmployeeTerritories per memorizzare le relazioni tra dipendenti e territori. Le informazioni dettagliate su ciascun dipendente e territorio sono memorizzate nelle nostre due tabelle precedenti. Pertanto, abbiamo solo bisogno di memorizzare i due numeri di identificazione interi in questa tabella. Se abbiamo bisogno di espandere queste informazioni, possiamo usare un JOIN nei nostri comandi di selezione dei dati per ottenere informazioni da più tabelle.
Questo metodo di archiviazione dei dati riduce la ridondanza nel nostro database e garantisce un utilizzo ottimale dello spazio sulle nostre unità di archiviazione. Tratteremo il comando JOIN in modo approfondito in un tutorial futuro. Ecco il codice SQL per implementare la nostra tabella finale:
CREATE TABLE dipendentiterritori
(impiegato INTEGER NOT NULL,
territorioid INTEGER NOT NULL);
Il meccanismo che SQL fornisce per alterare la struttura di un database dopo la creazione
Se sei particolarmente astuto oggi, potresti aver notato che abbiamo "accidentalmente" omesso uno dei requisiti di progettazione durante l'implementazione delle nostre tabelle di database. Il direttore delle risorse umane di XYZ Corporation ha richiesto che il database tenesse traccia delle informazioni sullo stipendio dei dipendenti e abbiamo trascurato di fornirle nelle tabelle del database che abbiamo creato.
Tuttavia, non tutto è perduto. Possiamo usare il comando ALTER TABLE per aggiungere questo attributo al nostro database esistente. Vogliamo memorizzare lo stipendio come valore intero. La sintassi è abbastanza simile a quella del comando CREATE TABLE, eccola:
ALTER TABLE dipendenti
AGGIUNGI stipendio INTEGER NULL;
Si noti che abbiamo specificato che i valori NULL sono consentiti per questo attributo. Nella maggior parte dei casi, non è disponibile alcuna opzione quando si aggiunge una colonna a una tabella esistente. Ciò è dovuto al fatto che la tabella contiene già righe senza voci per questo attributo. Pertanto, il DBMS inserisce automaticamente un valore NULL per riempire il vuoto.