Le 12 regole di Codd sono un insieme di tredici regole, numerate da 0 a 12, proposte da Edgar F. Codd, pioniere del modello relazionale per le basi di dati, al fine di definire i requisiti che un sistema per la gestione di basi di dati deve soddisfare per essere considerato pienamente relazionale (RDBMS).
Codd scrisse questi criteri per evitare che la sua definizione di base di dati relazionale venisse alterata e resa meno restrittiva quando, nei primi anni Ottanta, i produttori software si affannarono per rimpiazzare i vecchi prodotti con applicativi pseudo-relazionali. La regola 12 fu formulata proprio per contrastare questa tendenza: i vincoli sono talmente rigidi che persino i sistemi la cui unica interfaccia è il linguaggio SQL non riescono a soddisfarli tutti.
Le regole
Regola 0: il sistema deve potersi definire come relazionale, base di dati e sistema di gestione. Affinché un sistema possa definirsi relazionale per la gestione di basi di dati (RDBMS), esso deve usare esclusivamente le proprie funzionalità relazionali per la gestione dei dati.
Regola 1: l'informazione deve essere rappresentata sotto forma di tabelle. Le informazioni nella base di dati devono essere rappresentate in un modo univoco, precisamente attraverso valori in colonne che, nel loro insieme, costituiscono righe di tabelle.
Regola 2: regola dell'accesso garantito o delle chiavi primarie. Tutti i dati devono essere accessibili senza ambiguità. Ogni singolo valore scalare nella base di dati deve essere logicamente indirizzabile specificando il nome della tabella che lo contiene, il nome della colonna in cui si trova e il valore della chiave primaria della riga di appartenenza.
Regola 3: trattamento sistematico dei valori NULL. Il DBMS deve consentire all'utente di lasciare un campo vuoto, o con valore NULL. In particolare, deve gestire la rappresentazione di informazioni mancanti e inadatte in maniera predeterminata, distinta da ogni valore consentito (per esempio, "diverso da zero o da qualunque altro numero" per i valori numerici) e indipendente dal tipo di dato. Queste rappresentazioni devono inoltre essere gestite dal DBMS sempre nel medesimo modo.
Regola 4: dizionario del modello relazionale. La descrizione della struttura della base di dati e degli oggetti che la compongono deve avvenire a un livello logico, tramite un dizionario di metadati, il quale deve essere accessibile agli utenti con le stesse modalità e il medesimo linguaggio di interrogazione utilizzato per accedere ai dati.
Regola 5: accessibilità dei dati. Tutti i contenuti della base di dati devono essere accessibili attraverso almeno un linguaggio relazionale (come per esempio l'SQL) che possieda le seguenti caratteristiche: abbia una sintassi lineare (le cui istruzioni possano cioè essere semanticamente interpretate con una semplice lettura da sinistra verso destra); possa essere utilizzato sia in forma interattiva sia dall'interno di applicazioni; supporti operazioni di definizione e di manipolazione dei dati, le regole di sicurezza e i vincoli di integrità della base di dati.
Regola 6: aggiornamento delle viste di dati. In una base di dati relazionale si possono creare delle viste che forniscono l'accesso a specifici sottoinsiemi di informazioni. Laddove il contenuto in termini di dati di queste viste sia concettualmente modificabile, deve poterlo essere anche nella pratica.
Regola 7: manipolazione dei dati ad alto livello. Da una base di dati si possono reperire informazioni multiple costituite da insiemi di dati provenienti da più righe o da più tabelle. Tali insiemi di dati, e non solo le singole informazioni, devono anche poter essere inseriti, aggiornati e cancellati con singole operazioni.
Regola 8: indipendenza dalla rappresentazione fisica. La struttura logica di una base di dati deve essere indipendente dalle strutture di memorizzazione fisica: le modifiche al piano fisico (le modalità con cui i dati vengono memorizzati, su quali unità, con quale organizzazione, ecc.) non devono richiedere modifiche nelle modalità di accesso ai dati.
Regola 9: indipendenza dalla rappresentazione logica. Le modifiche al livello logico (tabelle, colonne, righe, chiavi primarie, ecc.) non devono rendere necessarie modifiche ingiustificate alle applicazioni che utilizzano la base di dati.
Regola 10: i vincoli logici sui dati devono essere memorizzati nella base di dati. I vincoli di integrità propri delle entità e delle relazioni, le regole di sicurezza e le restrizioni di accesso devono essere definiti nel dizionario della base di dati, risultando così separati dalle applicazioni che lo utilizzano. Deve quindi essere possibile modificare tali vincoli senza interessare inutilmente le applicazioni esistenti.
Regola 11: indipendenza di localizzazione. La distribuzione di porzioni della base di dati su una o più allocazioni fisiche o geografiche deve risultare invisibile agli utenti del sistema. Le applicazioni esistenti devono poter continuare a operare con successo anche quando i dati vengono ridistribuiti in modo diverso.
Regola 12: regola di non sovversione. Gli strumenti di accesso ai dati non devono poter annullare le restrizioni della base di dati aggirando, per esempio, i vincoli di integrità, le relazioni logiche o le regole di sicurezza.
Queste regole sono state fissate nell'articolo di E. F. Codd intitolato Is Your DBMS Really Relational?, pubblicato sulla rivista Computerworld nel 1985 (la prima parte il 14 ottobre e la seconda il 21 ottobre).
Note
Bibliografia
Collegamenti esterni
Categoria:Teoria delle basi di dati Categoria:Modellazione dei dati