trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni proj capo (sel...

Post on 01-May-2015

216 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni

PROJCapo (SELStipendio>40 (Supervisione JOIN Impiegato=Matricola Impiegati))

Procedimento logico:• Creo una singola tabella in cui ogni tupla contiene

gli attributi Capo, Impiegato e Stipendio• Seleziono le tuple con stipendio > 40• Proietto il risultato sull’attributo Capo

(l’ordine delle ultime due operazioni può essere invertito)

Esercizi

Trovare nome e stipendio dei capi degli impiegati che guadagnano più di 40 milioni

Trovare gli impiegati che guadagnano più del proprio capo, mostrando matricola, nome e stipendio dell'impiegato e del capo

Trovare le matricole dei capi i cui impiegati guadagnano tutti più di 40 milioni

Algebra con valori nulli

Estensione degli operatori logici ad una logica a 3 valori

(VERO, FALSO, SCONOSCIUTO (U))

NOT

AND

V

U

F

OR

V

U

F

F

V

V

V

U

F

V

V

V

V

U

U

U

U

U

F

U

V

U

U

V

F

F

F

F

F

F

V

U

F

Viste (relazioni derivate)

Rappresentazioni diverse per gli stessi dati (schema esterno)

Relazioni di base: contenuto autonomo; fisicamente e originariamente contenute nella base di dati

Relazioni derivate:relazioni il cui contenuto è funzione del contenuto di altre relazioni (definito per mezzo di interrogazioni)

Viste

• Relazioni Virtuali (Viste)Relazioni definite mediante funzioni o espressioni del linguaggio di interrogazione, non realmente presenti nella base di dati ma utilizzabili come se lo fossero. Devono essere ricalcolate tutte le volte.

Viste materializzateRelazioni virtuali effettivamente inserite nella base di dati. Immediatamente disponibili ma critiche per il mantenimento dell’allineamento con le relazioni da cui derivano. Non sono supportate dai DBMS.

VisteVantaggi

Permettono di mostrare a un utente le sole componenti della base di dati che interessano

Espressioni molto complesse possono essere definite come viste

Sicurezza: è possibile definire diritti di accesso anche relativamente ad una vista (e quindi ad una particolare porzione della base di dati)

In caso di ristrutturazione della base di dati, le “vecchie” relazioni possono essere di nuovo ricavate mediante viste, consentendo l’uso di applicazioni che fanno riferimento al vecchio schema

Viste, esempio

una vista:

Supervisione =

PROJ Impiegato, Capo (Afferenza JOIN Direzione)

A Mori

B Bruni

Reparto CapoRossi A

Neri B

Bianchi B

Impiegato RepartoAfferenza Direzione

Interrogazioni sulle viste

Sono eseguite sostituendo alla vista la sua

definizione:

SELCapo='Leoni' (Supervisione)

viene eseguita come

SELCapo='Leoni'(

PROJ Impiegato, Capo (Afferenza JOIN Direzione))

Viste come strumento di programmazione

Trovare gli impiegati che hanno lo stesso capo di Rossi

Senza vista:

PROJ Impiegato (Afferenza JOIN Direzione) JOIN

REN ImpR,RepR Impiegato,Reparto (

SEL Impiegato='Rossi' (Afferenza JOIN Direzione))

Con la vista:

PROJ Impiegato (Supervisione) JOIN

REN ImpR,RepR Imp,Reparto (

SEL Impiegato='Rossi' (Supervisione))

Viste e aggiornamenti, attenzione

Vogliamo inserire, nella vista, il fatto che Lupi ha come capo Bruni; oppure che Belli ha come capo Falchi; come facciamo?

Afferenza Direzione

A MoriB Bruni

Reparto CapoRossi ANeri B

Impiegato Reparto

Neri BNeri B B BruniB BruniB BruniB BruniVerdi A B BruniB BruniB BruniB BruniC Bruni

RossiNeri

ImpiegatoRossiNeri

RossiNeri

Verdi

SupervisioneMoriBruni

CapoMoriBruniMoriBruniBruniBruniMori

Viste e aggiornamenti

"Aggiornare una vista": modificare le relazioni di base in modo che la vista, "ricalcolata”, rispecchi l'aggiornamento

L'aggiornamento sulle relazioni di base corrispondente a quello specificato sulla vista deve essere univoco

In generale però non è univoco!

Ben pochi aggiornamenti sono ammissibili sulle viste

Equivalenza di espressioni

Due espressioni sono equivalenti se:

E1R E2 se E1(r) = E2(r) per ogni istanza r di R (equivalenza dipendente dallo schema)

E1 E2 se E1R E2 per ogni schema R (equivalenza assoluta)

L’equivalenza è importante in quanto consente di scegliere, a parità di risultato, l’operazione meno costosa.

Equivalenze

Atomizzazione delle selezioni F1 F2

(E) F1 (F2 (E))

Idempotenza delle proiezioni X (E) X (XY (E))

Anticipazione della selezione rispetto al join F (E1

E

2) E

1 (F (E2

) )

Equivalenze

Anticipazione della proiezione rispetto al join:

X1Y2 (E1

E

2) E

1 Y2 (E2

)

(se gli attributi in X2 - Y2 non sono coinvolti nel join)

Allora (combinando con idempotenza delle proiezioni):

Y (E

1 F

E2) Y

(Y1 (E

1) F

Y2 (E

2) )

dove Y1 e Y2 sono gli attributi di X1 e X2 compresi in Y o

coinvolti nel join.

In pratica è possibile ignorare in ciascuna relazione gli

attributi non compresi in Y e non coinvolti nel join

Equivalenze

Inglobamento di una selezione in un prodotto cartesiano a formare un join: F (E1

E

2) E

1 F

E2

Tutti gli operatori binari eccetto la differenza godono delle proprietà associativa e commutativa.

Equivalenze

Distributività della selezione rispetto all’unione: F (E1

E

2) F (E1

)

F (E2

)

Distributività della selezione rispetto alla differenza: F (E1

- E

2) F (E1

) -

F (E2

)

Distributività della proiezione rispetto all’unione: X (E1

E

2) X (E1

)

X (E2

)

NB La proiezione NON è distributiva rispetto alla differenza

Equivalenze

Corrispondenze fra operatori insiemistici e selezioni complesse

F1 F2 (R) F1

(R) F2(R)

F1 F2 (R) F1

(R) F2(R) F1

(R) F2(R)

F1 ¬F2 (R) F1

(R) - F2(R)

Proprietà distributiva del join rispetto all’unione: E (E

1

E

2) (E

E

1) (E

E

2)

SQL

SQL (pronunciato anche come l’inglese sequel) è l’acronimo di Structured Query Language(linguaggio di interrogazione strutturato)

E’ un linguaggio completo che presenta anche le proprietà di:DDL (Data Definition Language)DML (Data Manipulation Language)

Con SQL è quindi possibile: definire schemi di basi di dati eseguire query modificare il contenuto della base di dati

SQL

1986 Prima standardizzazione1989 SQL-891992 SQL-2 (SQL-92): versione attualmente diffusa (e tuttora non completamente implementata)1998 SQL-3 (SQL-99): nuovo standard proposto con funzionalità avanzate (DB a oggetti, operazioni ricorsive ecc.)

3 implementazioni disponibili: Entry SQL Intermediate SQL Full SQL

Definizione dei dati

Esistono 6 domini elementari:

Character Bit Tipi numerici esatti Tipi numerici approssimati Data e ora Intervalli temporali

Domini

Characterrappresenta singoli caratteri o stringhe

character [varying] [(Lunghezza)]

[character set NomeFamigliaCaratteri]

character(20) stringa di lunghezza 20

character varying(100) stringa di lunghezza max. 100

character(20) character set Greekstringa di lunghezza 20 in caratteri greci

DominiBitrappresenta attributi o vettori di attributi che possono assumere solo valori 0 o 1. Utilizzato per implementare flag.

bit [varying] [(Lunghezza)]

Intervalli Temporaliinterval UnitàDiTempo1[(Precisione)]

[to UnitàDiTempo2[(Precisione)]]UnitàDiTempo1 e UnitàDiTempo2 specificano le unità di misura da usare dalla più lunga alla meno lunga

NB La definizione è valida nei 2 sottointervalli [year,month] e [day,second].

interval day(4) to second(6) rappresenta l’intervallo [0,10000) giorni e secondi con precisione al milionesimo di s.

Domini

Tipi numerici esattiValori interi o con parte decimale di lunghezza prefissatanumeric [(Precisione [,Scala])]decimal [(Precisione [,Scala])]integersmallint

Precisione specifica il numero di cifre significative

Scala quante cifre si rappresentano dopo la virgola

decimal(4) numeri da -9999 a 9999

numeric(6,3) numeri da -999.999 a 999.999

La precisione degli interi dipende dall’implementazione

Domini

Tipi numerici approssimatirappresentano valori reali approssimati

float [(Precisione)]double precisionreal

Precisione specifica il numero di cifre dedicato alla mantissa(la precisione dell’esponente dipende dall’implementazione)

real e double precision hanno precisione prestabilita, una doppia rispetto all’altra.

Domini

Data e oratipi utilizzati per rappresentare istanti di tempo

date

time [(Precisione)][with time zone]

timestamp [(Precisione)][with time zone]

Ciascun tipo è divisibile in campi.

date ammette come campi year, month e day

time i campi hour, minute, second

timestamp tutti i campi da year a second

I campi sono divisi da “:” 20:03:04+1:00

top related