Uno schema di database funge da modello per l'organizzazione e la struttura di un database. Definisce come sono disposte le tabelle del database, quali campi contengono e come tali tabelle sono correlate tra loro, rendendo possibile l'accesso ai dati in modo coerente e prevedibile. Man mano che i sistemi di dati diventano più complessi, gli schemi dei database diventano più importanti. Uno schema del database ben progettato facilita ai team la manutenzione dei dati e l'accesso affidabile agli stessi su database operazionali, analitici e distribuiti.
In generale, nella progettazione di un database vengono tipicamente utilizzati tre tipi distinti di schema: lo schema concettuale del database, lo schema logico del database e lo schema fisico del database.
Nelle piattaforme moderne, gli schemi di database supportano anche la governance centralizzata e il controllo degli accessi su larga scala, come si vede in strumenti come Unity Catalog. Per i team che lavorano con modelli di architettura dei dati, è essenziale capire come la progettazione dello schema del database si allinea con la progettazione più ampia del sistema.
Uno schema del database è il framework strutturale che definisce come i dati vengono organizzati, archiviati e consultati all'interno di un database. Il termine schema del database descrive il layout delle tabelle del database, le relazioni tra le entità di dati e gli oggetti del database che supportano le operazioni sui dati.
Gli schemi dei database definiscono:
Mentre lo schema del database ne definisce la struttura, un'istanza del database si riferisce ai dati effettivi memorizzati in un determinato momento. Gli schemi dei database sono implementati e gestiti all'interno di piattaforme di sistemi di gestione di database come Oracle Database e sistemi di database SQL.
Gli schemi di database fanno anche parte di una più ampia architettura dei dati, contribuendo ad allineare archiviazione, elaborazione e governance tra i sistemi.
Una tabella di database è una singola struttura di archiviazione utilizzata per memorizzare i dati in un formato tabulare di righe e colonne. Rappresenta un'entità specifica, come clienti, ordini o prodotti, e memorizza i dati esistenti.
Uno schema di database è la struttura dell'intero database. Lo schema del database definisce l'organizzazione delle tabelle del database, il modo in cui sono correlate e il modo in cui vengono utilizzati e accessibili gli altri oggetti del database.
Lo schema del database è il progetto dell'edificio. Le tabelle del database sono le singole stanze.
Nella maggior parte dei casi, un database contiene più tabelle all'interno di un unico schema logico. Le tabelle vengono utilizzate insieme ad altri oggetti dello schema come indici e viste.
Per saperne di più su come gli schemi e le tabelle dei database vengono integrati nel piano dati più ampio, consulta il nostro Glossario di architettura dei dati. Comprendere la relazione tra la progettazione dello schema del database e le pratiche di modellazione dei dati è fondamentale per i progettisti di database.
Gli schemi di database sono in genere suddivisi in tre tipi: schema di database concettuale, schema di database logico e schema di database fisico. Questa separazione aiuta a distinguere intento, struttura e implementazione, rendendo i database più facili da progettare, mantenere e far evolvere. Ogni tipo di schema di database ha uno scopo e un gruppo di stakeholder distinti, ma funzionano insieme come parte di un processo unificato di progettazione dello schema.
In pratica, questa separazione supporta i moderni flussi di lavoro di data engineering, consentendo ai team di far evolvere la struttura senza interrompere i sistemi downstream.
Lo schema concettuale fornisce una visione di alto livello dei dati. Si concentra sulle entità aziendali e sulle relazioni senza dettagli tecnici.
Punti chiave:
Lo schema logico del database è la struttura dati dettagliata che rappresenta lo schema concettuale.
Include:
La struttura logica del database rimane indipendente dal database e può seguire approcci di modellazione dei dati a più livelli come l'architettura medallion.
Lo schema fisico del database rappresenta le modalità di archiviazione e di accesso ai dati in un sistema di database.
Lo schema fisico del database descrive:
Questo livello è solitamente gestito da un amministratore di database. Lo schema fisico include dettagli su come la struttura logica è implementata su una specifica infrastruttura dati.
Uno schema di database è composto da diverse parti principali che lavorano insieme per archiviare, recuperare e proteggere i dati. I componenti principali di uno schema di database possono essere compresi come segue:
Le tabelle del database sono il luogo principale in cui vengono memorizzati i dati in uno schema di database. Ogni colonna in uno schema di database ha la propria struttura di tabella e i propri tipi di dati, il che garantisce la coerenza nell'archiviazione dei dati.
Oltre alle tabelle del database, altri oggetti del database possono essere intesi come:
La possibilità di accedere a questi oggetti dello schema è controllata tramite autorizzazioni, che garantiscono che solo gli utenti autorizzati del database possano accedere ai dati sensibili in uno schema di database.
Per i team che si occupano di governance dei dati, è fondamentale capire in che modo le autorizzazioni per lo schema del database si allineano con le policy di governance più ampie.
Queste chiavi garantiscono l'integrità dei dati in uno schema di database.
La chiave primaria in una tabella identifica in modo univoco ogni record. Ogni riga di una tabella può essere identificata in modo univoco tramite una chiave primaria. La presenza di una chiave primaria garantisce che non vengano archiviati dati duplicati in una tabella. Un'intera chiave primaria può essere composta da chiavi primarie e chiavi esterne che interagiscono tra loro.
Le chiavi esterne collegano due o più tabelle in uno schema di database. Le chiavi esterne si collegano a una chiave primaria in un'altra tabella, stabilendo relazioni tra dati correlati.
Queste relazioni sono fondamentali nei database relazionali e nei moderni sistemi di database SQL, dove l'affidabilità transazionale dipende da solide garanzie delle transazioni ACID. L'uso corretto delle chiavi primarie e delle chiavi esterne garantisce la coerenza dei dati nell'intero database.
I tipi di dati definiscono quali tipi di valori sono consentiti nelle colonne. I tipi più comuni includono:
Il Data Definition Language (DDL) viene utilizzato per definire o modificare schemi e tabelle del database utilizzando le istruzioni create database.
Le regole vengono utilizzate per aggiungere funzionalità di sicurezza, come:
La definizione di queste regole a livello di schema garantisce che i database possano mantenere l'accuratezza e la coerenza dei dati.
Indici e viste vengono utilizzati per migliorare le prestazioni, l'usabilità e il controllo all'interno di uno schema di database.
Gli indici vengono utilizzati per migliorare le prestazioni delle query, velocizzando il recupero dei dati dalle colonne su cui vengono effettuate ricerche frequenti. Tuttavia, è noto che gli indici degradano le prestazioni di scrittura, poiché devono essere aggiornati ogni volta che i dati vengono inseriti, aggiornati o eliminati.
Le viste sono tabelle virtuali utilizzate per rappresentare tabelle reali, solitamente per semplificare la scrittura delle query o per limitare l'accesso a dati specifici.
Uno schema di database ben progettato bilancerà le prestazioni e la complessità, garantendo buone prestazioni ed evitando complessità non necessarie.
Gli approcci possono essere adatti a diversi tipi di attività relative ai dati. La scelta dell'approccio alla progettazione dello schema dipende da come verranno utilizzati i dati.
Lo schema a stella è una semplice tecnica di modellazione dei dati utilizzata nel data warehousing. Dispone di:
Motivi per utilizzare la modellazione dei dati con schema a stella:
Lo schema a stella è fondamentale nelle architetture di data warehouse.
In uno schema a fiocco di neve, i dati vengono normalizzati per ridurre i requisiti di archiviazione suddividendo le tabelle delle dimensioni in più tabelle delle dimensioni.
I vantaggi dell'utilizzo di uno schema a fiocco di neve rispetto a uno schema a stella includono:
Gli schemi a fiocco di neve possono essere utilizzati anche quando i dati nelle dimensioni sono condivisi tra più contesti o quando devono essere ulteriormente normalizzati. Sia gli schemi a stella che quelli a fiocco di neve prevedono una tabella dei fatti centrale circondata da tabelle delle dimensioni.
Lo schema gerarchico è uno schema in cui i dati sono organizzati in una struttura ad albero con relazioni genitore-figlio, in cui ogni figlio ha un solo genitore che utilizza un modello gerarchico.
Questo tipo di schema è ideale per i dati che hanno una gerarchia intrinseca, come la struttura di un'organizzazione o un documento XML. Lo schema gerarchico è meno flessibile dello schema relazionale e non è in grado di gestire relazioni molti-a-molti. Questo schema è ancora utilizzato in alcune applicazioni, sebbene il modello gerarchico sia stato in gran parte sostituito dai database relazionali.
Anche i database NoSQL presentano considerazioni sulla progettazione dello schema. A differenza dei database relazionali, potrebbero non aver bisogno di uno schema prima di potersi connettere e archiviare dati.
I pattern di progettazione dello schema più comuni per i database NoSQL includono:
Questi sistemi danno priorità alla flessibilità e alla scalabilità, ma spesso forniscono meno garanzie di coerenza integrate. Le applicazioni moderne, incluse la ricerca basata su vettori e le query di similarità, estendono ulteriormente questi compromessi nei database vettoriali. Capire quando utilizzare i database NoSQL rispetto alla tradizionale progettazione di schemi per database relazionali è importante per i progettisti di database.
La progettazione dello schema del database è un processo ciclico che passa dalla comprensione dei requisiti aziendali all'implementazione di un database funzionante.
Il processo inizia con la comprensione dei requisiti aziendali. In questo passaggio, il team:
È importante prendere in considerazione la scalabilità, la sicurezza dei dati sensibili e qualsiasi norma e legge nel processo, poiché è difficile implementare tali considerazioni in futuro.
Dopo aver identificato i requisiti aziendali, il team crea i diagrammi entità-relazione, che sono un modello di alto livello dei dati nel database. Nella progettazione concettuale del database, il team:
Un diagramma entità-relazione fornisce una rappresentazione visiva utile sia per gli utenti business che per quelli tecnici per raggiungere un accordo. La progettazione concettuale deve essere verificata per garantire che corrisponda alle esigenze reali prima di passare alla fase successiva.
Lo schema logico trasforma il modello concettuale in uno schema di database dettagliato pronto per l'implementazione.
Durante questa fase:
In questa fase, lo schema logico del database è abbastanza preciso per l'implementazione, ma ancora indipendente da un particolare sistema di database. Lo schema logico funge da ponte tra lo schema concettuale e lo schema fisico.
Lo schema fisico rappresenta l'implementazione del database su un particolare sistema di tecnologia di database.
Questo passaggio in genere include:
Nel caso in cui gli schemi del database vengano trasferiti da un altro sistema o in un sistema esistente, la migrazione dei dati è un passaggio importante. Lo schema fisico del database deve tenere conto dei requisiti specifici della piattaforma di gestione del database di destinazione.
La normalizzazione e l'integrità dei dati vanno di pari passo e contribuiscono a garantire che i dati siano accurati, coerenti e facili da gestire.
La normalizzazione del database è il processo di organizzazione dei dati per ridurre la ridondanza e migliorare l'integrità dei dati. La normalizzazione è comunemente descritta tramite forme normali progressive, tra cui 1NF, 2NF e 3NF.
La normalizzazione del database divide una tabella di grandi dimensioni in tabelle di dati più piccole e correlate. Questo aiuta a:
In alcuni casi, la normalizzazione rallenta le operazioni. La denormalizzazione è una tecnica di progettazione di database in cui:
La denormalizzazione è utilizzata nel data warehousing e nell'analisi dei dati, nonché negli schemi a stella e a fiocco di neve per i carichi di lavoro di elaborazione analitica online.
L'obiettivo di una buona progettazione dello schema è supportare i pattern comuni di accesso ai dati. Molto spesso, ciò significa progettare uno schema normalizzato per facilitarne la comprensione, per poi apportare piccole modifiche per le prestazioni o l'usabilità.
La coerenza è importante anche per l'usabilità, consentendo a molte persone di lavorare con i dati senza confusione. La progettazione dello schema non è un processo una tantum. È importante rivedere spesso lo schema e apportare modifiche per evitare che una piccola limitazione ne diventi una grande.
Gli schemi di database scalabili si basano su alcuni semplici concetti:
Questi concetti sono importanti nei grandi database di warehouse. Comprendere la relazione tra la progettazione dello schema del database e i principi di architettura dei dati garantisce la scalabilità.
La progettazione dello schema svolge anche un ruolo chiave nella sicurezza e nella governance dei dati.
Per le organizzazioni che implementano strategie complete di governance dei dati, le autorizzazioni per lo schema del database sono un controllo fondamentale.
Gli errori nella progettazione dello schema possono causare problemi di qualità dei dati e di prestazioni:
Il linguaggio SQL viene utilizzato per la definizione degli schemi dei database. Il linguaggio SQL fornisce istruzioni su come creare e modificare gli schemi dei database e su come mantenerli aggiornati in base alle modalità di archiviazione o di accesso ai dati.
Le attività più comuni di gestione dello schema del database in SQL implicano una serie di istruzioni di base del Data Definition Language (DDL).
Creare schemi e tabelle: l'istruzione CREATE SCHEMA crea uno spazio dei nomi, mentre CREATE TABLE crea tabelle di database nello schema. I comandi dello schema SQL sono fondamentali per la gestione dei database.
Definizione della struttura e delle relazioni: le colonne, i tipi di dati, la chiave primaria, le chiavi esterne e altri vincoli sono definiti nelle definizioni delle tabelle. Lo schema definisce come si relazionano gli oggetti del database.
Modificare le tabelle esistenti: l'istruzione ALTER TABLE consente agli utenti di aggiungere colonne o modificare i tipi di dati e i vincoli all'interno della struttura del database SQL.
Rimuovere gli oggetti dello schema: l'istruzione DROP TABLE o DROP SCHEMA elimina una tabella o uno schema, con la piena consapevolezza della potenziale perdita di dati.
Queste sono le istruzioni di gestione dello schema SQL più importanti, che vengono utilizzate nei motori di analitiche distribuiti come Spark SQL.
Nonostante SQL sia uno standard, la gestione degli schemi può variare a seconda dei diversi database.
Oracle Database vs. SQL Server: gli schemi di Oracle Database sono associati agli utenti del database, mentre gli schemi di SQL Server sono unità organizzative separate. L'architettura del sistema di gestione di database varia a seconda delle piattaforme.
Altra terminologia dei database: MySQL si riferisce a esso come database, mentre PostgreSQL si riferisce a esso come schema. Ogni sistema di database ha convenzioni uniche.
Problemi di portabilità: tipi di dati diversi, vincoli, indicizzazione e sintassi DDL possono rendere difficile lo spostamento di uno schema da un sistema di database a un altro.
A causa di queste variazioni, la gestione degli schemi di database spesso richiede modifiche specifiche per il database, anche quando i progetti seguono le pratiche SQL standard. Un amministratore di database deve comprendere queste differenze tra piattaforme.
Gli schemi di database sono utilizzati nei moderni sistemi di dati, inclusi data warehouse, data lake e piattaforme di streaming. Sebbene la tecnologia di database utilizzata sia diversa, lo scopo dell'utilizzo di uno schema è lo stesso: fornire struttura, significato e coerenza ai dati.
Le piattaforme dati cloud gestiscono gli schemi dei database su larga scala, in particolare tra dati e utenti condivisi.
Punti chiave:
Questi modelli sono tipici delle piattaforme di analitiche native per il cloud costruite attorno a un modello di data warehouse unificato. Le moderne piattaforme cloud trattano lo schema del database come un livello di governance fondamentale.
Modificare lo schema del database in un ambiente di produzione è difficile, soprattutto quando più tabelle e carichi di lavoro dipendono da esso.
Gli approcci comuni per l'evoluzione dello schema del database includono:
Queste pratiche supportano un'evoluzione affidabile dello schema negli ambienti moderni di ingegneria dei dati.
Lo schema del database svolge un ruolo fondamentale nella governance dei dati e nella conformità.
Lo schema del database fornisce quanto segue:
Queste funzionalità dello schema del database garantiscono la creazione di un ambiente di governance dei dati, come implementato in Unity Catalog. I dati dello schema diventano una fonte di verità per l'organizzazione dei dati e la gestione del database.
Un semplice sistema di e-commerce offre un modo pratico per vedere come gli schemi di database vengono applicati in scenari reali.
In un sistema di e-commerce transazionale, lo schema del database è progettato per supportare le attività operative quotidiane, come l'inserimento di ordini e la gestione dei clienti, per l'elaborazione delle transazioni online.
Un tipico schema di database relazionale include:
Queste tabelle del database sono collegate utilizzando chiavi primarie ed esterne:
Questa struttura impone relazioni uno-a-molti, minimizza la ridondanza e mantiene l'integrità dei dati per i carichi di lavoro transazionali. La progettazione dello schema del database garantisce la coerenza dei dati tra le attività operative di elaborazione delle transazioni online.
Per il reporting e le analitiche, questo schema transazionale viene spesso trasformato in un modello di schema a stella.
In questo pattern:
Questo design dello schema semplifica le query e supporta una reportistica efficiente nei data warehouse e nei sistemi di business intelligence utilizzando l'elaborazione analitica online.
La progettazione dello schema bilancia l'integrità dei dati, le prestazioni delle query e l'efficienza dello spazio di archiviazione.
Per maggiori dettagli sullo schema a stella e sulle decisioni di modellazione dimensionale, consulta il blog Implementing Dimensional Data Warehouse.
Uno schema di database ben progettato è fondamentale per sistemi di dati affidabili e ad alte prestazioni. Separando l'intento concettuale, la struttura logica e l'implementazione fisica, gli schemi di database supportano la chiarezza, la scalabilità e la manutenibilità a lungo termine.
La progettazione dello schema funziona meglio come processo iterativo di progettazione, test e perfezionamento. Strumenti come gli ERD, gli strumenti di modellazione di database e i client SQL supportano questa evoluzione. Un amministratore di database e i progettisti di database devono collaborare durante l'intero processo per garantire che la progettazione dello schema del database soddisfi tutti i requisiti.
Per continuare a imparare, esercitati a progettare schemi, approfondisci la tua comprensione della normalizzazione dei database ed esplora diversi modelli di progettazione di schemi. Per una base più ampia, consulta il Glossario di architettura dei dati.
Comprendere come i principi dello schema di database si applicano alle moderne pratiche di architettura dei dati e modellazione dei dati ti aiuterà a creare sistemi di dati più efficaci che si adattano alle esigenze della tua organizzazione. Che si lavori con database relazionali, database NoSQL o sistemi ibridi, una solida progettazione dello schema del database rimane essenziale.
