OPERATORI(RELAZIONALI( -...

Preview:

Citation preview

OPERATORI  RELAZIONALI        

 prima  RIPASSIAMO  …COSA  ABBIAMO  IMPARATO  

Proge0azione  di  DB  La  metodologia  “classica”    è  basata  su  3  fasi  …    

ANALISI  REQUISITI  

Tabella2  Tabella1   TabellaN  

PROGETTAZIONE  CONCETTUALE  

PROGETTAZIONE  LOGICA  Schema  logico  relazionale  

PROGETTAZIONE  FISICA  

FILE1   FILE2   FILEn  

Cosa  si  rappresenta  

Come  lo  si  rappresenta  

Sappiamo  riconoscere  -­‐  En%ta’  e  a*ribu%    (  semplici-­‐compos0-­‐mul0pli)  Chiave  primaria  interna  PK  -­‐  Associazione        -­‐partecipazione  (tot  /parz)        -­‐molteplicità(univ/mult)  -­‐  Tipologie      1:1        1:N          N:N    

Sappiamo  applicare  le  Regole  di  DERIVAZIONE  Su  En0ta’  e  Associazioni  Per  costruire  lo    Schema  logico  relazionale  

Eventuale  FASE  DI  TESTING  :  scrivere  ipotesi  di  tabelle  

FK:CodiceMedico  referenzia  tblMEDICI  

 Sappiamo  progeCare  semplici  DataBASE  –  scrivere  schema  conce*uale  e    schema  logico  (  come  in  questo  esempio)  

           RIEPILOGO  REGOLE  DI  DERIVAZIONE    

1.  Ogni  ENTITA’  diventa  una  relazione  (tabella).    2.  Ogni  ATTRIBUTO  di  un’enOta  diventa  un  aQributo  della  relazione,(  cioe  il  nome  di  una  colonna  della  tabella)  ed  eredita  le  caraQerisOche  dell’aQributo  dell’enOta  da  cui  deriva.    3.L’  IDENTIFICATORE  UNIVOCO  di  un’enOta  diventa  chiave  primaria  della  relazione.  4.  L’ASSOCIAZIONE  di  Kpo  1:N  viene  rappresentata  aggiungendo,  agli  aQribuO  della  relazione  dell’enOta  lato  N    una  «chiave  esterna»  (foreign  key)  collegata  alla  chiave  primaria  dell’altra  enOta.    5.L’ASSOCIAZIONE  1:1  a  partecipazione  reciprocamente  totale  diventa  un’unica  relazione  (  tabella)  che  conOene  tu[  gli  aQribuO  della  prima  e  della  seconda  enOta.    6.  L’ASSOCIAZIONE  di  Kpo  1:1  a  partecipazione  parziale-­‐totale  viene  rappresentata  aggiungendo,  agli  aQribuO  della  relazione  dell’enOta  a  partecipazione  totale,  una  chiave  esterna  (foreign  key)  collegata  alla  chiave  primaria  dell’altra  enOta.    7.  L’ASSOCIAZIONE  N:N    diventa  una  nuova  relazione  (in  aggiunta  alle  relazioni  derivate  dalle  due  enOta)  con  i  suoi  eventuali  aQribuO  ,  a  cui  si  aggiungono  le  "chiavi  esterne”  FK  logicamente  collegate  alle  "chiavi  primarie”  PK  delle  prime  due  relazioni.    La  chiave  primaria  è  composta  dalle  due  chiavi  esterne.    (NB:  vale  anche  per  associazione  1:1  con  partecipazione  reciprocamente  parziale)        

OPERATORI  RELAZIONALI  

  definiK  da  Codd  (1970)    Agiscono  su  una  o  più  relazioni  

(  tabelle)  per  o0enere  una  nuova  relazione    

  servono  a  realizzare  le  interrogazioni  sul  database  (  query  )  

IMMAGINIAMO  ORA  DI  AVERE  A  DISPOSIZIONE  ALCUNE  TABELLE  RELATIVE  AD  UN  DATABASE  E  DI  VOLER  INTERRROGARE  IL  DATABASE  PER  ESTRARRE  SOLO  LE  INFORMAZIONI  CHE  CI  INTERESSANO.  

DOBBIAMO  UTILIZZARE  GLI:  

SCHEMA  OPERATORI    RELAZIONALI      

operano  su    UNA  TABELLA  

NB:  INTERSEZIONE,  UNIONE,  DIFFERENZA  SI  POSSONO  FARE  SOLO  CON  TABELLE  COMPATIBILI    CIOE’  AVENTI  LO  STESSO  SCHEMA  DI  ATTRIBUTI  (  stesse  colonne  )  

SELEZ.  RIGHE  

SELEZ.  COLONNE  

operano  su    due  TABELLE  

TUPLE  COMUNI    E  NON  COMUNI  

TUPLE  DI  R  –  TUPLE  DI  S  

ASSOCIA    AGNI  TUPLA  DI  R  TUTTE  LE  TUPLE  DI  S  

TUPLE  COMUNI    (  se  ci  sono  )  

Congiunge  tabelle  R  ed  S  con  aQributo  comune  

OPERATORI  RELAZIONALI  PRINCIPALI  

SELEZIONE  (DI  RIGHE)      

 PER  Predicato  DA    relazione  

σ  ciQà=“Torino”  (ClienO)      

∏Campo1,Campo2  (Tabella)      

PROIEZIONE  (DI  COLONNE)    

SU  ListaAQribuO    DA  relazione  

GIUNZIONE      NATURALE  JOIN  fra    

TabellaR  su  Cod  e  TabellaS  su  Cod        R        ⋈      S      

Cod=Cod  

Nel  Predicato  si  uOlizzano  anche  AND    e  OR  

DUE  TABELLE  si  possono  congiungere  

Da  UNA  TABELLA  posso  ricavare  :    

Date  le  TABELLE  per  interrogare  il  Database  si  usano  gli  OPERATORI    RELAZIONALI  

operano  su    UNA  TABELLA  

NB:  INTERSEZIONE,  UNIONE,  DIFFERENZA  SI  POSSONO  FARE  SOLO  CON  TABELLE  COMPATIBILI    CIOE’  AVENTI  LO  STESSO  SCHEMA  DI  ATTRIBUTI  (  stesse  colonne  )  

SELEZ.  RIGHE  

SELEZ.  COLONNE  

operano  su    due  TABELLE  

TUPLE  COMUNI    E  NON  COMUNI  

TUPLE  DI  R  –  TUPLE  DI  S  

ASSOCIA    AGNI  TUPLA  DI  R  TUTTE  LE  TUPLE  DI  S  

TUPLE  COMUNI    (  se  ci  sono  )  

Congiunge  tabelle  R  ed  S  con  aQributo  comune  

 UNIONE      R  ∪  S    DIFFERENZA      R-­‐S    INTERSEZIONE    R∩S  =R-­‐(R-­‐S)    PRODOTTO  CARTESIANO  R  x  S  

a   b   c  

pq  Insieme  di  coppie  ordinate  (r;s)  oQenute  abbinando    

ogni  elemento  di  R  con  tu[  gli  elemenO  di  S.    Non  è  commutaOva  In    questo  esempio  RXS={  (  a;p)  (a;q)  (b;p)  (b;q)  (c;p)  (c;q)}    

OPERATORI  INSIEMISTICI  fra  R  ed  S      sono  operazioni  insiemis0che  fra  tabelle…ricordiamo  LA  LORO  DEFINIZIONE  ALGEBRICA:  

ElemenO  comuni  e  non  comuni.    E’  commutaOva  cioè      R  U  S  =  S  U  R  

ElemenO  di  R  –  elemenO  di  S  .    Non  è  commutaOva  cioè  R  –S  ≠  S  -­‐  R  

ElemenO  comuni  fra  R  ed  S.    E’  commutaOva  R∩S=S∩R      

R   S  

UNIONE  R∪S  

LA  RELAZIONE  RISULTANTE  HA  :        GRADO  UGUALE  (  stesso  schema  e  quindi  stesso  n.  colonne!)        CARDINALITA’  =CARD(R)+CARD(S)  –CARD(R∩S)    

 E’  una  nuova  relazione  (  tabella  )  che  ha:       Per  schema:  gli  stessi  a0ribuK     Per  istanza:  le  tuple  comuni  e  non  comuni  (scri0e    una  sola  volta)  

SOMMA  DELLE  CARDINALITA’  DELLE  TABELLE  –  NUMERO  RIGHE  COMUNI  

Grado=4  (n  colonne)    

 Card=5    (  n.  righe)  

Possibile  solo  fra    tabelle  COMPATIBILI  !  

}        

 E’  una  nuova  relazione  (  tabella  )  che  ha:       Per  schema:  gli  stessi  a0ribuK     Per  istanza:  le  tuple  di  R  meno  quelle  comuni  ad  S  

DIFFERENZA  R-­‐S  

LA  RELAZIONE  RISULTANTE  HA  :  GRADO  UGUALE  (  stesso  schema  e  quindi  stesso  n.  colonne!)  CARDINALITA’  =  CARD(R)  –  CARD(R∩S),  RIGHE  COMUNI)  

Possibile  solo  fra    tabelle  COMPATIBILI  !  

Grado=4    Card(R-­‐S)=  1                                    (3-­‐2righe  comuni)  

}        

INTERSEZIONE  R∩S  

LA  RELAZIONE  INTERSEZIONE  HA  :                  GRADO  UGUALE                      CARDINALITA’  =  CARD(R∩S)  =  NUMERO  RIGHE  COMUNI  

 E’  una  nuova  relazione  (  tabella  )  che  ha:       Per  schema:  lo  stesso  schema       Per  istanza:  le  tuple  comuni  (  scri0e  una  sola  volta  )  

Possibile  solo  fra    tabelle  COMPATIBILI  !  

}        Grado=4    Card(R∩S)=  2                                      

