DBMS - Le 12 Regole di Codd

Ciao, appassionati di database! Oggi, andremo a immergerci nel mondo affascinante dei Sistemi di Gestione del Database (DBMS) e esploreremo le leggendarie 12 Regole di Codd. Queste regole, formulate dal padre dei database relazionali, il Dr. Edgar F. Codd, sono come i Dieci Comandamenti del mondo dei database. Non sono solo regole; sono i principi guida che determinano come pensiamo e progettiamo i database moderni.

DBMS - Codd

Come il vostro amico insegnante di informatica del quartiere, analizzerò queste regole in modo da renderle comprensibili anche a voi che non avete mai scritto una riga di codice. Allora, prendetevi una tazza di caffè, fatevi comodi e insieme intraprendiamo questo viaggio entusiasmante!

Regola 1: Regola dell'Informazione

Immaginate di stanno organizzando la vostra libreria. La Regola dell'Informazione è come dire, "Tutto su questa scaffale deve essere un libro." Nel mondo del database, questa regola afferma che tutte le informazioni in un database devono essere rappresentate in una sola e unica manera - come valori nelle tabelle.

Ecco un esempio semplice:

CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Age INT
);

In questo esempio, stiamo creando una tabella chiamata "Students". Ogni informazione su uno studente (il loro ID, nome, cognome e età) è rappresentata come una colonna in questa tabella. Questa è l'essenza della Regola dell'Informazione - tutti i dati sono memorizzati in tabelle.

Regola 2: Regola dell'Accesso Garantito

Questa regola è come avere una tessera della biblioteca che ti dà accesso a qualsiasi libro della biblioteca. In termini di database, significa che ogni pezzo di dati dovrebbe essere accessibile conoscendo il nome della tabella, la chiave primaria e il nome della colonna.

Per esempio, se vogliamo trovare l'età di uno studente con ID 1, potremmo usare:

SELECT Age FROM Students WHERE StudentID = 1;

Questa query garantisce l'accesso alla specifica informazione di cui abbiamo bisogno, seguendo la Regola 2.

Regola 3: Trattamento Sistematico dei Valori NULL

I valori NULL sono come i libri misteriosi nella nostra biblioteca - rappresentano informazioni sconosciute o inapplicabili. Questa regola garantisce che i valori NULL siano trattati in modo consistente in tutte le operazioni.

Per esempio, quando si inserisce un nuovo studente senza conoscere la loro età:

INSERT INTO Students (StudentID, FirstName, LastName, Age)
VALUES (2, 'Jane', 'Doe', NULL);

Il database tratta questo valore NULL in modo sistematico, permettendo operazioni come:

SELECT * FROM Students WHERE Age IS NULL;

Regola 4: Catalogo Online Attivo

Pensate a questo come il sistema di catalogazione digitale della biblioteca. Il database deve avere un "catalogo" integrato dove memorizza informazioni su tutte le tabelle, colonne, indici e altro. Nella maggior parte dei DBMS moderni, questo è spesso chiamato "data dictionary" o "system catalog".

Possiamo fare queries su questo catalogo. Per esempio, in SQL Server:

SELECT * FROM INFORMATION_SCHEMA.TABLES;

Questa query ci dà informazioni su tutte le tabelle nel nostro database, dimostrando l'azione del catalogo online attivo.

Regola 5: Regola del Sub-Lingua dei Dati Comprensiva

Questa regola è come dire che la nostra biblioteca dovrebbe avere una lingua universale per trovare, leggere e organizzare libri. In termini di database, significa che dovrebbe esserci una lingua comprensiva per tutte le operazioni del database.

SQL (Structured Query Language) è l'esempio più comune di questo. Ci permette di fare tutto, dal creare tabelle alla query dei dati:

-- Creazione di una tabella
CREATE TABLE Books (
BookID INT PRIMARY KEY,
Title VARCHAR(100),
Author VARCHAR(50)
);

-- Inserimento dati
INSERT INTO Books (BookID, Title, Author)
VALUES (1, 'Database Design 101', 'E. F. Codd');

-- Query dei dati
SELECT * FROM Books WHERE Author = 'E. F. Codd';

Regola 6: Regola dell'Aggiornamento delle Viste

Le viste sono come scaffali personalizzati nella nostra biblioteca. Questa regola afferma che se puoi vedere una vista, dovresti essere in grado di aggiornarla (con alcune limitazioni).

Ecco un esempio di creazione e aggiornamento di una vista:

-- Creazione di una vista
CREATE VIEW TeenageStudents AS
SELECT * FROM Students WHERE Age BETWEEN 13 AND 19;

