SlideShare ist ein Scribd-Unternehmen logo
1 von 62
Downloaden Sie, um offline zu lesen
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Esempio




                     Vincolo di
                     integrita` referenziale
                     soddisfatto




                                        33




           Vincolo di
           integrita` referenziale
 Esempio   soddisfatto




                                        34
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Operazioni derivate – divisione
     - esempio
     Film noleggiati dai clienti
2.




                                             93




     Operazioni derivate – divisione
     - esempio




                                   NC ÷ TB




                                             94
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
Operazioni derivate – divisione
- esempio




                                  97




Operazioni derivate – divisione
- esempio

               6635
               6642
               6610




                                  98
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
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
Algebra relazionale – sintesi




                                       103




          Calcolo Relazionale




              Il modello relazionale   104
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
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
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
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
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
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
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
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
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
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

Weitere ähnliche Inhalte

Ähnlich wie 02 Modello, Algebra E Calcolo Relazionale

Linguaggio R, principi e concetti
Linguaggio R, principi e concettiLinguaggio R, principi e concetti
Linguaggio R, principi e concettiVincenzo De Maio
 
Database, concetti di base
Database, concetti di baseDatabase, concetti di base
Database, concetti di baseantmng
 
Wir Schiavinato 170608
Wir Schiavinato 170608Wir Schiavinato 170608
Wir Schiavinato 170608guestdbb6c5
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)STELITANO
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)STELITANO
 

Ähnlich wie 02 Modello, Algebra E Calcolo Relazionale (8)

R Vectors
R VectorsR Vectors
R Vectors
 
Codici di Reed-Solomon
Codici di Reed-SolomonCodici di Reed-Solomon
Codici di Reed-Solomon
 
Linguaggio R, principi e concetti
Linguaggio R, principi e concettiLinguaggio R, principi e concetti
Linguaggio R, principi e concetti
 
Database, concetti di base
Database, concetti di baseDatabase, concetti di base
Database, concetti di base
 
Wir Schiavinato 170608
Wir Schiavinato 170608Wir Schiavinato 170608
Wir Schiavinato 170608
 
Appunti database
Appunti databaseAppunti database
Appunti database
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)
 

Mehr von guestbe916c

Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
Laboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H PLaboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H P
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H Pguestbe916c
 
Laboratorio Di Basi Di Dati 08 Il Web Server Apache
Laboratorio Di  Basi Di  Dati 08  Il  Web Server  ApacheLaboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache
Laboratorio Di Basi Di Dati 08 Il Web Server Apacheguestbe916c
 
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M LLaboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M Lguestbe916c
 
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
Laboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q LLaboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q L
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q Lguestbe916c
 
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
Laboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M SLaboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M S
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M Sguestbe916c
 
Laboratorio Di Basi Di Dati 01 Introduzione
Laboratorio Di  Basi Di  Dati 01 IntroduzioneLaboratorio Di  Basi Di  Dati 01 Introduzione
Laboratorio Di Basi Di Dati 01 Introduzioneguestbe916c
 
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E SessioniLaboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioniguestbe916c
 
Corso Di Basi Di Dati 09 Modelli Controllo
Corso Di  Basi Di  Dati 09  Modelli ControlloCorso Di  Basi Di  Dati 09  Modelli Controllo
Corso Di Basi Di Dati 09 Modelli Controlloguestbe916c
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q Lguestbe916c
 
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato ServerLaboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Serverguestbe916c
 
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
Laboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato ClientLaboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato Client
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Clientguestbe916c
 
Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionaleguestbe916c
 
Corso Di Basi Di Dati 10 Transazioni
Corso Di  Basi Di  Dati 10  TransazioniCorso Di  Basi Di  Dati 10  Transazioni
Corso Di Basi Di Dati 10 Transazioniguestbe916c
 
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
Laboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q LLaboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q L
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q Lguestbe916c
 
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
Corso Di  Basi Di  Dati 06  Esercizi Di Progettazione ConcettualeCorso Di  Basi Di  Dati 06  Esercizi Di Progettazione Concettuale
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettualeguestbe916c
 
Corso Di Basi Di Dati 03 Progettazione Concettuale
Corso Di  Basi Di  Dati 03  Progettazione ConcettualeCorso Di  Basi Di  Dati 03  Progettazione Concettuale
Corso Di Basi Di Dati 03 Progettazione Concettualeguestbe916c
 
