Relational database management system
# Relational database management system

In informatica, un sistema di gestione di basi di dati relazionali, noto con l'inglese relational database management system o RDBMS è la tipologia di database management system basata sul modello relazionale, introdotta da Edgar F. Codd negli anni 1970.

## Storia

Codd ha introdotto il termine nei primi anni del 1970. L'espressione compare per la prima volta nel testo del seminario "A Relational Model of Data for Large Shared Data Banks" ("Un modello relazionale di dati per gestire grandi banche dati condivise)". In questo scritto ed in altri successivi, Codd definì cosa intendeva per "relazionale". Una nota definizione di ciò che costituisce un RDBMS è data dalle 13 regole di Codd. Tuttavia, molte delle prime implementazioni del modello relazionale non erano conformi a tali regole, per cui il termine venne gradualmente cambiato fino a descrivere una più ampia classe di sistemi di basi di dati. I requisiti minimi per cui quei sistemi venissero chiamati RDBMS erano:

* deve presentare i dati all'utente sotto forma di relazioni (una presentazione a tabelle può soddisfare questa proprietà)
* deve fornire operatori relazionali per manipolare i dati in forma tabellare.

### Uso corrente del termine

Non c'è un accordo unanime su ciò che può chiamarsi un RDBMS (DBMS "relazionale"), e le definizioni più popolari sono piuttosto imprecise. Alcuni sostengono che perfino presentare una visione dei dati sotto forma di righe e colonne sia sufficiente a qualificare un RDBMS.

Molti teorici dei modelli di dati sostengono invece che se un database non implementa tutte le regole di Codd, non può dirsi relazionale. Questa definizione lascia fuori molti dei database in commercio, non considerandoli "veramente-relazionali" (TRDBMS, True-Relational DBMS), ma piuttosto "pseudo-relazionali" (PRDBMS, Pseudo-Relational DBMS). I critici di questa posizione sostengono che è eccessivamente rigida, notando che il solo uso dell'SQL (Structured Query Language) sarebbe di per sé sufficiente a violare le regole di Codd.

La scelta di un RDBMS o di un altro è diventata molto meno dipendente dall'aderenza o meno a tutte le 12 regole di Codd e molto più dipendente dal costo totale di utilizzo che il RDBMS ha per le organizzazioni di gestione dei dati: soddisfare gli appropriati criteri relazionali renderebbe i prodotti più affidabili, consistenti, produttivi e aumenterebbe le prestazioni, e quindi porterebbe alla fine ad un minore costo totale di utilizzo.

## Descrizione

Come già detto, è molto difficile creare uno standard che definisca esaurientemente il significato del termine "relazionale" riferito ai database, tuttavia esiste una definizione parziale che possiamo fornire, ovvero che un database non può essere detto relazionale solo perché ci sono relazioni fra tabelle.

Dal punto di vista matematico una relazione è un insieme formato da elementi distinti fra loro; ciascun elemento è una n-upla dove ciascuna delle n componenti dell'elemento è presa da un determinato dominio (numeri interi, numeri decimali, stringhe, caratteri...). A livello di database si riprende (con poche e sottili differenze) la definizione matematica di relazione.

Un database è relazionale se basato su tabelle: la tabella in effetti rappresenta una relazione. A conferma di ciò il fatto che il modello relazionale nasce nel 1970 per opera di Codd, mentre le "relazioni" fra tabelle (implementate ad esempio mediante una foreign key) sono un'aggiunta al modello relazionale, tanto che la possibilità di creare a livello software delle "connessioni" fra due o più tabelle è stata messa a disposizione dai RDBMS solo un paio di decenni dopo.

Aderendo perciò alla tesi "un database è relazionale perché ci sono relazioni fra tabelle" si giungerebbe ad una fondamentale contraddizione, ovvero che non sarebbe un database relazionale quel database privo di vincoli interrelazionali (ovvero "connessioni" fra tabelle diverse). Poiché i database relazionali sono nati prima della possibilità di esplicitare i vincoli interrelazionali (in particolare il vincolo di integrità referenziale), si giungerebbe quindi all'assurda conclusione che Codd non avesse sviluppato un modello realmente relazionale, perché non faceva uso di tali vincoli. Tuttavia si è unanimemente concordi nell'attribuire a lui la paternità del modello relazionale, anche se è impossibile che Codd contemporaneamente sia e non sia il padre di tale modello. Compresa questa evidente contraddizione, si può quindi concludere che Codd sia effettivamente il padre del modello relazionale, inteso semplicemente come modello basato su relazioni matematiche, ovvero su tabelle, al di là degli sviluppi degli anni successivi.

