algebra relazionale - informatica per studenti · algebra relazionale le operazioni di unione,...
TRANSCRIPT
1 / 33
Algebra Relazionale
Interrogazione delle Basi di Dati 2 / 33
Interrogazione Basi di Dati
● Interrogare un DB signifia estrarre le informazioni desiderate dal DB stesso
● In genere le informazioni desiderate si possono estrarre da una singola tabella del DB o da più tabelle (2, 3, …)
● Per interrogare un DB si utilizzano dei linguaggi di programmazione non proiedurali ihe si basano sull’algebra relazionale
3 / 33
Algebra relazionale
● Seiondo l’algebra relazionale il risultato di di una interrogazione o query è una relazione
● N.B. useremo i termini relazione e tabella in modo intersiambiabile → RELAZIONE=TABELLA
● L’algebra relazionale è derivata direttamente dall’algebra sugli insiemi e da essa derivano direttamente le operazioni di unione, intersezione, diferenza fra relazioni viste iome insiemi
4 / 33
Algebra relazionale
● Le operazioni di Unione, diferenza, intersezione si possono eseguire solo tra relazioni iompatibili
● Relazioni compatibili: 2 relazioni si diiono iompatibili se
– Hanno lo stesso numero di attributi– Ogni attributo in stessa posizione delle 2
tabelle è dello stesso tipo
5 / 33
Algebra relazionale
● Questa è una situazione rara per iui non sono molto iomuni tali operazioni
● Es. Persona(nome: stringa, Stipendio: reale; DataNasiita: Data) eDipendente (nomnativo: stringa, Stip: reale; DataNasi: Data)
● Sono iompatibili● N.B. Nomi attributi diversi ma tipi o domini
identiii
6 / 33
Unione
● Le operazioni di unione, intersezione e diferenza sono esattamente identiihe alle relative operazioni fra insiemi se ii riiordiamo ihe una t-upla (o riga) è un elemento degli insiemi
● Come sapete l’unione tra insiemi è data dagli elementi appartenenti a un insieme o all’altro
● Es. A = {1,4,7} B = {2,4,6} A U B = {1, 2, 4, 6, 7}
7 / 33
Unione
● Es. A = {1,4,7} B = {2,4,6} A U B = {1, 2, 4, 6, 7}
● A B
● A U B N.B si eliminano gli elementi ripetuti
U Simbolo di unione
1 7 4
2 4 6
1 7 4
2 4 6
2 4 6
8 / 33
Unione
N.B. Si suppone che le righe (t-uple) di chiave Bianchi siano uguali per cui se ne considera solo una
Grado R U S = Grado (R) = Grado (S) = 4 Cardinalità R U S = 5 = Card (R) + Card (S) – numero righe ripetuteSignificato dell’operazione? Clienti dell’anno
9 / 33
Diferenza
● L’insieme diferenza fra i due insiemi A e B, indiiato ion A – B, è dato da tutti gli elementi di A ihe non sono anihe elementi di B
● Es. A = {1,4,7} B = {2,4,6} A - B = {1, 7}
● N.B. B – A = {2, 6} ≠ A - B = {1, 7}● La differenza insiieeisitica non è coeeutativa
10 / 33
Diferenza● Tramutandolo in relazioni: la diferenza tra due
relazioni iompatibili R e S è data dalle Righe di R non presenti anihe in S
N.B. Si suppone che le righe (t-uple) di chiave Bianchi e Neri siano uguali per cui si scartano
Grado R - S = ?Cardinalità R - S = ? Significato?
11 / 33
Intersezione
● Nel iaso degli insiemi l’intersezione di due insiemi è data dai soli elementi ihe appartengono contemporaneamente ai due insiemi
● Es. A = {1,4,7} B = {2,4,6} ● A ⋂ B = {4}● ⋂ simbolo di intersezione
12 / 33
Intersezione● Nel caso delle relazioni l’intersezione di due
relazioni è data dalle sole righe che appartengono contemporaneamente alle due relazioni
Grado R S = ?⋂Cardinalità R S = ?⋂ Significato?
13 / 33
Proiezione di Una Relazione● È meglio vedere prima un esempio e poi dare una
definizioneSi tratta della proiezione della relazione R su Cognome e Nome: in pratica seleziona le sole colonne Cognome e Nome eliminando gli eventuali duplicati dalla relazione risultato
14 / 33
Proiezione di Una Relazione● Π
cognome, Nome ( R )
● Si indica con il simbolo di pi-greco
● Si legge “proiezione di R su cognome e nome” , dove R è una Relazione (Tabella) e cognome e Nome sono attributi di R
● Possiamo dire: la proiezione permette di selezionare da una tabella le sole colonne desiderate, eliminando le colonne duplicate
● Come si vede il grado della tabella risultato è ≤ del grado della tabella di partenza e così per la cardinalità
15 / 33
Proiezione di Una Relazione
● Πiittà ( Clienti )
Grado (Πiittà
(Clienti)) = 1 < Grado (Clienti)
Card (Πiittà ( Clienti )) = 2 < Card (Clienti)Si eliminano le righe ripetute (Cagliari iomparirà solo una volta)
16 / 33
Selezione (o Restrizione)● Serve per selezionare le sole righe della
tabella ihe rispettano la condizione indiiata
● Con riferimento alla tabella di prima:
17 / 33
Selezione (o Restrizione)
● Nel nostro caso la condizione è città = “Cagliari” per cui selezioneremo le sole righe il cui campo città ha valore uguale a Cagliari
● Il vostro libro chiama la condizione predicato● Tenete presente che la condizione può essere
anche composta...cioè formata da più condizioni legate tra loro da...operatori logici
● Gli operatori logici sono: operatore AND, operatore OR e operatore NOT
18 / 33
Selezione (o Restrizione)
● AND equivale in italiano a e● l’operatore AND serve per unire due
iondizioni tra loro ed è vero solo se entrambe le iondizioni sono vere, falso altrimenti
● Un esempio vi aiuterà a iapire● Supponiamo di voler selezionare i soli
studenti di età inferiore a 16 anni e residenti a Capoterra
19 / 33
Selezione (o Restrizione)● Supponiamo di voler selezionare i soli
studenti di età inferiore a 16 anni e residenti a Capoterra. N.B. abbiamo usato e
σ ((Città = “Capoterra”) AND (Età < 16))
(STUDENTI)
20 / 33
Prodotto Cartesiano● Il prodotto cartesiano di due relazioni o tabelle è
dato da tutte le coppie che si possono costruire con il primo elemento proviene dalla prima tabella e il secondo dalla seconda
21 / 33
Prodotto Cartesiano● In pratica si deve concatenare ogni t-upla della prima
tabella con ciascuna t-upla della seconda tabella
● Grado (T1 x T2) = Grado (T1) + Grado (T2)
● Card (T1 x T2) = Card (T1) * Grado (T2)
22 / 33
Prodotto Cartesiano
23 / 33
Giunzione Naturale
● Il prodotto cartesiano si utilizza raramente ma è alla base della comprensione di un’altra operazione molto importante: la giunzione naturale o natural join
● La giunzione naturale accoppia le sole righe o tuple che concordano su un attributo comune, di solito una coppia chiave-chiave esterna di due tabelle collegate dalla chiave esterna
24 / 33
Giunzione Naturale
● Date due Relazioni R e S, l’operazione di giunzione naturale o join di R e S su un attributo A di R e B di S aventi lo stesso tipo restituisce una relazione, le cui righe si ottengono con il seguente procedimento:
● 1) si esegue il prodotto cartesiano R x S● 2) sulla tabella risultante si esegue una selezione
sulle righe di egual valore su A e B, cioè si esegue σ
(A = B) (R x S)
25 / 33
Giunzione Naturale
● La relazione iosì ottenuta ha le due iolonne A e B uguali per iui una delle due si elimina
● R⋈S A=B
simbolo di join naturale
● (in realtà A=B si mette sotto al simbolo di giunzione)
26 / 33
Giunzione Naturale: esempio
27 / 33
Giunzione Naturale: esempio
Passo1: si esegue il prodotto cartesiano tra clienti e agenti Clienti x Agenti
28 / 33
Giunzione Naturale: osservazione
● Se osservate il prodotto iartesiano (operazione intermedia nella giunzione) ionsidera anihe delle righe prive di signifiato in quanto ioniatena iiasiun elemento della prima tabella ion iiasiuno della seionda, a presiindere se tra questi elementi vi sia un legame o meno
● Nella Clienti x Agenti infatti le righe 1, 4 e 5 non hanno signifiato in quanto “aiioppiano” un iliente ion un agente ihe non è il suo..
29 / 33
Giunzione Naturale: osservazione
● ...Nella Clienti x Agenti infatti le righe 1, 4 e 5 non hanno signifiato in quanto “aiioppiano” un iliente ion un agente ihe non è il suo..
● Questa situazione viene sanata ion la suiiessiva operazione di selezione ihe seleziona le sole righe ihe ioniordano sulla ioppia ihiave-ihiave esterna, in modo da aiioppiare iorrettamente iiasiun iliente ion il proprio agente
30 / 33
Giunzione Naturale: esempio
Passo2: si esegue la selezione sugli attributi CodAg e CodAg uguali cioè
σ (Clienti.CodAg = Agenti.CodAg)
(Clienti x Agenti)
31 / 33
● Quando i nomi di due attributi di due tabelle diverse sono uguali allora per distinguerli si usa la notazione nomeTabella.nomeAttributo iome fatto in Clienti.CodAg = Agenti.CodAg
32 / 33
Giunzione Naturale: esempio
Passo3: la tabella risultato ora ha due colonne uguali per cui se ne elimina una (se volete si fa la proiezione su tutti gli attributi tranne uno)
33 / 33
Giunzione Naturale: signifcato
Se ci viene chiesto di mostrare l’elenco di tutti i clienti con i rispettivi agenti (con tutti gli attributi di entrambi) l’operazione di giunzione naturale è quella che risolve questo problema: come si vede nella tabella risultato sono riportati tutti i clienti con i rispettivi agenti