Sviluppo di piani di database
Il primo passaggio della procedura di creazione di un database è rappresentato dalla creazione di un piano da utilizzare come guida durante l'implementazione del database e come specifica funzionale per il database dopo l'implementazione. La complessità e i dettagli della struttura di un database dipendono dalla complessità e dalle dimensioni dell'applicazione di database e dal tipo di utenti.
La natura e la complessità di un'applicazione di database e il processo di pianificazione possono variare significativamente. Un database può essere relativamente semplice e progettato per essere utilizzato da un singolo utente oppure può essere di grandi dimensioni, complesso e progettato, ad esempio, per consentire la gestione di tutte le transazioni bancarie per migliaia di client. Nel primo caso, per progettare il database potrebbe essere sufficiente creare una semplice bozza su un foglio di carta. Nel secondo caso, è probabile che il progetto sia un documento formale con centinaia di pagine che includono tutti i dettagli sul database.
Durante la pianificazione di un database, utilizzare la procedura seguente, indipendentemente dalle dimensioni e dalla complessità:
Raccogliere le informazioni.
Identificare gli oggetti.
Modellare gli oggetti.
Identificare i tipi di informazioni per ogni oggetto.
Identificare le relazioni tra oggetti.
Raccolta di informazioni
Prima di creare un database, è necessario determinare in modo chiaro quale funzione dovrà essere svolta dal database. Se il database sostituirà un sistema di informazioni basato su materiale cartaceo o gestito manualmente, il sistema esistente fornirà la maggior parte delle informazioni necessarie. È consigliabile interpellare tutti gli utenti coinvolti nel sistema per determinarne le funzioni e le esigenze relativamente al database. È inoltre importante identificare le funzioni che gli utenti desiderano vengano svolte dal nuovo sistema nonché individuare problemi, limiti e colli di bottiglia del sistema esistente. Raccogliere infine copie di note informative sui clienti, di elenchi di inventario, di report amministrativi e altri documenti che fanno parte del sistema esistente, in quanto saranno utili per progettare il database e le interfacce.
Identificazione degli oggetti
Durante il processo di raccolta delle informazioni, è necessario identificare gli oggetti o le entità principali che verranno gestiti dal database. L'oggetto può essere un elemento tangibile, ad esempio una persona o un prodotto, oppure un elemento meno tangibile, ad esempio una transazione commerciale, il reparto di un'azienda o un periodo di retribuzione. Vi sono in genere pochi oggetti primari, dopo la cui identificazione diventano visibili gli elementi correlati. A ogni elemento distinto del database dovrebbe corrispondere una tabella.
L'oggetto primario nel database di esempio AdventureWorks incluso in SQL Server è una bicicletta. Gli oggetti correlati alla bicicletta nell'attività di questa azienda sono i dipendenti che producono la bicicletta, i fornitori che vendono i componenti utilizzati per produrla, i clienti che l'acquistano e le transazioni di vendita eseguite con i clienti. Ognuno di questi oggetti rappresenta una tabella nel database.
Modellazione degli oggetti
Quando gli oggetti del sistema vengono identificati, è consigliabile registrarli in modo da rappresentare visivamente il sistema. È possibile utilizzare il modello di database come riferimento durante l'implementazione del database.
A tale scopo, gli sviluppatori di database utilizzano strumenti che per complessità tecnica variano da semplici appunti su carta a programmi di elaborazione di testi, fogli di calcolo e software creati appositamente alla modellazione di dati per la progettazione di database. Qualunque sia lo strumento utilizzato, è importante che venga mantenuto aggiornato.
Identificazione dei tipi di informazioni per ogni oggetto
Dopo avere identificato gli oggetti di database primari che si desidera inserire nelle tabelle, è necessario identificare i tipi di informazioni che si desidera archiviare per ogni oggetto, che rappresentano le colonne della tabella dell'oggetto. Le colonne in una tabella di database contengono alcuni tipi comuni di informazioni:
Colonne di dati non elaborati
Tali colonne contengono informazioni tangibili, come i nomi, determinate da un'origine esterna al database.
Colonne di categoria
In tali colonne vengono classificati o raggruppati i dati e viene archiviata una selezione limitata di dati, ad esempio true/false, married/single, VP/Director/Group Manager e così via.
Colonne identificatore
Tali colonne offrono un meccanismo per identificare ogni elemento archiviato nella tabella. Nel nome di queste colonne è incluso in genere un ID o un numero, ad esempio employee_id, invoice_number e publisher_id. La colonna identificatore è il componente primario utilizzato dagli utenti e dagli strumenti di elaborazione interni al database per accedere a una riga di dati nella tabella. A volte l'oggetto si presenta nella forma tangibile di ID utilizzato nella tabella, ad esempio un numero di previdenza sociale, ma nella maggior parte delle situazioni è possibile definire la tabella in modo da creare un ID artificiale affidabile per la riga.
Colonne relazionali o referenziali
Tali colonne stabiliscono un collegamento tra le informazioni di una tabella e le informazioni correlate di un'altra tabella. Ad esempio, una tabella che tiene traccia delle transazioni di vendita viene in genere collegata alla tabella customers per consentire di associare le informazioni complete sui clienti alla transazione di vendita.
Identificazione della relazione tra oggetti
Un punto di forza dei database relazionali è rappresentato dalla possibilità di correlare o associare informazioni su elementi diversi del database. È possibile archiviare in modo distinto tipi isolati di informazioni, ma il motore di database consente di combinare i dati laddove necessario. Per identificare la relazione tra oggetti durante il processo di progettazione, è necessario esaminare le tabelle, determinare in che modo sono correlate logicamente e aggiungere colonne relazionali che stabiliscono collegamenti tra le singole tabelle.
Durante la progettazione del database AdventureWorks, ad esempio, sono state create tabelle per prodotti e modelli di prodotti nel database. La tabella Production.Product contiene le informazioni per ogni prodotto, che includono una colonna identificatore denominata ProductID e colonne di dati per il nome, il prezzo, il colore, le dimensioni e il peso del prodotto. La tabella contiene colonne di categoria, ad esempio Class o Style, che consentono di raggruppare i prodotti in base a questi tipi. A ogni prodotto è inoltre associato un modello, ma queste informazioni sono archiviate in un'altra tabella. La tabella Production.Product, pertanto, include una colonna ProductModelID per l'archiviazione solo dell'ID e del modello del prodotto. Quando viene aggiunta una riga di dati per un prodotto, il valore di ProductModelID deve essere incluso nella tabella Production.ProductModel.