Algebra Relazionale - Informatica per studenti · Algebra relazionale Le operazioni di Unione,...

6
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) e Dipendente (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}

Transcript of Algebra Relazionale - Informatica per studenti · Algebra relazionale Le operazioni di Unione,...

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