Le 12 regole di Codd

Il dottor Edgar F. Codd, dopo la sua vasta ricerca sul modello relazionale dei sistemi di database, ha elaborato dodici regole proprie, alle quali, secondo lui, un database deve obbedire per essere considerato come un vero database relazionale.

Queste regole possono essere applicate su qualsiasi sistema di database che gestisce i dati memorizzati utilizzando solo le sue capacità relazionali. Questa è una regola fondamentale, che funge da base per tutte le altre regole.

Regola 1: regola dell'informazione

I dati memorizzati in un database, possono essere dati utente o metadati, devono essere un valore di una cella di tabella. Tutto in un database deve essere archiviato in un formato tabella.

Regola 2: regola di accesso garantito

Ogni singolo elemento di dati (valore) è garantito per essere accessibile logicamente con una combinazione di nome-tabella, chiave-primaria (valore di riga) e nome-attributo (valore di colonna). Nessun altro mezzo, come i puntatori, può essere utilizzato per accedere ai dati.

Regola 3: trattamento sistematico dei valori NULL

I valori NULL in un database devono ricevere un trattamento sistematico e uniforme. Questa è una regola molto importante perché un NULL può essere interpretato come uno dei seguenti: dati mancanti, dati non noti o dati non applicabili.

Regola 4: catalogo online attivo

La descrizione della struttura dell'intero database deve essere memorizzata in un catalogo online, noto come data dictionary, a cui possono accedere gli utenti autorizzati. Gli utenti possono utilizzare lo stesso linguaggio di query per accedere al catalogo che utilizzano per accedere al database stesso.

Regola 5: regola del sub-linguaggio per dati completi

È possibile accedere a un database solo utilizzando un linguaggio con sintassi lineare che supporta la definizione dei dati, la manipolazione dei dati e le operazioni di gestione delle transazioni. Questa lingua può essere utilizzata direttamente o tramite un'applicazione. Se il database consente l'accesso ai dati senza l'aiuto di questo linguaggio, allora è considerato una violazione.

Regola 6: Visualizza regola di aggiornamento

Tutte le viste di un database, che teoricamente possono essere aggiornate, devono essere aggiornabili anche dal sistema.

Regola 7: regola di inserimento, aggiornamento ed eliminazione di alto livello

Un database deve supportare l'inserimento, l'aggiornamento e l'eliminazione di alto livello. Questo non deve essere limitato a una singola riga, ovvero deve supportare anche operazioni di unione, intersezione e meno per produrre set di record di dati.

Regola 8: indipendenza fisica dei dati

I dati memorizzati in un database devono essere indipendenti dalle applicazioni che accedono al database. Qualsiasi modifica nella struttura fisica di un database non deve avere alcun impatto sulla modalità di accesso ai dati da parte di applicazioni esterne.

Regola 9: indipendenza logica dei dati

I dati logici in un database devono essere indipendenti dalla vista dell'utente (applicazione). Qualsiasi modifica nei dati logici non deve influire sulle applicazioni che li utilizzano. Ad esempio, se due tabelle vengono unite o una viene suddivisa in due tabelle diverse, non dovrebbe esserci alcun impatto o modifica sull'applicazione utente. Questa è una delle regole più difficili da applicare.

Regola 10: Integrità Indipendenza

Un database deve essere indipendente dall'applicazione che lo utilizza. Tutti i suoi vincoli di integrità possono essere modificati indipendentemente senza la necessità di alcun cambiamento nell'applicazione. Questa regola rende un database indipendente dall'applicazione front-end e dalla sua interfaccia.

Regola 11: indipendenza dalla distribuzione

L'utente finale non deve essere in grado di vedere che i dati sono distribuiti in varie posizioni. Gli utenti dovrebbero sempre avere l'impressione che i dati si trovino in un solo sito. Questa regola è stata considerata la base dei sistemi di database distribuiti.

Regola 12: Regola di non sovversione

Se un sistema dispone di un'interfaccia che fornisce l'accesso a record di basso livello, l'interfaccia non deve essere in grado di sovvertire il sistema e aggirare i vincoli di sicurezza e integrità.