PRODOTTO  CARTESIANO  RXS      è  una  nuova  tabella  con  •    schema:    gli  a0ribuK  di  R  e  di  S                    Grado  (n.colonne)  =  g1+g2    •    istanza:    tu0e  le  possibili  coppie  di  tuple  di  R  e  S    Card=c1  X  c2  

IL  GRADO  è  LA  SOMMA  DEI  GRADI   LA  CARDINALITA’  E’  IL  PRODOTTO  DELLE  CARDINALITA’  

 Possibile  con  Grado  (n.colonne)    e  Cardinalità(n.righe)  diverse.    

Ogni  tupla  d

i  R    

viene  conca

tenata  

 a  tuCe  le  tu

ple  di  S  

PROIEZIONE  DI  COLONNE        ∏    (proj)        

PROIEZIONE  SU  Lista  aQribuO    DA  relazione  

OPERATORI    UNARI  SU  UNA  RELAZIONE                                                                                                            (  tabella  )  

PROIEZIONE  (  di  colonne)    

Grado(S)≤  Grado(R)  

S  =  ∏  Cognome,  Nome  (ClienO)      

Data  la  tabella  IMP  (  impiegaO),  si  esprima,  nell’algebra  relazionale,  ciascuna  delle  seguenO  interrogazioni:  A  –  elenco  Cognome  e  Nome  degli  ImpiegaO  B    -­‐  elenco  Reparto  e  Superiore  degli  ImpiegaO    

