0
Il Modello Relazionale




                  Il modello relazionale        1




Il modello relazionale
 Proposto da E. F....
Il modello relazionale
 Caratteristiche:
   E` basato su una semplice struttura dati – la relazione
   E` caratterizzato d...
Prima di introdurre le relazioni …

   Dominio
   Prodotto Cartesiano




                                                ...
Relazione – prodotto
cartesiano
 D1, D2, …, Dk ∈ D (k insiemi anche non distinti)

il prodotto cartesiano D1×D2×…×Dk è def...
Notazioni
 Sia R una relazione di grado k
 Sia t una tupla di R
 Sia i ∈ {1,...,k}

    t[i] denota la i-esima componente ...
Relazione - proprietà
 Una relazione è un insieme di tuple, in
 quanto tali ordinate al loro interno:

                 (d...
Relazione – notazione
posizionale
 La formulazione introdotta permette di riferire
 ogni componente di una tupla per posiz...
Relazione - schema
 R nome di relazione
  {A1,A2,. . . , An} un insieme di nomi di attributi
 dom : {A1,A2, . . . ,An} → D...
Tupla e relazione
 Sia (R(A1,A2, . . . ,An), dom) uno schema di relazione

              Una tupla t definita su R e`
    ...
Esempio




 Schema:         Film(titolo,regista,anno,genere,valutaz)
                 dom(titolo) = dom(regista) = dom(ge...
Valori nulli – quale valore?
     Usare un valore legale per almeno un dominio non e` una buona
     soluzione
       Se s...
Chiavi
      Una chiave di una relazione e` un insieme di
      attributi che distingue fra loro le tuple della
      rela...
Chiavi
    Una tupla e’ identificata dal valore di una qualunque
    chiave candidata
    Si preferisce pero’ usare la chi...
Chiavi esterne
  Permettono di modellare le associazioni
  Siano
     R ed R′ due relazioni
     Y ⊆ UR’ una chiave per R′...
Chiavi esterne - istanza
 R                                  R’

 A    B    C    D     E            F     G    H     I

 a...
Integrita` referenziale

    Qualsiasi siano gli stati di R ed R′, per ogni tupla t di
    R esiste una tupla t′ di R′ tal...
Esempio




                     Vincolo di
                     integrita` referenziale
                     soddisfatto
...
Esempio

 Vincolo di
 integrita` referenziale
 NON soddisfatto




                               1126   22-Mar-2006 6655 ...
Violazioni

 Vincolo di
 integrita` referenziale
 violato da inserimento
 in tabella referente




                       ...
Violazioni

       Vincolo di
       integrita` referenziale
       violato da cancellazione
       in tabella riferita


...
Osservazione 1
 I nomi degli attributi nella chiave e nella chiave esterna non devono
 necessariamente essere gli stessi
 ...
Vincoli di integrita`
 Abbiamo visto
    Vincoli di dominio
    Vincoli di obbligatorieta`
    Vincolo di chiave (primaria...
Operazioni nel Modello
Relazionale
 Le operazioni sulle relazioni possono essere
 espresse in due formalismi di base:
   A...
Algebra Relazionale
 Ogni operazione restituisce come risultato una
 relazione
   è pertanto possibile applicare una opera...
Ridenominazione
La ridenominazione di una relazione R rispetto ad una lista
   di coppie di nomi di attributi (A1,B1),…, (...
Proiezione
La proiezione di una relazione R su un insieme di attributi A={A1,…Am},
                           A ⊆ UR, indi...
Proiezione - esempio




                                                         53




Selezione
La selezione su una rel...
Selezione - predicati
  Un predicato F su una relazione R ha una
  delle seguenti forme:
    predicato semplice
    combin...
Selezione – esempi di predicati

  codCli=6635      predicato semplice
  dataNol=dataRest predicato semplice
  codCli=6635...
Selezione - esempio
 A   B   C
 a   b   c
              A    B       C
 d   a   f
              a    b       c    A    B  ...
Prodotto cartesiano
Il prodotto cartesiano di due relazioni R ed S, di grado
                    k1, k2, indicato con:
   ...
Prodotto cartesiano - esempio

            D   E   F
            b   g   a
A   B   C
            d   a   f
a   b   c      ...
Unione
    L’unione di due relazioni R, S, indicata con
                         R∪S
     è l’insieme delle tuple in R, S ...
Unione - esempio




                                                        67




Differenza
 La differenza di due relaz...
Differenza - esempio


               A   B     C
   A   B   C   b   g     a
   a   b   c   d   a     f
   d   a   f   S
 ...
Operazioni derivate -
intersezione
  L’intersezione di due relazioni R, S, indicata con
                         R∩S
     ...
Operazioni derivate –
intersezione - esempio

A     B   C
a     b   c   A       B       C
                                ...
Operazioni derivate –
intersezione - esempio




                                                           75




Operazi...
Operazioni derivate - join
 Come per il prodotto cartesiano, gli schemi
 delle due relazioni argomento devono essere
 disg...
Operazioni derivate – join -
esempio




                                                   79




Operazioi derivate - jo...
Operazioni derivate – join -
esempio
 Determinare il titolo ed il regista dei film noleggiati
 il 15 Marzo 2006 dal client...
Operazioni derivate – join
naturale
 Il join naturale di due relazioni R ed S e` indicato
 con
                        R >...
Operazioni derivate – join
naturale
    UR = US
      Join naturale = intersezione


    UR ∩ US = ∅
      Join naturale =...
Operazioni derivate – join
naturale - esempio
 Supponiamo di voler abbinare codice e nome del cliente
 al titolo e all’ann...
Operazioni derivate - divisione
 Una tupla t viene cioe` restituita se, per ogni tupla s in
 S, in R e` presente una tupla...
Operazioni derivate – divisione
- esempio
                                    B     C
  A      B     C
                   ...
Operazioni derivate – divisione
     - esempio
     Film noleggiati dai clienti
2.




                                   ...
Operazioni derivate – divisione
 La divisione si puo` esprimere nel modo
 seguente:

        ΠD (R) - Π D((ΠD (R) x S) - R...
Operazioni derivate – divisione
- esempio




                                  97




Operazioni derivate – divisione
- e...
Algebra relazionale - esempio
     Selezionare i codici dei clienti che hanno noleggiato sia film
     drammatici che film...
Algebra relazionale - esempio
     Selezionare i codici dei clienti che hanno noleggiato film di
     almeno due generi di...
Algebra relazionale – sintesi




                                       103




          Calcolo Relazionale




       ...
Algebra vs. calcolo
 L’algebra relazionale è un linguaggio
 procedurale
   dobbiamo indicare le operazioni da eseguire per...
Calcolo relazionale - atomi
 s∈R (R è un nome di relazione ed s è una variabile)
   la tupla s appartiene alla relazione R...
Calcolo relazionale - formule
 ogni atomo è una formula
   tutte le occorrenze delle variabili dell’atomo sono libere
 se ...
Calcolo relazionale – formule -
esempio
  cc
    formula legale
    tutte le occorrenze sono legate
    la formula e` vera...
Calcolo relazionale –
espressioni - esempio
    cc
    espressione corretta
    ritrova i registi di cui almeno un film ha...
Calcolo relazionale - esempi
 Ritrovare per i noleggi di film di Quentin Tarantino il codice ed
 il nome del cliente che h...
Calcolo relazionale –
esprimere l’algebra con il TRC
 Proiezione: ΠA1,…Ak (R)
     {t:{A1,…,Ak}|∃x(x∈R∧x[A1]=t[A1]∧…∧x[Ak]...
Calcolo relazionale – potere
espressivo
 L’algebra relazionale e il calcolo relazionale
 hanno lo stesso potere espressivo...
Calcolo relazionale – potere
espressivo
 Non tutte le espressioni del calcolo possono essere
 tradotte in equivalenti espr...
Perché due linguaggi?
 Algebra relazionale
    linguaggio procedurale
    utile per il sistema
 Calcolo relazionale (safe)...
Upcoming SlideShare
Loading in...5
×

02 Modello, Algebra E Calcolo Relazionale

1,630

Published on

1 Comment
0 Likes
Statistics
Notes
  • slide chiarissme..complimenti all'autore
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total Views
1,630
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
78
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "02 Modello, Algebra E Calcolo Relazionale"

  1. 1. Il Modello Relazionale Il modello relazionale 1 Il modello relazionale Proposto da E. F. Codd nel 1970 per favorire l’indipendenza dei dati e reso disponibile come modello logico in DBMS reali nel 1981 Oggi e` il modello logico piu` diffuso ed e` adottato dalla larga maggioranza dei DBMS disponibili a livello commerciale 2
  2. 2. Il modello relazionale Caratteristiche: E` basato su una semplice struttura dati – la relazione E` caratterizzato da precise basi matematiche (teoria degli insiemi + logica dei predicati del primo ordine) Vantaggi Semplice rappresentazione dei dati linguaggi dichiarativi Facilita` con cui possono essere espresse interrogazioni anche complesse 3 Il modello relazionale Due linguaggi di interrogazione: algebra relazionale, in cui le interrogazioni sono espresse applicando operatori specializzati alle relazioni calcolo relazionale, in cui le interrogazioni sono espresse per mezzo di formule logiche che devono essere verificate dalle tuple ottenute come risposta all’interrogazione I due linguaggi, sotto opportune ipotesi, hanno lo stesso potere espressivo Sono la base a partire dalla quale e` stato sviluppato il linguaggio standard per l’accesso e la manipolazione di dati relazionali SQL 4
  3. 3. Prima di introdurre le relazioni … Dominio Prodotto Cartesiano 5 Dominio Un dominio è un insieme (anche infinito) di valori Esempi: l'insieme dei numeri interi l'insieme delle stringhe di caratteri l'insieme {0,1} Nel seguito: D insieme di tutti i domini int: numeri interi real: numeri reali string: stringhe date: date 6
  4. 4. Relazione – prodotto cartesiano D1, D2, …, Dk ∈ D (k insiemi anche non distinti) il prodotto cartesiano D1×D2×…×Dk è definito come: {(v1, v2, . . . , vk) | v1 ∈ D1, . . . , vk ∈ Dk} Il prodotto cartesiano D1×D2×…×Dk ha grado k Ogni elemento del prodotto cartesiano e` detto tupla 7 Relazione Siano D1, D2, …, Dk ∈ D domini Una relazione su D1, D2, …, Dk e` un sottoinsieme finito del prodotto cartesiano D1×D2×…×Dk Una relazione, sottoinsieme del prodotto cartesiano di k domini, ha grado k Ogni tupla di una relazione di grado k ha k componenti, una per ogni dominio su cui e` definita la relazione cui la tupla appartiene La cardinalita` di una relazione e` il numero di tuple appartenenti alla relazione 8
  5. 5. Notazioni Sia R una relazione di grado k Sia t una tupla di R Sia i ∈ {1,...,k} t[i] denota la i-esima componente di t 9 Esempio D1={0,1,2} D2={d,v} prodotto cartesiano D1 × D2 = {(0,d),(0,v),(1,d),(1,v),(2,d),(2,v)} una relazione di cardinalita` 3 r1 ⊆ D1 × D2 r1 = {(0,d),(0,v),(1,d)} una relazione di cardinalita` 2 r2 ⊆ D1 × D2 r2 = {(0,d),(2,d)} t = (0,d) t[1] = 0 t[2] = d 10
  6. 6. Relazione - proprietà Una relazione è un insieme di tuple, in quanto tali ordinate al loro interno: (d1, d2, …, dk) ∈ ∈ ∈ D1 D2 Dk … 11 Relazione - proprieta` Una relazione è un insieme, quindi: non è definito alcun ordinamento fra le tuple le tuple di una relazione sono distinte l’una dall’altra E` un insieme finito Ciascun dominio puo` invece essere infinito 12
  7. 7. Relazione – notazione posizionale La formulazione introdotta permette di riferire ogni componente di una tupla per posizione t = (d1, d2, …, dk ) t[1] t[2] … t[k] 13 Relazioni – notazione per nome Viene associato un nome, detto nome di attributo, ad ogni componente delle tuple in una relazione La coppia (nome di attributo, dominio) e` detta attributo L’uso degli attributi permette di denotare le componenti di ogni tupla per nome piuttosto che per posizione fornire maggiori informazioni semantiche sulle proprieta` che ogni componente delle tuple in una relazione modella Useremo questa notazione 14
  8. 8. Relazione - schema R nome di relazione {A1,A2,. . . , An} un insieme di nomi di attributi dom : {A1,A2, . . . ,An} → D una funzione totale che associa ad ogni nome di attributo in {A1,A2, . . . ,An} il corrispondente dominio La coppia (R(A1,A2, . . . ,An), dom) e` uno schema di relazione UR denota l’insieme dei nomi di attributi di R UR = {A1,A2, . . . ,An} 15 Schema di base di dati Siano S1, S2, . . . , Sn schemi di relazioni, con nomi di relazione distinti S = {S1, S2, . . . , Sn} e` detto schema di base di dati 16
  9. 9. Tupla e relazione Sia (R(A1,A2, . . . ,An), dom) uno schema di relazione Una tupla t definita su R e` un insieme di funzioni totali f1, f2, . . . , fn, dove fi : Ai → dom(Ai), i = 1, ..., n, associa all’attributo di nome Ai un valore del dominio di tale attributo Una relazione definita su uno schema di relazione e` un insieme finito di tuple definite su tale schema tale relazione e` anche detta istanza dello schema 17 Notazione Schema di relazione (R(A1,A2, . . . , An), dom), Una tupla t su tale schema puo` essere rappresentata come [A1 : v1,A2 : v2, . . . ,An : vn] vi, i = 1, . . . , n, e` un valore appartenente a dom(Ai) t[Ai] = vi, i =1,…,n A = {Ai1,…,Aik} ⊆ {A1,…,An} t[A] = (vi1,…,vik) 18
  10. 10. Esempio Schema: Film(titolo,regista,anno,genere,valutaz) dom(titolo) = dom(regista) = dom(genere) = string dom(anno) = int dom(valutaz) = real Relazione (= istanza dello schema) ⊆ string × string × int × string × real Tupla: [titolo:‘ed wood’,regista:‘tim burton’,anno:1994, genere:’drammatico’,valutaz:4.00] 19 Valori nulli Non sempre sono disponibili informazioni sulle entità del dominio applicativo rappresentato nella base di dati alcune tuple possono non avere un valore per un qualche attributo Si introduce un valore speciale (valore nullo) che denota la mancanza di valore 20
  11. 11. Valori nulli – quale valore? Usare un valore legale per almeno un dominio non e` una buona soluzione Se scegliamo 0, 0 e` un valore legale per i domini numerici il suo uso non permetterebbe di distinguere il caso in cui 0 sia effettivamente il valore dell’attributo dal caso in cui 0 indichi il valore nullo Assumiamo di denotare il valore nullo con il simbolo ‘?’ Il valore nullo e` un valore ammissibile per ogni dominio I linguaggi come SQL permettono di specificare nella definizione di una relazione quali attributi non possono mai assumere valore null Notazione negli schemi evidenziamo con un circoletto gli attributi che possono assumere valori nulli 21 Esempio Noleggio(colloc,dataNol, codCli,dataResto) dom(codCli) = dom(colloc) = int dom(dataNol)= dom(dataRest)= date 22
  12. 12. Chiavi Una chiave di una relazione e` un insieme di attributi che distingue fra loro le tuple della relazione Sia R(A1, ...,An) uno schema di relazione Un insieme X ⊆ UR di attributi di R e` chiave di R se verifica entrambe le seguenti proprieta`: qualsiasi sia lo stato di R, non esistono due tuple distinte 1. di R che abbiano lo stesso valore per tutti gli attributi in X nessun sottoinsieme proprio di X verifica la proprieta` (1) 2. Un insieme di attributi che verifica la proprieta` (1) ma non la proprieta` (2), e` detto super-chiave di R 23 Chiavi candidate Una relazione puo` avere piu` di un insieme S di attributi che verificano le proprieta` (1) e (2) chiavi candidate Le chiavi delle relazioni vengono individuate mediante esame del dominio applicativo e dei relativi vincoli Una relazione ha sicuramente almeno una chiave UR soddisfa sempre la proprieta` (1) Chiave primaria Chiavi candidate Chiavi alternative 24
  13. 13. Chiavi Una tupla e’ identificata dal valore di una qualunque chiave candidata Si preferisce pero’ usare la chiave primaria Usata dal DBMS per ottimizzare le operazioni Criteri di scelta della chiave primaria Chiave candidata contenente il minor numero di attributi Chiave candidata piu` frequentemente utilizzata nelle interrogazioni Le chiavi primarie non possono assumere valori nulli Le chiavi alternative possono assumere valori nulli 25 Esempio Cliente(codCli,nome,cognome,telefono,dataN,residenza) ◦ Film(titolo,regista,anno,genere,valutaz ) Video(colloc,titolo,regista,tipo) ◦ Noleggio(colloc,dataNol,codCli,dataRest ) 26
  14. 14. Chiavi esterne Permettono di modellare le associazioni Siano R ed R′ due relazioni Y ⊆ UR’ una chiave per R′ X ⊆ UR un insieme di attributi di R tale che Y e X contengano lo stesso numero di attributi e di dominio compatibile X e` una chiave esterna di R su R′ se, qualsiasi siano gli stati di R ed R′, per ogni tupla t di R esiste una tupla t′ di R′ tale che t[X] = t′[Y ] R viene detta relazione referente R′ viene detta relazione riferita 27 Chiavi esterne - schema X R(A,B,C,D,E) R’(F,G,H,I) (D,E) e (F,G) domini compatibili (D,E) puo` essere definita come chiave esterna di R su R’ Y 28
  15. 15. Chiavi esterne - istanza R R’ A B C D E F G H I a1 b1 c1 d1 e1 d1 e1 h1 i1 a2 b1 c2 d2 e1 d1 e2 h2 i2 a3 b2 c3 d1 e1 d2 e1 h1 i3 a4 b2 c3 d2 e3 d2 e4 h3 i4 d2 e2 h1 i1 d2 e3 h2 i1 29 Chiavi esterne Le chiavi esterne permettono di collegare tra loro tuple di relazioni diverse meccanismo per realizzare le associazioni per valore 30
  16. 16. Integrita` referenziale Qualsiasi siano gli stati di R ed R′, per ogni tupla t di R esiste una tupla t′ di R′ tale che t[X] = t′[Y ] Vincolo di integrita’ referenziale 31 Esempio Cliente(codCli,nome,cognome,telefono,dataN,residenza) ◦ Film(titolo,regista,anno,genere,valutaz ) Video(colloc,titoloFilm,registaFilm,tipo) ◦ Noleggio(collocVideo,dataNol,codCliCliente,dataRest ) 32
  17. 17. Esempio Vincolo di integrita` referenziale soddisfatto 33 Vincolo di integrita` referenziale Esempio soddisfatto 34
  18. 18. Esempio Vincolo di integrita` referenziale NON soddisfatto 1126 22-Mar-2006 6655 ? 35 Violazioni integrita` referenziale L’integrita` referenziale puo` essere violata da inserimenti e modifiche (del valore della chiave esterna) nella relazione referente da cancellazioni e modifiche (del valore della chiave) nella relazione riferita I linguaggi per basi di dati quali SQL permettono all’utente, nella definizione di chiavi esterne, di specificare quali azioni eseguire nel caso in cui operazioni di modifica violino l’integrita` referenziale 36
  19. 19. Violazioni Vincolo di integrita` referenziale violato da inserimento in tabella referente 1126 22-Mar-2006 6655 ? 37 Violazioni Vincolo di integrita` referenziale violato da modifica in tabella referente 6610 6660 6660 non appare 38
  20. 20. Violazioni Vincolo di integrita` referenziale violato da cancellazione in tabella riferita 39 Violazioni Vincolo di integrita` referenziale violato da modifica in tabella riferita 6630 40
  21. 21. Osservazione 1 I nomi degli attributi nella chiave e nella chiave esterna non devono necessariamente essere gli stessi Se lo sono, semplificano alcune operazioni (join naturale) Esempio Cliente(codCli,nome,cognome,telefono,dataN,residenza) Noleggio(collocVideo,dataNol,clienteCliente,dataResto) Gli attributi avranno sicuramente nomi diversi tutte le volte che la relazione referente e la relazione riferita coincidono, cioe` la chiave esterna contiene un riferimento alla relazione stessa Esempio Film(titolo,regista,anno,genere,valutazo,titoloPreoFilm,registaPreoFilm) (titoloPre,registaPre) contengono titolo e regista del film di cui il film e` eventualmente il seguito 41 Osservazione 2 Una relazione puo` contenere piu` chiavi esterne, eventualmente anche sulla stessa relazione Le chiavi esterne, come del resto le chiavi, devono essere esplicitamente specificate in uno schema di relazione Il fatto di avere attributi con lo stesso nome e domini compatibili in relazioni diverse non offre alcuna garanzia relativamente al mantenimento dell’integrita` referenziale Se non esplicitamente impedito mediante la specifica di un apposito vincolo, le chiavi esterne possono assumere valore nullo 42
  22. 22. Vincoli di integrita` Abbiamo visto Vincoli di dominio Vincoli di obbligatorieta` Vincolo di chiave (primaria, alternativa) Vincolo di integrita` referenziale (chiave esterna) Questi vincoli non sono sufficienti a garantire che il contenuto della base di dati rispecchi in modo fedele le informazioni del dominio applicativo da rappresentare Come faccio a garantire che la valutazione di un film sia un numero decimale compreso tra 0 e 5? Discuteremo nel seguito altre categorie di vincoli 43 Algebra Relazionale Il modello relazionale 44
  23. 23. Operazioni nel Modello Relazionale Le operazioni sulle relazioni possono essere espresse in due formalismi di base: Algebra relazionale: le interrogazioni (query) sono espresse applicando operatori specializzati alle relazioni Calcolo relazionale: le interrogazioni (query) sono espresse per mezzo di formule logiche che devono essere verificate dalle tuple ottenute come risposta all'interrogazione I due formalismi (sotto opportune ipotesi) sono equivalenti 45 Algebra Relazionale Esistono cinque operazioni di base: Proiezione Selezione Prodotto cartesiano Unione Differenza Queste operazioni definiscono completamente l’algebra relazionale 46
  24. 24. Algebra Relazionale Ogni operazione restituisce come risultato una relazione è pertanto possibile applicare una operazione al risultato di un'altra operazione (proprietà di chiusura) Esistono operazioni addizionali, che possono essere espresse in termini delle cinque operazioni di base Non aumentano il potere espressivo dell’agebra ma sono comode a fini pratici Operazione fondamentale: join 47 Algebra Relazionale La definizione delle varie operazioni e` leggermente diversa a seconda che si consideri la definizione del modello relazionale per posizione o la definizione per nome Considereremo la definizione per nome Operazione addizionale Ridenominazione Permette di modificare il nome degli attributi 48
  25. 25. Ridenominazione La ridenominazione di una relazione R rispetto ad una lista di coppie di nomi di attributi (A1,B1),…, (Am,Bm) tale che Ai è un nome di attributo di R, denotata con (R ) ρ A K, A m ← B1 ,K, Bm 1 ridenomina l’attributo di nome Ai con il nome Bi La ridenominazione è corretta se il nuovo schema della relazione R ha attributi con nomi tutti distinti La relazione ottenuta ha lo stesso grado della relazione R ed ha lo stesso contenuto Gli attributi della relazione risultato sono UR {A1,A2, . . . ,Am} ∪ {B1,B2, . . . ,Bm} 49 Ridenominazione - esempio La ridenominazione: ρ colloc,dataNol,codCli,dataRest ← video,dataIn,cliente,dataFine ( Noleggio ) cambia lo schema di Noleggio da Noleggio(colloc,dataNol,codCli,dataRest) a Noleggio(video,dataIn,cliente,dataFine) 50
  26. 26. Proiezione La proiezione di una relazione R su un insieme di attributi A={A1,…Am}, A ⊆ UR, indicata con Π A1,K, Am ( R) è una relazione di grado m le cui tuple hanno come attributi solo quelli specificati in A La proiezione genera un insieme T di tuple con m attributi (grado m) Se t=[A1:v1,…Am:vm] è in T allora esiste una tupla t’ in R tale che per ogni Ai in A, t[Ai]=t’[Ai] Nella relazione risultato gli attributi hanno l’ordine specificato in A La cardinalita` di T puo` essere diversa dalla cardinalita` di R Eliminazione duplicati 51 Proiezione - esempio A B C A C B A a b c a c b a d a f d f a d c b d c d b c Π A,C (R ) Π B, A (R ) R B Π B (R) b a 52
  27. 27. Proiezione - esempio 53 Selezione La selezione su una relazione R, dato un predicato F su R, indicata con σF (R) genera una relazione che contiene tutte le tuple di R che verificano F Il grado della relazione risultato è uguale al grado della relazione operando I nomi degli attributi della relazione risultato sono gli stessi della relazione operando La cardinalita` del risultato e` minore o uguale alla cardinalita` della relazione di partenza 54
  28. 28. Selezione - predicati Un predicato F su una relazione R ha una delle seguenti forme: predicato semplice combinazione booleana di predicati semplici, ottenuta con i connettivi ∧ (AND), ∨ (OR), ¬ (NOT) 55 Selezione - predicati Un predicato semplice ha una delle seguenti forme: A op v A op A’ dove: A e A’ sono attributi di R op è un operatore relazionale di confronto >,<,>=,<=,=, ≠ v è una costante compatibile con il dominio di A 56
  29. 29. Selezione – esempi di predicati codCli=6635 predicato semplice dataNol=dataRest predicato semplice codCli=6635 ∧ dataNol=dataRest combinazione booleana 57 Selezione Sia t=[A1:v1,…Ak:vk] una tupla in T = σF (R) t è tale che: F(A1/t[A1],…,Ak/t[Ak]) è vera La notazione Ai/t[Ai] indica la sostituzione in F del nome di attributo Ai (se tale nome compare in F) con il valore t[Ai] dell’attributo di nome Ai in t Se nessuna tupla di R verifica il predicato F, allora il risultato è una relazione vuota 58
  30. 30. Selezione - esempio A B C a b c A B C d a f a b c A B C c b d c b d d a f R σ B=b (R ) σ NOTB=b (R ) A B C A B C a b c c b d σ B =bORA=C (R ) σ B =bANDA=C (R ) 59 Selezione - esempio 60
  31. 31. Prodotto cartesiano Il prodotto cartesiano di due relazioni R ed S, di grado k1, k2, indicato con: RXS è una relazione di grado k1+k2 le cui tuple sono tutte le tuple che hanno: come prime k1 componenti le tuple di R come seconde k2 componenti le tuple di S 61 Prodotto cartesiano Si applica solo se R e S hanno schemi disgiunti Se le due relazioni hanno attributi con lo stesso nome, è necessario ridenominare gli attributi in una delle due relazioni Nella relazione risultato: i primi k1 attributi sono gli attributi della relazione R gli ultimi k2 attributi sono gli attributi della relazione S La cardinalita` del risultato e` il prodotto delle cardinalita` degli argomenti 62
  32. 32. Prodotto cartesiano - esempio D E F b g a A B C d a f a b c A B C D E F S d a f a b c b g a c b d a b c d a f R d a f b g a d a f d a f RXS c b d b g a c b d d a f 63 Prodotto cartesiano – esempio 64
  33. 33. Unione L’unione di due relazioni R, S, indicata con R∪S è l’insieme delle tuple in R, S o in entrambe L’unione di due relazione può essere fatta solo se hanno lo stesso schema La relazione risultato ha lo stesso schema delle relazioni argomento Le tuple duplicate vengono eliminate Il grado della relazione risultato è uguale al grado 65 delle relazioni operandi Unione - esempio A B C A B C b g a a b c d a f d a f S c b d A B C R a b c R∪S d a f c b d b g a 66
  34. 34. Unione - esempio 67 Differenza La differenza di due relazioni R ed S, indicata con R-S è l’insieme delle tuple che sono in R ma non in S La differenza (come l’unione) può essere eseguita solo se le relazioni hanno lo stesso schema La relazione risultato ha lo stesso schema delle relazioni argomento Il grado della relazione risultato è uguale al grado delle relazioni operandi 68
  35. 35. Differenza - esempio A B C A B C b g a a b c d a f d a f S c b d A B C R a b c R-S c b d 69 Differenza - esempio 70
  36. 36. Operazioni derivate - intersezione L’intersezione di due relazioni R, S, indicata con R∩S è l’insieme delle tuple contenute in R e in S L’intersezione di due relazione può essere fatta solo se hanno lo stesso schema La relazione risultato ha lo stesso schema delle relazioni argomento Il grado della relazione risultato è uguale al grado delle relazioni operandi 71 Operazioni derivate - intersezione L’intersezione è un’operazione derivata Può infatti essere definita come segue R∩S = R - (R - S) 72
  37. 37. Operazioni derivate – intersezione - esempio A B C a b c A B C A B C d a f b g a d a f c b d d a f S R∩S R A B C A B C a b c d a f c b d R - (R-S) R-S 73 Operazioni derivate – intersezione - esempio 74
  38. 38. Operazioni derivate – intersezione - esempio 75 Operazioni derivate - join Il join (detto anche theta-join) di due relazioni R ed S sugli attributi A di R ed A’ di S, indicato con R >< AθA' S è definito come σ AθA' (R × S ) Il join è quindi un prodotto cartesiano seguito da una selezione Il predicato AθA’ è detto predicato di join 76
  39. 39. Operazioni derivate - join Come per il prodotto cartesiano, gli schemi delle due relazioni argomento devono essere disgiunti e lo schema della relazione risultato e` dato dalla loro unione Il grado della relazione risultato è uguale alla somma dei gradi delle relazioni operandi 77 Operazioni derivate – join - esempio ABC DE 31 1 2 3 62 4 5 6 A B C D E S 7 8 9 1 2 3 3 1 1 2 3 6 2 R 4 5 6 6 2 ABCDE R >< B< D S 12331 R >< A= E S 78
  40. 40. Operazioni derivate – join - esempio 79 Operazioi derivate - join Il join e` un’operazione estremamente importante in quanto permette di collegare tuple di relazioni diverse e di attraversare le associazioni rappresentate nelle relazioni della base di dati mediante il meccanismo delle chiavi esterne Il join prende il nome di equi-join quando l’operatore usato nel predicato di join e` l’operatore di uguaglianza (=) 80
  41. 41. Operazioni derivate – join - esempio Determinare il titolo ed il regista dei film noleggiati il 15 Marzo 2006 dal cliente di codice 6635 81 Operazioni derivate – join naturale L’operazione di join naturale è una ‘semplificazione’ del join Ha senso solo nella notazione con nome del modello relazionale E’ un tipo di join molto frequente L’operazione di join naturale indica un tipo di join basato sull’eguaglianza degli attributi comuni a due relazioni 82
  42. 42. Operazioni derivate – join naturale Il join naturale di due relazioni R ed S e` indicato con R >< S Sia {A1,…,Ak} = UR∩US {I1,…,Im} = UR∪US {B1,…,Bk} nomi di attributi che non compaiono ne’ in R ne’ in S l’espressione che definisce il join naturale è Π I1,...,Im (σ c (R × (ρ A1,...,Ak←B1,...,Bk (S )))) 83 Operazioni derivate – join naturale Nella formula precedente c indica la formula A1=B1 AND A2 = B2 AND … AND Ak = Bk Pertanto il join naturale esegue un join eguagliando gli attributi con lo stesso nome delle due relazioni argomento dell’operazione e poi elimina gli attributi duplicati dalla relazione risultato Affinche’ l’operazione di join sia ben definita, gli attributi con nomi uguali nelle relazioni argomento dell’operazione devono avere domini compatibili 84
  43. 43. Operazioni derivate – join naturale UR = US Join naturale = intersezione UR ∩ US = ∅ Join naturale = prodotto cartesiano Il join naturale permette di navigare in modo molto piu` agevole, rispetto al join, le associazioni rappresentate tramite il meccanismo delle chiavi esterne, nel caso in cui per chiave e chiave esterna sia stato utilizzato lo stesso nome 85 Operazioni derivate – join naturale - esempio A B C B C D A B C D a b c b c d a b c d d b c b c e a b c e b b f a d b d b c d c a d S d b c e R c a d b R >< S 86
  44. 44. Operazioni derivate – join naturale - esempio Supponiamo di voler abbinare codice e nome del cliente al titolo e all’anno dei film di Quentin Tarantino solo se il cliente ha noleggiato almeno un video di quel film 87 Operazioni derivate - divisione Date due relazioni R ed S con insiemi di attributi UR ed US, rispettivamente, e tali che UR ⊃ US, l'operazione di divisione di R per S è denotata da R÷S permette di determinare le tuple t di schema D = UR – US tali che in R appaiono tutte le tuple che si ottengono combinando t con ogni tupla di S 88
  45. 45. Operazioni derivate - divisione Una tupla t viene cioe` restituita se, per ogni tupla s in S, in R e` presente una tupla r tale che r[D] = t[D] e r[US] = s[US] Formulazione alternativa, che giustifica il suo nome come operazione “inversa” del prodotto: t ∈ R÷S se e solo se {t}×S ⊆ R l’operazione di divisione determina le tuple per cui in una relazione c’e` una corrispondenza con tutte le tuple di un’altra relazione 89 Operazioni derivate – divisione - esempio B C A B C b c a b c b d a b d b b d a d a a d S R A a R÷S 90
  46. 46. Operazioni derivate – divisione - esempio B C A B C b c a b c b d a b d b b d a d a a d S R A a R÷S 91 Operazioni derivate – divisione - esempio Determinare i codici dei clienti che hanno noleggiato tutti i film di Tim Burton Film di Tim Burton 1. 92
  47. 47. Operazioni derivate – divisione - esempio Film noleggiati dai clienti 2. 93 Operazioni derivate – divisione - esempio NC ÷ TB 94
  48. 48. Operazioni derivate – divisione La divisione si puo` esprimere nel modo seguente: ΠD (R) - Π D((ΠD (R) x S) - R) dove D = (UR - US) 95 Operazioni derivate – divisione - esempio 96
  49. 49. Operazioni derivate – divisione - esempio 97 Operazioni derivate – divisione - esempio 6635 6642 6610 98
  50. 50. Algebra relazionale - esempio Selezionare i codici dei clienti che hanno noleggiato sia film drammatici che film horror Codici clienti che hanno noleggiato almeno un film drammatico 1. R= Codici clienti che hanno noleggiato almeno un film horror 2. S= ∩S Risultato: R 3. 99 Algebra relazionale - esempio Selezionare i codici dei clienti che non hanno mai noleggiato film horror Codici clienti R = 1. Codici clienti che hanno noleggiato almeno un film horror 2. S= Risultato: R - S 3. 100
  51. 51. Algebra relazionale - esempio Selezionare i codici dei clienti che hanno noleggiato film di almeno due generi diversi Coppie cliente/genere film noleggiati 1. R= Associazione binaria tra coppie cliente/genere film noleggiato 2. S=RX Risultato: Selezione delle associazioni relative allo stesso 3. cliente, ma generi diversi e proiezione sul codice T= Si poteva anche risolvere con un join naturale, cosa sarebbe 101 cambiato? Algebra relazionale - esempio Selezionare titolo e regista del film con la valutazione piu` alta Titolo e regista di tutti i film 1. R= Titolo e regista dei film con valutazione non massima (film per 2. cui esiste un altro film con valutazione maggiore della loro) S= Risultato: R - S 3. 102
  52. 52. Algebra relazionale – sintesi 103 Calcolo Relazionale Il modello relazionale 104
  53. 53. Algebra vs. calcolo L’algebra relazionale è un linguaggio procedurale dobbiamo indicare le operazioni da eseguire per ottenere il risultato di una data interrogazione Il calcolo relazionale e` un linguaggio dichiarativo viene data una descrizione formale del risultato, senza specificare come ottenerlo 105 Calcolo relazionale - Varianti Due varianti del calcolo relazionale: Tuple relational calculus (TRC) le variabili rappresentano tuple Domain relational calculus (DRC) le variabili rappresentano valori di domini ogni espressione richiede un numero molto elevato di variabili usate in interfaccie grafiche 106
  54. 54. Calcolo relazionale - atomi s∈R (R è un nome di relazione ed s è una variabile) la tupla s appartiene alla relazione R s[A] θ u[A’] (s ed u sono variabili, θ è un operatore relazionale di confronto, A ed A’ sono nomi di attributi) il valore di A nella tupla s è in relazione θ con il valore di A’ nella tupla u s[A] θ a (s è una variabile, θ è un operatore relazionale di confronto, A è un nome di attributo, a è una costante) il valore di A nella tupla s è in relazione θ con il valore a 107 Calcolo relazionale - formule Variabili libere e legate data una formula F ed una variabile x, x è libera in F se e solo se x non compare in un quantificatore ∀x (quantificazione universale) In un quantificatore ∃x (quantificazione esistenziale) 108
  55. 55. Calcolo relazionale - formule ogni atomo è una formula tutte le occorrenze delle variabili dell’atomo sono libere se φ1 e φ2 sono formule, allora φ1∧φ2, φ1∨φ2, ¬φ1 sono formule le occorrenze delle variabili sono libere o legate a seconda di come sono in φ1 e φ2 se φ è una formula allora ∃s(φ), ∀s(φ) sono formule tutte le occorrenze di s in φ sono legate al quantificatore ∃ (oppure ∀) se φ è una formula allora (φ) è una formula le occorrenze delle variabili sono libere o legate a seconda di come sono in φ 109 Calcolo relazionale – verita` delle formule Presentiamo una formulazione intuitiva dati una formula f(x1, x2,…, xn), con x1, x2,…, xn variabili libere una tupla di valori (a1, a2,…, an ) f(x1, x2,…, xn) e` vera su (a1, a2,…, an ) se sostituendo xi con ai si ottiene il valore True 110
  56. 56. Calcolo relazionale – formule - esempio cc formula legale tutte le occorrenze sono legate la formula e` vera se esiste una tupla appartenente alla relazione Film avente il valore dell’attributo valutaz maggiore di 3.50 formula legate tutte le occorrenze di x sono legate tutte le occorrenze di y sono libere la formula e` vera sulla tupla (‘big fish’) con schema (Titolo) se esiste una tupla appartenente alla relazione Film avente il valore dell’attributo valutaz maggiore di 3.5 e titolo uguale a ‘big fish’ 111 Calcolo relazionale - espressioni In TRC un’espressione o interrogazione ha la forma {x:U|f(x)} dove U e` un insieme di attributi f e` una formula legale del calcolo x e` la sola variabile libera in f un’espressione è quindi definita come l’insieme di tutte le tuple x su un insieme di attributi U tali che il la formula f è vera per x 112
  57. 57. Calcolo relazionale – espressioni - esempio cc espressione corretta ritrova i registi di cui almeno un film ha valutazione superiore a 3.50 espressione errata poiche’ x non e` libera 113 Calcolo relazionale - esempi Ritrovare titolo ed anno di uscita dei film presenti nella videoteca Ritrovare i noleggi effettuati dal cliente con codice 6635 Ritrovare l’anno ed il genere dei film il cui regista e` Tim Burton o Gabriele Salvatores 114
  58. 58. Calcolo relazionale - esempi Ritrovare per i noleggi di film di Quentin Tarantino il codice ed il nome del cliente che ha effettuato il noleggio insieme al titolo ed all’anno del film noleggiato 115 Calcolo relazionale - esempi Ritrovare i codici dei clienti che hanno noleggiato sia film drammatici sia film horror 116
  59. 59. Calcolo relazionale – esprimere l’algebra con il TRC Proiezione: ΠA1,…Ak (R) {t:{A1,…,Ak}|∃x(x∈R∧x[A1]=t[A1]∧…∧x[Ak]=t[Ak]} Selezione: σF(R) {t:UR|t ∈R ∧F’} dove F’ è la formula F con ogni attributo A sostituito da t[A] 117 Calcolo relazionale – esprimere l’algebra con il TRC Prodotto cartesiano: RxS siano UR ={A1,…,An} e US ={A’1,…,A’m} gli insiemi degli attributi di R ed S {t: UR ∪ US |∃x(∃y(x∈R∧y∈S∧ x[A1]=t[A1]∧…∧x[An]=t[An] ∧ y[A’1]=t[A’1]∧…∧ y[A’m]=t[A’m]))} {t : UR | t ∈ R ∨ t∈S} Unione: R∪S {t : UR | t ∈ R ∧ ¬t∈S} Differenza: R-S 118
  60. 60. Calcolo relazionale – potere espressivo L’algebra relazionale e il calcolo relazionale hanno lo stesso potere espressivo? Cioè tutte le operazioni esprimibili mediante espressioni dell’algebra relazionale possono essere espresse mediante espressioni del calcolo relazionale e viceversa? 119 Calcolo relazionale – potere espressivo La semantica di un’interrogazione (in algebra o in calcolo) è una funzione che trasforma una base di dati relazionale (insieme di relazioni) in una nuova base di dati relazionale algebra e calcolo hanno lo stesso potere espressivo se per ogni interrogazione Q1 in uno dei due formalismi esiste un’interrogazione Q2 nell’altro la cui semantica è la stessa funzione 120
  61. 61. Calcolo relazionale – potere espressivo Non tutte le espressioni del calcolo possono essere tradotte in equivalenti espressioni dell’algebra Esempio: l’espressione {t:UFilm| ¬t∈Film} è sintatticamente corretta poiche’ alcuni attributi di Film hanno dominio infinito (ad esempio Titolo, con dominio string) questa espressione è soddisfatta da un numero infinito di tuple il risultato non sarebbe una relazione! 121 Calcolo relazionale – potere espressivo Si introduce quindi una condizione sintattica (safety) sufficiente ad evitare situazioni come quella precedente L’espressione {t:UFilm| ¬t∈Film} non è safe il calcolo relazionale safe e l’algebra relazionale hanno lo stesso potere espressivo la traduzione da un formalismo all’altro può essere effettuata in tempo polinomiale nella dimensione dell’espressione 122
  62. 62. Perché due linguaggi? Algebra relazionale linguaggio procedurale utile per il sistema Calcolo relazionale (safe) linguaggio dichiarativo utile per l’utente i linguaggi di interrogazione nei sistemi reali si basano sul calcolo l’algebra relazionale viene utilizzata come linguaggio interno l’interrogazione utente viene compilata in un’espressione dell’algebra relazionale il sistema utilizza le proprietà dell’algebra per stabilire quale espressione permette di risolvere l’interrogazione iniziale nel modo più efficiente 123
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×