Trovare le matricole dei capi degli impiegati che guadagnano più di 40 milioni PROJCapo (SELStipendio>40 (Supervisione JOIN Impiegato=Matricola Impiegati))

Slides:



Advertisements
Presentazioni simili
Principale limitazione di AR e SQL-92: interrogazioni ricorsive
Advertisements

Calcolo Relazionale.
DB - Modello relazionale dei dati
Algebra e calcolo relazionale (parte 2)
SQL applicato a SQL Server
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Algebra relazionale Presentazione 12.1
1 SQL come linguaggio di definizione di dati Eugenio Di Sciascio.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Basi di Dati prof. A. Longheu
SQL.
SQL Structured Query Language
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
Corso di Informatica (Basi di Dati)
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
Rappresentazione dei numeri reali
11/10/2001Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 1 Viste (relazioni derivate) Rappresentazioni diverse per gli stessi dati (schema esterno)schema.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Basi di dati Università Degli Studi Parthenope di Napoli
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
Algoritmo di Query Optimization
Algebra Relazionale Linguaggio procedurale, cioè le operazioni vengono descritte attraverso la descrizione della sequenza di azioni da compiere per ottenere.
Equivalenza di espressioni
Proiezione Dati una relazione r(X) e un sottoinsieme Y di X, la proiezione di r su Y si indica con Y ( r ) o PROJ Y ( r ) ed è linsieme di tuple su Y ottenute.
Relazioni Relazione : concetto mutuato dalla definizione di relazione matematica della teoria degli insiemi, come sottoinsieme del prodotto cartesiano.
Normalizzazione Le forme normali certificano che la base di dati soddisfa criteri di qualità che mirano ad evitare le ridondanze e i conseguenti effetti.
SQL SQL (pronunciato anche come l’inglese sequel) è l’acronimo di Structured Query Language (linguaggio di interrogazione strutturato) E’ un linguaggio.
Join e proiezioni: problemi ImpiegatoReparto RossiA NeriB BianchiB RepartoCapo BMori CBruni NeriBMori ImpiegatoRepartoCapo BianchiBMori ImpiegatoReparto.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, Capitolo 3: ALGEBRA E CALCOLO RELAZIONALE 10/10/2002.
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
MODELLO LOGICO DEI DATI
Valutazione costi di una QUERY. A.1-Nome di tutti i fornitori che forniscono il prodotto P2 forpro fornitori CP=P2 Nome fornitori (CF, Nome, Citta) prodotti(CP,
Gerarchie Ricorsive Una gerarchia ricorsiva deriva dalla presenza di una ricorsione o ciclo (un anello nel caso più semplice) nello schema operazionale.
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
Basi di dati - Modelli e linguaggi di interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone Copyright © The McGraw-Hill.
Una convenzione e notazione alternativa per i join Nota: è sostanzialmente l'approccio usato in SQL Ignoriamo il join naturale (cioè non consideriamo implicitamente.
Esercizi su ALGEBRA RELAZIONALE
SQL (IV) Data Definition Language/ Data Manipulation Language.
I DBMS BASI DI DATI (DATABASE) Insieme organizzato di dati utilizzati
ALGEBRA RELAZIONALE. Algebra Relazionale2  Le basi di dati rappresentano le informazioni di interesse per applicazioni che gestiscono i dati  E’ importante.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Algebra relazionale (III). Esempi di Interrogazioni: 3 Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di Tutti gli impiegati?
IV D Mercurio DB Lezione 2
1 Basi di Dati S tructured Q uery L anguage Appunti Matteo Longhi.
SQL (III) Data Definition Language/ Data Manipulation Language.
Algebra relazionale. Accesso ai dati di un DB Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema.
Basi di dati e Relazioni Uno schema di relazione R(X) è costituito da un simbolo (nome della relazione) R e da una serie di attributi X={A 1, A 2, …, A.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
Join Proprietà Il join di r 1 e r 2 contiene un numero di tuple compreso fra zero e il prodotto di |r 1 | e |r 2 | se il join di r 1 e r 2 è completo allora.
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
Join Se ciascuna tupla di ciascun operando contribuisce ad almeno una tupla del risultato il join si dice completo. Se per alcune tuple non è verificata.
Rappresentazione dell'informazione
Vincoli interrelazionali
Conversione binario-ottale/esadecimale
Lezione 6 - SQL. Linguaggi per DB Per interagire con le basi di dati occorre un linguaggio Linguaggio SQL (Structured Query Language), linguaggio standardizzato.
Algebra relazionale (II). Join esterni Per combinare sempre le tuple di due relazioni, anche quando non ci sono corrispondenze tra i valori degli attributi.
Lezione 5 - SQL. Linguaggi per DB Per interagire con le basi di dati occorre un linguaggio Linguaggio SQL (Structured Query Language), linguaggio standardizzato.
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
L’Algebra Relazionale
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
Lezione 4 – Linguaggi ed Interazione. Linguaggi La comunicazione è essenziale tra gli esseri umani Se vogliamo chiedere informazioni stradali ad un passante.
Corso di Basi di Dati Il Linguaggio SQL
Join, una difficoltà Impiegato Reparto Rossi A Neri B Bianchi Reparto
Transcript della presentazione:

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))

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 materializzate Relazioni 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.

Viste Vantaggi 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 = Afferenza Impiegato Reparto Direzione Rossi A Reparto Capo Neri B A Mori Bianchi B B Bruni una vista: Supervisione = PROJ Impiegato, Capo (Afferenza JOIN 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 Afferenza Direzione A Mori B Bruni Reparto Capo Rossi Neri Impiegato Verdi C Supervisione Vogliamo inserire, nella vista, il fatto che Lupi ha come capo Bruni; oppure che Belli ha come capo Falchi; come facciamo?

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: E1R E2 se E1(r) = E2(r) per ogni istanza r di R (equivalenza dipendente dallo schema) E1 E2 se E1R 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  E2)  E1  (F (E2) )

Equivalenze Anticipazione della proiezione rispetto al join: X1Y2 (E1  E2)  E1  Y2 (E2) (se gli attributi in X2 - Y2 non sono coinvolti nel join) Allora (combinando con idempotenza delle proiezioni): Y (E1 F E2)  Y (Y1 (E1) F Y2 (E2) ) 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: sF (E1  E2)  E1  F E2 Tutti gli operatori binari eccetto la differenza godono delle proprietà associativa e commutativa.

Equivalenze Distributività della selezione rispetto all’unione: sF (E1  E2)  sF (E1)  sF (E2) Distributività della selezione rispetto alla differenza: sF (E1 - E2)  sF (E1) - sF (E2) Distributività della proiezione rispetto all’unione: PX (E1  E2)  PX (E1)  PX (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  (E1  E2)  (E  E1)  (E  E2)

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 standardizzazione 1989 SQL-89 1992 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 Character character [varying] [(Lunghezza)] rappresenta 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 Greek stringa di lunghezza 20 in caratteri greci

Domini Bit Intervalli Temporali bit [varying] [(Lunghezza)] rappresenta attributi o vettori di attributi che possono assumere solo valori 0 o 1. Utilizzato per implementare flag. bit [varying] [(Lunghezza)] Intervalli Temporali interval 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 esatti numeric [(Precisione [,Scala])] Valori interi o con parte decimale di lunghezza prefissata numeric [(Precisione [,Scala])] decimal [(Precisione [,Scala])] integer smallint 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 approssimati float [(Precisione)] rappresentano valori reali approssimati float [(Precisione)] double precision real 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 ora date time [(Precisione)][with time zone] tipi 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