PROVA TU…

                     

Soluzioni    

 SELEZIONE  DI  RIGHE        σ      (  SEL)             SELEZIONA  PER  Predicato  

DA    relazione  

OPERATORI    UNARI  SU  UNA  RELAZIONE  

SELEZIONE  O  RESTRIZIONE  di  righe    

S  =  σ  CiQà  =  “Torino”  (ClienO)      S  =  σ  CiQà=  “Torino”  (ClienO)      

Il  Predicato  di  una  selezione  può  essere  semplice    oppure  composto  con  operatori:      AND      e      OR    

S1  =  σ  Filiare=“Roma”  (ImpiegaO)      

ImpiegaO  

S2  =  σ  SOpendio<60  (ImpiegaO)      

S3  =  σ  Filiare=“Roma”  AND  SOpendio<60  (ImpiegaO)      

S4  =  σ  Filiare=“Roma”  OR  SOpendio<60  (ImpiegaO)      

Verdi   60  

   TABRisultato  =righe  1-­‐  5  

TABRisultato  =righe  1-­‐  3  

TABRisultato  =riga  1  

1  2  3  4  5  

   TABRisultato  =righe  1-­‐3-­‐5  

Esempi  di  condizioni  riferite  alla  tabella  ImpiegaO    la    tab  risultato  è  formata  dalle  righe  indicate  

Scrivi  le  istruzioni  per  selezionare  gli  ImpiegaO:  A  -­‐  con  età  <30  B  -­‐  con  reddito  superiore  a  4.000.000  C  -­‐  con  età  minore  di  30  e  reddito  superiore  a  4ml  

PROVA TU…

σ  Età<30    (ImpiegaO)      

σ  sOpendio>4.000.000    (ImpiegaO)      

Soluzione  B  

Soluzione  C  

Soluzione  A  

AND  

Soluzioni    

COMBINAZIONE  di  SELEZIONE  e  PROIEZIONE  

