Relational database management system: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Migliorie
Annullata la modifica 84145397 di 95.242.26.122 (discussione)
Riga 1:
{{C|L'incipit rimanda a [[modello relazionale]] per la spiegazione della voce, al contrario, la voce modello relazionale rimanda qui)|informatica|dicembre 2015}}
Smera ti amo
{{F|basi di dati|febbraio 2013}}
Il termine '''''Relational database management system''''' ('''RDBMS''') (sistema per la gestione di [[database|basi di dati]] relazionali) indica un ''[[database management system]]'' basato sul [[modello relazionale]], ed è stato introdotto da [[Edgar F. Codd]].
 
Oltre ai RDBMS esistono, anche se meno diffusi a livello commerciale, sistemi di gestione di basi di dati che implementano [[modello dei dati|modelli dei dati]] alternativi a quello relazionale: [[modello gerarchico|gerarchico]], [[modello reticolare|reticolare]] e [[modello a oggetti|a oggetti]].
 
== Storia del termine ==
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)"<ref>[http://portal.acm.org/citation.cfm?id=362384.362685&coll=ACM&dl=ACM&CFID=83109698&CFTOKEN=48563162 A Relational Model of Data for Large Shared Data Banks].</ref> In questo scritto ed in altri successivi, Codd definì cosa intendeva per "relazionale". Una nota definizione di ciò che costituisce un RDBMS è data dalle [[12 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 [[dato|dati]] all'[[utente]] sotto forma di [[relazione (matematica)|relazioni]] (una presentazione a [[tabella (database)|tabelle]] può soddisfare questa proprietà)
* deve fornire [[operatore relazione|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 [[record (database)|righe]] e [[Campo (informatica)|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.
 
{{Citazione necessaria|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ù [[ffidabilità|affidabili]], [[consistenza (informatica)|consistenti]], [[produttività|produttivi]] e aumenterebbe le [[prestazione|prestazioni]], e quindi porterebbe alla fine ad un minore costo totale di utilizzo.}}
 
== Cosa non è un database relazionale ==
{{chiarire|Come già detto, oggi non esiste ancora|dove e quando?}} uno [[Norma (tecnologia)|standard]] che definisca esaurientemente il significato del termine "relazionale" riferito ai database, {{chiarire|tuttavia si è concordi nell'affermare quanto segue|chi è concorde?}}: un database ''non'' può essere detto relazionale solo perché ci sono relazioni fra [[tabella (database)|tabelle]].
 
Dal punto di vista matematico una [[relazione (matematica)|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.
 
== Note ==
<references/>
 
== Voci correlate ==
* [[Modello relazionale]]
* [[Database]] e [[database management system]]
* [[Tupla]]
* [[Base di dati a oggetti]]
* [[Base di dati a grafo]]
 
{{portale|informatica}}