-- Aggiornamento attraverso la vista
UPDATE TeenageStudents
SET Age = 18
WHERE StudentID = 1;

Regola 7: Regola dell'Inserimento, Aggiornamento e Eliminazione di Livello Superiore

Questa regola garantisce che possiamo modificare insiemi di dati in una volta sola, piuttosto che un record alla volta. È come essere in grado di spostare interi scaffali di libri alla volta, piuttosto che libro per libro.

Per esempio:

-- Inserimento di più record
INSERT INTO Students (StudentID, FirstName, LastName, Age)
VALUES
(3, 'Alice', 'Johnson', 20),
(4, 'Bob', 'Smith', 22),
(5, 'Charlie', 'Brown', 19);

-- Aggiornamento di più record
UPDATE Students
SET Age = Age + 1
WHERE Age < 20;

-- Eliminazione di più record
DELETE FROM Students
WHERE Age > 25;

Regola 8: Indipendenza dei Dati Fisici

Questa regola riguarda la separazione della memorizzazione fisica dei dati da come interagiamo con essi. È come non preoccuparsi se un libro è in formato hardcover o paperback - puoi leggerlo lo stesso modo.

In pratica, questo significa che cambiare la memorizzazione fisica (come passare da HDD a SSD) non dovrebbe richiedere modifiche al codice dell'applicazione.

Regola 9: Indipendenza dei Dati Logici

Simile alla Regola 8, ma a livello logico. Significa che dovremmo essere in grado di cambiare la struttura logica (come aggiungere una nuova colonna) senza influenzare le applicazioni esistenti.

Per esempio, se aggiungiamo una nuova colonna alla nostra tabella Students:

ALTER TABLE Students
ADD Email VARCHAR(100);

Le applicazioni esistenti che effettuano query sulla tabella Students dovrebbero continuare a funzionare senza modifiche.

Regola 10: Indipendenza dell'Integrità

Questa regola garantisce che le constraint di integrità (come "L'età deve essere positiva") siano definite nel database e non nell'applicazione. È come avere regole per la categorizzazione dei libri applicate dal sistema della biblioteca, non dai singoli bibliotecari.

Esempio:

CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
Age INT CHECK (Age > 0 AND Age < 120)
);

Qui, le constraint sono definite a livello di database, garantendo l'indipendenza dell'integrità.

Regola 11: Indipendenza della Distribuzione

Questa regola afferma che il database dovrebbe funzionare allo stesso modo sia che sia distribuito su più luoghi o meno. È come essere in grado di accedere a libri da diverse filiali della biblioteca senza problemi.

Non c'è un esempio di codice semplice per questo, ma i database distribuiti moderni implementano questo principio dietro le quinte.

Regola 12: Regola dell'Assenza di Subversione

L'ultima regola riguarda la sicurezza e la coerenza. Afferma che se il database ha un modo per accedere ai record (come SQL), non ci dovrebbe essere un modo per bypassare questo accesso e accedere ai dati direttamente. È come assicurare che tutte le prestiti di libri avvengano attraverso il sistema della biblioteca, senza accesso backdoor.

Questo è tipicamente gestito a livello di sistema del database, non attraverso codice scritto dall'utente.

Per riassumere tutte queste regole in una comoda tabella:

Regola Descrizione
1 Regola dell'Informazione
2 Regola dell'Accesso Garantito
3 Trattamento Sistematico dei Valori NULL
4 Catalogo Online Attivo
5 Regola del Sub-Lingua dei Dati Comprensiva
6 Regola dell'Aggiornamento delle Viste
7 Regola dell'Inserimento, Aggiornamento e Eliminazione di Livello Superiore
8 Indipendenza dei Dati Fisici
9 Indipendenza dei Dati Logici
10 Indipendenza dell'Integrità
11 Indipendenza della Distribuzione
12 Regola dell'Assenza di Subversione

Ecco tutto, ragazzi! Le 12 Regole di Codd in sintesi. Ricordate, queste regole sono state formulate nel 1985, e mentre non tutti i database moderni aderiscono strettamente a ogni regola, esse costituiscono la fondazione teorica dei sistemi di database relazionali.

Mentre chiudiamo, spero che questo viaggio attraverso le Regole di Codd sia stato illuminante per voi quanto lo è ogni volta che le insegno. Questi principi hanno塑造 il mondo dei database che conosciamo oggi, e capirli è il primo passo per diventare un esperto di database. Continuate a praticare, rimanete curiosi, e chissà? Forse un giorno formulerete voi stessi il prossimo set di principi innovativi per i database!

Credits: Image by storyset