S  =  σ  Indirizzo=“Torino”  (Studente)      

2)  PROIEZIONE    su  Cognome,  Nome  da  tabella  Selezionata    

R=Studente  

Voglio  selezionare    Cognome  e  Nome    

degli  studenO  di  Torino  

1)  SELEZIONE  per  Indirizzo=“Torino”  (  Studente)  

P  =  ∏  Cognome,  Nome  (σ  Indirizzo=“Torino”  (Studente)      NB:  è  necessario  operare  prima  la  selezione  e  poi  la  proiezione  e  non  viceversa!  PERCHE?...(  Immagina  cosa  accadrebbe…)  Prima  oCerrei  le  colonne  Cognome  –  Nome  dell’intera  tabella  STUDENTE  E  come  potrei  su  quelle  sole  colonne  selezionare  indirizzo=“Torino”?  

     Con  riferimento  al  seguente  schema:    PERSONE  (  Codicefiscale  ,  Cognome  ,Nome  ,  età  ,  Reddito  ,Ci0à  )    

si  esprima,  nell’algebra  relazionale,  ciascuna  delle  seguenO  interrogazioni:              A  –  Reddito  delle  Persone  abitanO  a  Milano        B  -­‐    Nome  e  Reddito  delle  persone  con  meno  di  30  anni        

Prova  tu  ….  

     Con  riferimento  al  seguente  schema:    PERSONE  (  Codicefiscale  ,  Cognome  ,Nome  ,  età  ,  Reddito  ,Ci0à  )    

si  esprima,  nell’algebra  relazionale,  ciascuna  delle  seguenO  interrogazioni:              A  –  Reddito  delle  Persone  abitanO  a  Milano        B  -­‐    Nome  e  Reddito  delle  persone  con  meno  di  30  anni        

Prova  tu  ….soluzione  

P  =  ∏  Reddito  (σ  ciQà=“Milano”  (PERSONE))      

P  =  ∏  Nome,Reddito  (σ  età<30  (PERSONE))      

GIUNZIONE  NATURALE  JOIN          R⋈S  

Osservazione  Il  join  NATURALE    è  definito  operatore  derivato  poiché  si  può  oQenere  componendo  due  operazioni  fondamentali:   prodoQo  cartesiano  accompagnata  dalla     selezione  sugli  aQribuO  in  comune  fra  le  due  relazioni  

 SERVE  PER  CORRELARE  INFORMAZIONI    DA  TABELLE  DIVERSE  

AVENTI  ALMENO  UN  ATTRIBUTO  IN  COMUNE  

GIUNZIONE      naturale  R⋈S      JOIN  Per  TABELLE  R  e  S  con  un  ATTRIBUTO  COMUNE  

Date  le  tabelle  CLIENTE  e  AGENTE  con  aQributo  comune  “CodAg”  vogliamo  oQenere  in  una  unica  tabella  ,per  ogni  cliente,  anche  le  informazioni  relaOve  agli  agenO:      Giunzione  di  Cliente  su  CodAg  e  di  Agente  su  CodAg  

GRADO  =  Grad(R)+Grad(S)-­‐1    la  colonna  comune  si  conta  una  sola  volta  CARD:  dipende  dai  valori  della  colonna  in    comune:  Se  non  ci  sono  valori  nulli=  =  card  maggiore  fra  R  ed  S.  Se  ci  sono  valori  nulli  alcune  t-­‐uple  non  si  possono  congiungere!  

ESEMPIO  DI  JOIN   R⋈S  

Studente  ⋈  Facolta  

JOIN  COMPLETO  R⋈S  

R⋈S  

alcune  tuple  non  sono  combinabili    (  tuple  dangling  )  e  vengono  "tagliate  fuori”.  

R⋈S  

E’  una  relazione  valida  MA  vuota  :  tuQe  le  tuple  sono  “tagliate  fuori  ,  appese  ,“  dangling  tuples”.  

estende,  con  valori  nulli,  le  t-­‐uple      tagliate  fuori  da  un  join  (interno)    

JOIN  ESTERNO  

SINISTRO  -­‐  LEFT:    manOene  tuQe  le  T-­‐UPLE  del  1  operando,    estendendole  con  valori  NULL    

DESTRO  -­‐RIGHT  manOene  tuQe  le  T-­‐UPLE  del  2  operando,    estendendole  con  valori  NULL    

COMPLETO-­‐  FULL    manOene  tuQe  le  T-­‐UPLE  estendendole  con  valori  NULL    

approfondimento  

Recommended