Corso Di Basi Di Dati 05 Normalizzazione
Corso Di  Basi Di  Dati 05  NormalizzazioneCorso Di  Basi Di  Dati 05  Normalizzazione
Corso Di Basi Di Dati 05 Normalizzazioneguestbe916c
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logicaguestbe916c
 
Corso Di Basi Di Dati 02 S Q L D M L
Corso Di  Basi Di  Dati 02  S Q L  D M LCorso Di  Basi Di  Dati 02  S Q L  D M L
Corso Di Basi Di Dati 02 S Q L D M Lguestbe916c
 
Corso Di Basi Di Dati 02 S Q L Query
Corso Di  Basi Di  Dati 02  S Q L   QueryCorso Di  Basi Di  Dati 02  S Q L   Query
Corso Di Basi Di Dati 02 S Q L Queryguestbe916c
 

Mehr von guestbe916c (20)

Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
Laboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H PLaboratorio Di  Basi Di  Dati 09  Il Linguaggio  P H P
Laboratorio Di Basi Di Dati 09 Il Linguaggio P H P
 
Laboratorio Di Basi Di Dati 08 Il Web Server Apache
Laboratorio Di  Basi Di  Dati 08  Il  Web Server  ApacheLaboratorio Di  Basi Di  Dati 08  Il  Web Server  Apache
Laboratorio Di Basi Di Dati 08 Il Web Server Apache
 
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M LLaboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
 
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
Laboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q LLaboratorio Di  Basi Di  Dati 03  Il  D B M S  Postgre S Q L
Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L
 
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
Laboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M SLaboratorio Di  Basi Di  Dati 11  P H P   Interazione Con I  D B M S
Laboratorio Di Basi Di Dati 11 P H P Interazione Con I D B M S
 
Laboratorio Di Basi Di Dati 01 Introduzione
Laboratorio Di  Basi Di  Dati 01 IntroduzioneLaboratorio Di  Basi Di  Dati 01 Introduzione
Laboratorio Di Basi Di Dati 01 Introduzione
 
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E SessioniLaboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
 
Corso Di Basi Di Dati 09 Modelli Controllo
Corso Di  Basi Di  Dati 09  Modelli ControlloCorso Di  Basi Di  Dati 09  Modelli Controllo
Corso Di Basi Di Dati 09 Modelli Controllo
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q L
 
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato ServerLaboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
 
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
Laboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato ClientLaboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato Client
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
 
Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionale
 
Corso Di Basi Di Dati 10 Transazioni
Corso Di  Basi Di  Dati 10  TransazioniCorso Di  Basi Di  Dati 10  Transazioni
Corso Di Basi Di Dati 10 Transazioni
 
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
Laboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q LLaboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q L
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
 
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
Corso Di  Basi Di  Dati 06  Esercizi Di Progettazione ConcettualeCorso Di  Basi Di  Dati 06  Esercizi Di Progettazione Concettuale
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
 
Corso Di Basi Di Dati 03 Progettazione Concettuale
Corso Di  Basi Di  Dati 03  Progettazione ConcettualeCorso Di  Basi Di  Dati 03  Progettazione Concettuale
Corso Di Basi Di Dati 03 Progettazione Concettuale
 
Corso Di Basi Di Dati 05 Normalizzazione
Corso Di  Basi Di  Dati 05  NormalizzazioneCorso Di  Basi Di  Dati 05  Normalizzazione
Corso Di Basi Di Dati 05 Normalizzazione
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logica
 
Corso Di Basi Di Dati 02 S Q L D M L
Corso Di  Basi Di  Dati 02  S Q L  D M LCorso Di  Basi Di  Dati 02  S Q L  D M L
Corso Di Basi Di Dati 02 S Q L D M L
 
Corso Di Basi Di Dati 02 S Q L Query
Corso Di  Basi Di  Dati 02  S Q L   QueryCorso Di  Basi Di  Dati 02  S Q L   Query
Corso Di Basi Di Dati 02 S Q L Query
 

02 Modello, Algebra E Calcolo Relazionale

  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Esempio Vincolo di integrita` referenziale soddisfatto 33 Vincolo di integrita` referenziale Esempio soddisfatto 34
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Operazioni derivate – divisione - esempio Film noleggiati dai clienti 2. 93 Operazioni derivate – divisione - esempio NC ÷ TB 94
  • 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. Operazioni derivate – divisione - esempio 97 Operazioni derivate – divisione - esempio 6635 6642 6610 98
  • 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. 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. Algebra relazionale – sintesi 103 Calcolo Relazionale Il modello relazionale 104
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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