MODELLO LOGICO DEI DATI MODELLO LOGICO DEI DATI Un Modello logico di dati è un formalismo utilizzato per descrivere la realtà che si intende modellare mediante un DB Modello gerarchico - IBM Modello reticolare - Codasyl (Conference on Data System Language) Modello relazionale - Egdar F. Codd anni 70 Modello a oggetti - anni 80-90 Ogni modello comprende entità, attributi, relazioni fra i dati MODELLO GERARCHICO Non esiste un preciso modello gerarchico riconosciuto dalle case costruttrici di DBMS. Lo schema del modello gerarchico è caratterizzato dal possedere una struttura ad albero detto ALBERO DI DEFINIZIONE. Ciascun nodo di un albero di definizione rappresenta una Categoria di dati. Da un punto di vista estensionale un nodo è costituito da una sequenza di record di uno stesso tipo. L’albero di definizione è ordinato (l’ordine dei figli di un nodo è rilevante) Ogni arco dell’albero rappresenta un’associazione surgettiva di tipo 1:N, diretta dal nodo padre (dominio, owner) al nodo figlio (codominio, member). E’ difficile la traduzione di uno schema concettuale in uno schema gerarchico (mapping) equivalente. Si adatta bene er quei dati che tendono naturalmente ad una suddivisione in sottocategorie. Per rappresentare una relazione molti-a-molti occorrono due uno amolti e un segmento addizionale MODELLO GERARCHICO MODELLO RETICOLARE Gli schemi generabili secondo questo modello hanno la caratteristica di presentarsi come grafi orientati in cui gli archi rappresentano associazioni 1:N. Esistono oggi diversi sistemi reticolari che implementano una parte più o meno ampia della proposta Codasyl (IDS/II Honeywell; DBMS-10 Digital). il modello reticolare rimuove molti dei limiti imposti dal modello gerarchico. Il “mapping” di uno schema concettuale in uno schema reticolare è pressoché immediato , per contro la navigazione è complessa e difficilmente implementabile. MODELLO RELAZIONALE Il modello relazionale è stato introdotto da Codd nel 1970 ed è basato sul concetto matematico di relazione fra insiemi. Ciò ha consentito una formulazione del modello completamente libera da considerazioni di tipo pratico pertinenti, ad esempio, l’efficienza dell’implementazione DEFINZIONE : Una relazione R su una sequenza di insiemi D1, D2, ..., Dn (non necessariamente distinti) è un sottoinsieme finito del prodotto cartesiano D1xD2... xDn . Il numero n ( n > 1) è detto grado della relazione. D1, D2, ..., Dn = domini Gli elementi di R sono n-uple (d1, d2, ..., dn) con d1ЄD1 , d2Є D2 , ..., dnЄ Dn. Si usa di più il termine tupla. Una relazione non può contenere tuple uguali. A differenza delle relazioni matematiche, le relazioni nel modello relazionale sono variabili nel tempo : le tuple possono essere inserite, aggiornate, cancellate. Il numero di tuple presenti in un dato istante si dice cardinalità della relazione. MODELLO RELAZIONALE Da un punto di vista intensionale una relazione è caratterizzata da un nome e dalla lista dei suoi attributi : <nome relazione> (<attr1>:t1,<attr2>:t2, ......,<attrn>:tn) Da un punto di vista estensionale si può rappresentare una relazione mediante una tabella di m righe ed n colonne, dove ogni riga rappresenta una tupla ed ogni colonna rappresenta la sequenza dei valori assunti corrispondentemente da un attributo. L’ordine delle righe e colonne non è significativo. Tutte le definizioni del modello relazionale prevedono di specificare come vincolo quello relativo alla presenza di una chiave primaria per ogni relazione. PERSONA(NOME:STRING*20; ETA:INTEGER; SEX:CHAR) PERSONA(NOME,ETA,SEX) NOME ETA SEX OPERAZIONI SUI DB RELAZIONALI Ci soffermeremo sulle operazioni che consentono di interrogare una base di dati relazionale poiché quelle di aggiornamento (inserimento, cancellazione, modifica) non differiscono concettualmente da quelle già note per gli archivi. Sono stati proposti diversi linguaggi per l’interrogazione dei DB relazionali, tutti in genere NON PROCEDURALI. I linguaggi non procedurali hanno operatori indipendenti dal concetto di posizione di un record, ma trattano invece i dati in modo collettivo. Uno dei linguaggi non procedurali più usati è quello dell’Algebra Relazionale : impiega operatori dell’algebra relazionale che vengono composti fra loro per produrre il risultato desiderato. Si formula l’interrogazione specificando una composizione di operatori da applicare alle relazioni del DB per fornire la relazione desiderata. Occorre scegliere un insieme di operatori funzionalmente completo cioè che consenta di ottenere tutti i risultati ottenibili con altri linguaggi relazionali ALGEBRA RELAZIONALE Si può dimostrare che un insieme funzionalmente completo è composto dalle seguenti operazioni : 1. Unione di relazioni (UNION) : Dette R ed S 2 relazioni compatibili (cioè aventi lo stesso numero di attributi ordinatamente dello stesso tipo, l’unione di R con S è la relazione ottenuta dall’unione insiemistica delle relazioni: UNION(R,S) = R U S = {t / tЄR or tЄS} 2. Differenza di relazioni(DIFFERENCE) : Dette R ed S 2 relazioni compatibili la differenza fra R ed S è la relazione ottenuta dalla differenza insiemistica fra le relazioni: DIFFERENCE(R,S) = R - S = {t / tЄR and tЄS} ALGEBRA RELAZIONALE 3. 4. Prodotto cartesiano : Date R ed S 2 relazioni qualunque di grado rispettivamente n1 ed n2 e cardinalità m1 ed m2, il prodotto R x S è la relazioni di grado n1+n2 e cardinalità m1 x m2 le cui tuple si ottengono concatenando ogni tupla di R con ogni tupla di S. r = { a1,a2,...an1 } s = { b1,b2,...bn2 } r conc s = { a1,a2,...an1, b1,b2,...bn2} R X S = {t / t = r conc s , r ЄR and sЄS} Proiezione di una relazione (PROJECT) : Data una relazione R ed un suo sottoinsieme B = {A1,A2,..,Ak} dei suoi attributi , si definisce proiezione di R su B la relazione di grado k che si ottiene da R ignorando le colonne relative agli attributi non contenuti in B ed eliminando le eventuali tuple duplicate. PROJECT R ON A1,A2,..,Ak oppure π A1,A2,..,Ak R ALGEBRA RELAZIONALE Restrizione di una relazione (RESTRICT) : Data una relazione R ed un predicato P semplice o composto sui suoi attributi, l’operazione di restrizione di R a P è la relazione costituita dalla tuple di R che soddisfano P. Restrict R where P = {t / t ЄR and P(t)} oppure σP(t)R Esistono poi 2 operatori derivati molto usati : 6. Intersezione di 2 relazioni (INTERSECT) : Date R ed S 2 relazioni compatibili, l’intersezione di R d S restituisce la relazione costituita da tutte le tuple presenti sia in R che in S. INTERSECT(R,S) = R ∩S ={t / t ЄR and t ЄS} 5. ALGEBRA RELAZIONALE 7. Giunzione naturale (JOIN) : Sia data una relazione R di grado n1 ed una relazione S di grado n2; l’operazione di giunzione naturale di R ed S su un attributo A di R e un attributo B di S (aventi lo stesso tipo) restituisce una relazione di grado n1+n2-1 le cui tuple si ottengono con il seguente procedimento : si calcola R x S su tale relazione si effettua una restrizione volta a selezionare le tuple aventi lo stesso valore degli attributi A e B ottenendo così una relazione con le colonne A e B uguali eliminando una di queste 2 colonne si ottiene la giunzione naturale R A=B S