# Modello Relazionale (superiori)

In informatica il modello relazionale è un modello logico di rappresentazione o strutturazione dei dati di un database creato nel 1970 dall'inglese Edgar F.Codd che al tempo era un ricercatore dell'IBM ('International Business Machines Corporation).
Codd ha utilizzato il linguaggio matematico per formalizzare il suo modello relazionale. Ad esempio per definire una Relazione (che corrisponde a una tabella) parte da N insiemi (chiamati Domini D1,D2 etc e che rappresentano ciascuno una colonna e contengono i possibili dati di quella colonna) e prendendo un oggetto da ciascun insieme forma una n-upla (una possibile riga della tabella),
* n-upla
* Poi considera tutte le possibili n-uple che risultano dalle diverse combinazioni (di oggetti dai diversi insiemi)
* definizione relazione
* e infine definisce una relazione come un sottoinsieme di tutte le possibili n-uple, che abbiamo formato tramite le combinazioni degli n-insiemi di partenza ; Inoltre indica con il termine grado il numero di insiemi (ciascuno omogeneo nel tipo di dati contenuti) e con cardinalità il numero di n-uple che compongono la relazione
Un moderno database relazionale RDBMS presenta i seguenti vantaggi:
VANTAGGI:
* si elimina la duplicazione dell'informazione nel database, la duplicazione dei campi si presenta invece nel modello reticolare e gerarchico e comporta dei problemi perché la RIDONDANZA dei dati porta a casi di INCONGRUENZE e questo comporta la INCONSISTENZA dei dati presenti nel DB.
* indipendenza fisica: si può cambiare il percorso dei supporti magnetici senza dover modificare il software RDBMS
* indipendenza logica: si possono aggiungere/togliere nuove tabelle o campi della tabella senza dover modificare il software RDBMS
* gestione multiutente: può gestire più accessi contemporaneamente
* sicurezza: sia nei confronti di utenti esterni non autorizzati (password) e sia una limitazione nei dati visualizzabili o modificabili (viste)
DERIVAZIONE DEL MODELLO RELAZIONALE DAL MODELLO E/R
* Per poter passare dal modello E/R al modello relazionale bisogna assicurarsi che:
* ogni informazione (campo) sia atomica cioè indivisibile, ciò significa che se in un campo chiamato INDIRIZZO memorizzo sia la città sia la via e il numero civico, nell'uso successivo del DB non potrò accedere separatamente all'informazione contenuta in INDIRIZZO, se invece voglio farlo allora invece di un solo campo devo utilizzare più campi(cittaindirizzo,viaindirizzo,ncivicoindirizzo
* ogni tabella deve avere la sua chiave univoca
* gli attributi dei campi rimangono gli stessi attributi dell'E/R
* *il collegamento 1:1 dell' E/R scompare e al suo posto le due tabelle si fondono in una sola tabella (con i campi di entrambi)
* grado 1-1: dal modello E/R a quello relazionale
* * il collegamento 1:N nell' E/R scompare e al suo posto viene inserito un nuovo campo (chiave esterna FK) nella tabella lato a molti corrispondente alla la chiave primaria della tabella lato a 1
* grado 1-N: dal modello E/R a quello relazionale
* * il collegamento N:N nell'E/R: il collegamento scompare e al suo posto nasce una nuova tabella che contiene due nuovi campi , due chiavi esterni una che fa riferimento alla chiave primaria della 1° tabella e una che fa riferimento alla chiave primaria della 2° tabella, più eventuali attributi dell'associazione (se esistono)
* grado N-N: dal modello E/R a quello relazionale