4 SQL : Interrogazioni nidificate
|
|
|
- Achille Bertoni
- 10 anni fa
- Visualizzazioni
Transcript
1 Corso di Laurea in Ingegneria Gestionale SAPIENZA Università di Roma Esercitazioni del corso di Basi di Dati Prof.ssa Catarci e Prof.ssa Scannapieco Anno Accademico 2010/2011 Andrea Marrella Ultimo aggiornamento : 05/06/2011
2 Interrogazioni Nidificate In generale si è visto che l argomento della clausola where si basa su condizioni composte da predicati semplici (tramite gli operatori logici not, and e or), in cui ciascun predicato rappresenta un semplice confronto fra due valori SQL ammette anche l uso di predicati con una struttura più complessa, in cui si confronta un valore (ottenuto come risultato di un espressione valutata sulla singola riga) con il risultato dell esecuzione di un interrogazione SQL, definita direttamente nel predicato interno alla clausola where Si parla in questo caso di INTERROGAZIONI NIDIFICATE ATTENZIONE : Se in un predicato si confronta un attributo con il risultato di un interrogazione, sorge il problema di disomogeneità dei termini del confronto. Infatti, da una parte si ha il risultato di un interrogazione SQL (in generale un insieme di valori), mentre dall altra abbiamo il valore di un attributo per la particolare riga 2
3 Interrogazioni Nidificate Tale problema viene risolto da SQL tramite l utilizzo di alcune parole chiave (all, any, in, not in, exists, not exists) che estendono i normali operatori di confronto relazionale (=, <>, <, >, <=, >=) La parola chiave any specifica che la riga soddisfa la condizione se risulta vero il confronto (con l operatore specificato) tra il valore dell attributo per la riga ed almeno uno degli elementi restituiti dall interrogazione nidificata La parola chiave all specifica che la riga soddisfa la condizione solo se tutti gli elementi restituiti dall interrogazione nidificata rendono vero il confronto Ovviamente, la sintassi richiede la compatibilità di dominio tra l attributo restituito dall interrogazione nidificata e l attributo con cui avviene il confronto 3
4 La parola chiave any ESEMPIO : Estrarre gli impiegati che lavorano in dipartimenti situati a Firenze Impiegato Nome Cognome Dipart StipAnn Interrogazione Esterna SELECT * FROM Impiegato WHERE Dipart Interrogazione nidificata (o Interna) = any (SELECT Nome FROM Dipartimento WHERE Città = Firenze ) Dipartimento Nome Città la parola chiave in coincide con = any L utilizzo dell una o dell altra parola chiave porta allo stesso risultato L interrogazione seleziona le righe di Impiegato per cui il valore dell attributo Dipart è uguale ad almeno uno dei valori dell attributo Nome delle righe di Dipartimento 4
5 Interrogazioni nidificate VS JOIN ESEMPIO : Estrarre gli impiegati che lavorano in dipartimenti situati a Firenze Impiegato Dipartimento Nome Cognome Dipart StipAnn Nome Città SELECT * FROM Impiegato, Dipartimento D WHERE Dipart = D.Nome AND D.Città = Firenze equivale a SELECT * FROM Impiegato JOIN Dipartimento D ON Dipart = D.Nome WHERE D.Città = Firenze L interrogazione nidificata della slide precedente può essere quindi anche espressa mediante un JOIN tra le tabelle Impiegato e Dipartimento. La scelta dell una o dell altra formulazione è dettata dal grado di leggibilità della soluzione. 5
6 La parola chiave all ESEMPIO : Estrarre i dipartimenti in cui non lavorano persone di cognome Rossi Impiegato Dipartimento Nome Cognome Dipart StipAnn Nome Città SELECT Nome FROM Dipartimento WHERE Nome <> all (SELECT Dipart FROM Impiegato WHERE Cognome = Rossi ) la parola chiave not in coincide con <> all L utilizzo dell una o dell altra parola chiave porta allo stesso risultato L interrogazione nidificata seleziona i valori dell attributo Dipart di tutte le righe in cui il Cognome vale Rossi. La condizione è soddisfatta da quelle righe di Dipartimento per cui il valore dell attributo Nome non fa parte dei nomi prodotti dall interrogazione nidificata 6
7 Interpretazione semplice Un interpretazione molto semplice delle interrogazioni nidificate consiste nell assumere che l interrogazione nidificata (o interna) venga eseguita prima di analizzare le righe dell interrogazione esterna Si può ipotizzare che il risultato dell interrogazione nidificata venga salvato in una tabella temporanea; il controllo sulle righe dell interrogazione esterna può essere fatto accedendo direttamente al risultato temporaneo Questa interpretazione (detta semplice), in cui l interrogazione nidificata viene eseguita una sola volta, è corretta nel caso in cui le variabili di range definite nell interrogazione più esterna non vengano utilizzate nell ambito dell interrogazione più interna Consideriamo la di nuovo la precedente interrogazione... 7
8 Interpretazione semplice ESEMPIO : Estrarre i dipartimenti in cui non lavorano persone di cognome Rossi Impiegato Dipartimento Nome Cognome Dipart StipAnn Nome Città 8 SELECT Nome FROM Dipartimento WHERE Nome <> all (SELECT Dipart FROM Impiegato WHERE Cognome = Rossi ) 2. A questo punto, per ciascun dipartimento, si controlla che il valore dell attributo Nome non sia incluso nella tabella prodotta, utilizzando l operatore <> all 1. Il sistema può eseguire dapprima l interrogazione nidificata che estrae il valore dell attributo Dipart per tutti gli impiegati di cognome Rossi
9 Interrogazioni con correlazione Talvolta l interrogazione nidificata fa riferimento al contesto dell interrogazione esterna che la racchiude; tipicamente ciò accade tramite una variabile di range definita nell interrogazione più esterna ed usata nell ambito della interrogazione nidificata Si parla in questo caso di Interrogazioni nidificate con correlazione ESEMPIO : Estrarre gli impiegati che hanno degli omonimi (stesso nome e cognome, ma diverso codice fiscale) Impiegato Nome Cognome CodFiscale l operatore exists ammette come parametro 9 SELECT * FROM Impiegato I WHERE exists (SELECT * FROM Impiegato I1 WHERE I.Nome=I1.Nome and I.Cognome = I1.Cognome and I.CodFiscale <> I1.CodFiscale) un interrogazione nidificata e restituisce il valore VERO solo se l interrogazione nidificata fornisce un risultato non vuoto
10 Interrogazioni con correlazione Nel caso di interrogazioni nidificate con correlazione, l interpretazione semplice fornita precedentemente non è più valida In questo caso è necessario che l interrogazione nidificata venga valutata separatamente per ogni riga prodotta nella valutazione dell interrogazione esterna. La nuova interpretazione è la seguente: per ogni riga esaminata nell ambito dell interrogazione esterna, si deve valutare l interrogazione nidificata (che quindi, in questo caso, non può essere calcolata a priori, ma deve essere ricalcolata per ogni riga dell interrogazione esterna) tale processo può essere ripetuto un numero arbitrario di volte, pari al numero arbitrario di nidificazioni che possono essere utilizzate nell interrogazione ATTENZIONE : Per quanto riguarda la visibilità delle variabili di range, vale la restrizione che una variabile è usabile solo nell ambito dell interrogazione in cui è definita o nell ambito di un interrogazione nidificata (a qualsiasi livello) all interno di essa 10
11 Interrogazioni con correlazione Riprendiamo l esempio precedente... ESEMPIO : Estrarre gli impiegati che hanno degli omonimi (stesso nome e cognome, ma diverso codice fiscale) Impiegato Nome Cognome CodFiscale SELECT * FROM Impiegato I WHERE exists (SELECT * FROM Impiegato I1 WHERE I.Nome=I1.Nome and I.Cognome = I1.Cognome and I.CodFiscale <> I1.CodFiscale) Si può osservare che l interrogazione nidificata utilizza una variabile di range definita nell interrogazione più esterna. Perciò, in questo caso, per ogni riga esaminata nell ambito dell interrogazione esterna, si deve valutare l interrogazione nidificata. Nell esempio vengono considerate una ad una le righe della variabile I; per ciascuna di queste righe, viene eseguita l interrogazione nidificata che restituisce o meno l insieme vuoto a seconda che vi siano o meno degli omonimi della persona
12 Interrogazioni Nidificate Vediamo un esempio con un istanza della tabella Impiegato... SELECT * FROM Impiegato I WHERE exists (SELECT * FROM Impiegato I1 WHERE I.Nome=I1.Nome and I.Cognome = I1.Cognome and I.CodFiscale <> I1.CodFiscale) I Nome Cognome CodFiscale Mario Rossi A012 Carlo Bianchi B013 Carlo Bianchi C014 I1 1. Si considera la prima riga di I e si verifica se in I1 esiste una tupla con stessi valori di Nome, Cognome e diverso valore di Codice Fiscale Tale tupla non esiste, perciò l interrogazione nidificata restituisce una relazione vuota e exists restituisce il valore FALSO Nome Cognome CodFiscale Mario Rossi A012 Carlo Bianchi B013 Carlo Bianchi C014 12
13 Interrogazioni Nidificate SELECT * FROM Impiegato I WHERE exists (SELECT * FROM Impiegato I1 WHERE I.Nome=I1.Nome and I.Cognome = I1.Cognome and I.CodFiscale <> I1.CodFiscale) 2. Si considera la seconda riga di I e si verifica se in I1 esiste una tupla con stessi valori di Nome, Cognome e diverso valore di Codice Fiscale Tale tupla esiste, perciò l interrogazione nidificata restituisce una relazione non vuota e exists restituisce il valore TRUE I Nome Cognome CodFiscale I1 La tupla < Carlo, Bianchi, B013 > farà parte del risultato dell interrogazione esterna Nome Cognome CodFiscale Mario Rossi A012 Mario Rossi A012 Carlo Bianchi B013 Carlo Bianchi B013 Carlo Bianchi C014 Carlo Bianchi C014 13
14 Interrogazioni Nidificate SELECT * FROM Impiegato I WHERE exists (SELECT * FROM Impiegato I1 WHERE I.Nome=I1.Nome and I.Cognome = I1.Cognome and I.CodFiscale <> I1.CodFiscale) 3. Si considera la terza riga di I e si verifica se in I1 esiste una tupla con stessi valori di Nome, Cognome e diverso valore di Codice Fiscale Tale tupla esiste, perciò l interrogazione nidificata restituisce una relazione non vuota e exists restituisce il valore TRUE I Nome Cognome CodFiscale I1 La tupla < Carlo, Bianchi, C014 > farà parte del risultato dell interrogazione esterna Nome Cognome CodFiscale Mario Rossi A012 Mario Rossi A012 Carlo Bianchi B013 Carlo Bianchi B013 Carlo Bianchi C014 Carlo Bianchi C014 14
15 Interrogazioni Nidificate ESEMPIO : Estrarre gli impiegati che hanno degli omonimi (stesso nome e cognome, ma diverso codice fiscale) SELECT * FROM Impiegato I WHERE exists (SELECT * FROM Impiegato I1 WHERE I.Nome=I1.Nome and I.Cognome = I1.Cognome and I.CodFiscale <> I1.CodFiscale) Impiegato Nome Cognome CodFiscale Mario Rossi A012 Carlo Bianchi B013 Carlo Bianchi C014 Risultato finale dell interrogazione Nome Cognome CodFiscale Carlo Bianchi B013 Carlo Bianchi C014 15
16 Interrogazioni Nidificate Esempio 1 ESEMPIO : Estrarre gli impiegati che non hanno degli omonimi Impiegato Nome Cognome CodFiscale SELECT * FROM Impiegato I WHERE not exists (SELECT * FROM Impiegato I1 WHERE I.Nome=I1.Nome and I.Cognome = I1.Cognome and I.CodFiscale <> I1.CodFiscale) 16
17 Interrogazioni Nidificate Esempio 2 ESEMPIO : Estrarre i nomi degli impiegati che sono anche cognomi Impiegato Nome Cognome CodFiscale SELECT Nome FROM Impiegato INTERSECT SELECT Cognome FROM Impiegato L Intersezione insiemistica non è supportata nativamente da MySQL...ma è facilmente ottenibile tramite interrogazioni nidificate o, in alternativa SELECT Nome FROM Impiegato WHERE Nome in (SELECT Cognome FROM Impiegato) 17
18 Interrogazioni Nidificate Esempio 3 ESEMPIO : Estrarre i nomi degli impiegati che non sono cognomi per qualche impiegato Impiegato Nome Cognome CodFiscale SELECT Nome FROM Impiegato EXCEPT SELECT Cognome FROM Impiegato o, in alternativa La Differenza insiemistica non è supportata nativamente da MySQL...ma è facilmente ottenibile tramite interrogazioni nidificate SELECT Nome FROM Impiegato WHERE Nome not in (SELECT Cognome FROM Impiegato) 18
19 Interrogazioni Nidificate Esempio 4 ATTENZIONE = Questa interrogazione è corretta? SELECT Dipart FROM Impiegato WHERE Dipart in (SELECT Nome FROM Dipartimento D1 WHERE Nome = Produzione ) or Dipart in (SELECT Nome FROM Dipartimento D2 WHERE D1.Città = D2.Città) NO se un interrogazione possiede sotto-interrogazioni annidate allo stesso livello, le variabili introdotte nella clausola FROM di una interrogazione non potranno essere usate nell ambito di un altra interrogazione allo stesso livello (mentre potranno essere usate in interrogazioni situate a livelli inferiori) 19
20 Interrogazioni Nidificate Esempio 5 ESEMPIO : Date le relazioni Cantante ed Autore in figura, estrarre i cantautori puri, ovvero i cantanti che hanno eseguito solo canzoni di cui erano anche autori Cantante Nome Canzone SELECT Nome FROM Cantante WHERE Nome not in (SELECT Nome FROM Cantante C WHERE Nome not in (SELECT Nome FROM Autore La seconda interrogazione nidificata presenta invece un legame con l interrogazione esterna (Autore.Canzone = C.Canzone) 20 Autore Nome Canzone La prima interrogazione nidificata non ha alcun legame con l interrogazione esterna e quindi può essere eseguita in modo del tutto indipendente WHERE Autore.Canzone = C.Canzone))
21 Interrogazioni Nidificate Esempio 5 L interrogazione relativa all esempio precedente avviene seguendo queste fasi 1. L interrogazione (SELECT Nome FROM Cantante C...) legge tutte le righe della tabella Cantante 2. Per ognuna delle righe di C viene valutata l interrogazione più interna (SELECT Nome FROM Autore...), che restituisce i nomi degli autori della canzone il cui titolo compare nella riga di C che viene considerata. Se il nome del cantante non compare tra gli autori (quindi non è un cantautore puro), allora il nome viene selezionato 3. Dopo che l interrogazione nidificata ha terminato di analizzare le righe di C (costruendo la tabella contenente i nomi dei cantanti che non sono cantautori puri), viene eseguita l interrogazione più esterna, la quale restituirà tutti i nomi di cantanti che non compaiono nella tabella ottenuta come risultato dell interrogazione nidificata 21
22 Interrogazioni Nidificate Esempio 5bis ESEMPIO (con soluzione alternativa) : Date le relazioni Cantante ed Autore in figura, estrarre i cantautori puri, ovvero i cantanti che hanno eseguito solo canzoni di cui erano anche autori Cantante Autore Nome Canzone Nome Canzone SELECT Nome FROM Cantante EXCEPT SELECT Nome FROM Cantante C WHERE Nome not in (SELECT Nome FROM Autore WHERE Autore.Canzone = C.Canzone) Espressione alternativa ottenuta utilizzando l operatore insiemistico EXCEPT 22
23 Interrogazioni Nidificate Esempio 6 Impiegato Nome Cognome Dipart StipAnn Mario Rossi Amministrazione 45 Carlo Bianchi Produzione 36 Giuseppe Verdi Amministrazione 40 Franco Neri Distribuzione 45 Carlo Rossi Direzione 80 Lorenzo Gialli Direzione 73 Paola Rosati Amministrazione 40 Marco Franco Produzione 46 ESERCIZIO :Estrarre i nomi ed i cognomi degli Impiegati che lavorano in Dipartimenti situati a Torino Dipartimento Nome Amministrazione Produzione Distribuzione Direzione Ricerca Città Milano Torino Roma Milano Milano SELECT Nome, Cognome FROM Impiegato WHERE Dipart = any (SELECT Nome FROM Dipartimento WHERE Città = Torino ) Nome Cognome Carlo Bianchi Marco Franco
24 Interrogazioni Nidificate Esempio 7 Impiegato Nome Cognome Dipart StipAnn Mario Rossi Amministrazione 45 Carlo Bianchi Produzione 36 Giuseppe Verdi Amministrazione 40 Franco Neri Distribuzione 45 Carlo Rossi Direzione 80 Lorenzo Gialli Direzione 73 Paola Rosati Amministrazione 40 Marco Franco Produzione 46 Dipartimento Nome Città Amministrazione Milano Produzione Torino Distribuzione Roma Direzione Milano Ricerca Milano ESERCIZIO :Estrarre il dipartimento dell impiegato che guadagna lo stipendio massimo (usando l operatore aggregato max) SELECT Dipart FROM Impiegato WHERE StipAnn = (SELECT max(stipann) FROM Impiegato) Dipart Direzione
25 Interrogazioni Nidificate Esempio 8 Impiegato Dipartimento Nome Cognome Dipart StipAnn Nome Città Mario Rossi Amministrazione 45 Amministrazione Milano Carlo Bianchi Produzione 36 Produzione Torino Giuseppe Verdi Amministrazione 40 Distribuzione Roma Franco Neri Distribuzione 45 Direzione Milano Carlo Rossi Direzione 80 Ricerca Milano Lorenzo Gialli Direzione 73 Paola Rosati Amministrazione 40 Marco Franco Produzione 46 ESERCIZIO :Estrarre il dipartimento dell impiegato che guadagna lo stipendio massimo (senza l operatore max) SELECT Dipart FROM Impiegato WHERE StipAnn >= all (SELECT StipAnn 25 FROM Impiegato) Dipart Direzione
26 Interrogazioni Nidificate Esempio 9 ESERCIZIO :Trovare il reddito complessivo dei figli di Gianni e Maria Persone Nome Reddito Eta Sesso Genitori Figlio Genitore SELECT sum(p.reddito) AS redditocompl FROM Persone P WHERE Nome =any( SELECT Figlio FROM Genitori WHERE Genitore='Gianni') AND Nome =any(select Figlio FROM Genitori WHERE Genitore='Maria'); RedditoCompl 25 26
27 Esercizio Negozi ID Nome Città Prodotti Codice Nome Marca Listino Negozi Prodotto Prezzo ESERCIZIO :Trovare, per ciascun prodotto, la città in cui viene venduto al prezzo più basso SELECT distinct P.Nome, N.Citta FROM Negozi N, Listino L, Prodotti P WHERE N.ID=L.Negozi AND P.Codice=L.Prodotto AND prezzo <= ALL ( SELECT prezzo FROM Prodotti P2, Listino L2 WHERE P2.Nome=P.Nome AND L2.Prodotto = P2.Codice )
28 Esercizio Proposto ESERCIZIO : Siano date le seguenti relazioni Fornitori(fid:integer, fnome:string, indirizzo:string) Pezzi(pid:integer, pnome:string, colore:string) Catalogo(fid:integer, pid:integer, costo:real) Per le relazioni sussistono i seguenti vincoli di integrità: Fornitori.fid è CHIAVE PRIMARIA di Fornitori Pezzi.pid è CHIAVE PRIMARIA di Pezzi Catalogo.fid e Catalogo.pid sono CHIAVE PRIMARIA di Catalogo Catalogo.fid è CHIAVE ESTERNA verso Fornitori.fid Catalogo.pid è CHIAVE ESTERNA verso Pezzi.pid 28
29 Esercizio Proposto ESERCIZIO : Siano date le seguenti relazioni Fornitori(fid:string, fnome:string, indirizzo:string) Pezzi(pid:string, pnome:string, colore:string) Catalogo(fid:string, pid:string, costo:real) ESERCIZIO : Si calcolino le seguenti interrogazioni in SQL 1. Trovare i pnome dei pezzi per cui esiste un qualche fornitore 2. Trovare gli fnome dei fornitori che forniscono ogni pezzo 3. Trovare gli fnome dei fornitori che forniscono tutti i pezzi rossi 4. Trovare i pnome dei pezzi forniti dalla Acme e da nessun altro 5. Trovare i fid dei fornitori che ricaricano su alcuni pezzi più del costo medio di quel pezzo 6. Per ciascun pezzo, trovare gli fnome dei fornitori che ricaricano di più su quel pezzo 29
30 Esercizio Proposto 7. Trovare i fid dei fornitori che forniscono solo pezzi rossi 8. Trovare i fid dei fornitori che forniscono un pezzo rosso e un pezzo verde 9. Trovare i fid dei fornitori che forniscono un pezzo rosso o uno verde 10. Trovare i pid dei pezzi forniti da almeno due fornitori 30
31 Esercizio Proposto 1\10 Fornitori Pezzi Catalogo fid fnome indirizzo pid pnome colore fid pid costo 1) Trovare i pnome dei pezzi per cui esiste un qualche fornitore SELECT distinct P.pnome FROM Pezzi P, Catalogo C WHERE P.pid = C.pid Si effettua un equi-join tra il pid di Catalogo e il pid di Pezzi. Si ottengono così solo quei pezzi che hanno un fornitore. Questo perché nella relazione Pezzi potrebbero esserci dei pezzi che non sono forniti da nessun fornitore 31
32 Esercizio Proposto 2\10 Fornitori Pezzi Catalogo fid fnome indirizzo pid pnome colore fid pid costo 2) Trovare gli fnome dei fornitori che forniscono ogni pezzo SELECT distinct F.fnome FROM Fornitori F WHERE NOT EXISTS ( (SELECT P.pid FROM Pezzi P) A EXCEPT B - Viene restituita una relazione che contiene tutti i pid dei pezzi non forniti dal fornitore i- esimo. Se tale relazione è vuota, significa che il fornitore i-esimo fornisce tutti i pezzi. In quest ultimo caso, NOT EXISTS restituisce TRUE e l fnome dell i-esimo fornitore considerato apparirà nella relazione risultato 32 EXCEPT (SELECT C.Pid FROM Catalogo C WHERE C.fid = F.fid) ) L interrogazione interna va valutata e ri-calcolata per ogni tupla di Fornitori definita nell interrogazione esterna A. (SELECT P.Pid FROM Pezzi P) - Calcola i pid di tutti i pezzi B. (SELECT C.Pid FROM Catalogo C WHERE C.fid=F.fid) -Calcola i pid dei pezzi venduti dal fornitore i-esimo (che stiamo considerando attraverso la variabile di range F definita nell interrogazione esterna)
33 Esercizio Proposto 3\10 Fornitori Pezzi Catalogo fid fnome indirizzo pid pnome colore fid pid costo 3) Trovare gli fnome dei fornitori che forniscono tutti i pezzi rossi SELECT distinct F.fnome FROM Fornitori F WHERE NOT EXISTS ( (SELECT * FROM Pezzi P WHERE P.colore = Rosso ) EXCEPT (SELECT P1.Pid, P1.colore, P1.pnome FROM Catalogo C, Pezzi P1 WHERE C.fid = F.fid and C.pid = P1.pid) ) A EXCEPT B - Viene restituita una relazione che contiene tutti quei pezzi di colore rosso non forniti dal fornitore i-esimo. Se tale relazione è vuota, significa che il fornitore i-esimo fornisce tutti i pezzi esistenti di colore rosso (ciò non vuol dire che il fornitore i-esimo non possa fornire pezzi anche di altro colore...l importante è che fornisca almeno tutti quelli di colore rosso) In quest ultimo caso, NOT EXISTS restituisce TRUE e l fnome dell iesimo fornitore considerato apparirà 33 nella relazione risultato L interrogazione interna va valutata e ricalcolata per ogni tupla di Fornitori definita nell interrogazione esterna A. (SELECT * FROM Pezzi P) - Calcola tutti i pezzi di colore rosso B. (SELECT P1.Pid, P1.colore, P1.pnome FROM Catalogo C, Pezzi P1 WHERE C.fid=F.fid and C.pid = P1.pid) - Calcola i pezzi venduti dal fornitore i-esimo (che stiamo considerando attraverso la variabile di range F definita nell interrogazione esterna)
34 Esercizio Proposto 4\10 Fornitori Pezzi Catalogo fid fnome indirizzo pid pnome colore fid pid costo 4) Trovare i pezzi forniti dalla ACME e da nessun altra 34 SELECT P.pid, P.pnome, P.colore FROM Pezzi P, Catalogo C, Fornitori F WHERE P.pid=C.pid and C.fid=F.fid and F.fnome = ACME and NOT EXISTS (SELECT * FROM Catalogo C1, Fornitori F1 WHERE P.pid = C1.pid and C1.fid=F1.fid and F1.fnome <> ACME ) Se la relazione restituita dall interrogazione interna è vuota, NOT EXISTS restituisce TRUE. A questo punto si verifica che il pezzo i- esimo sia almeno fornito dalla Acme...in quest ultimo caso, il pezzo considerato apparirà nella relazione risultato L interrogazione interna calcola tutti quei fornitori (il cui nome è diverso da Acme ) che forniscono il pezzo i-esimo (che stiamo considerando attraverso la variabile di range P definita nell interrogazione esterna). Se tale relazione è vuota, significa che il pezzo i-esimo non è fornito da alcun fornitore il cui nome è diverso da Acme
35 Esercizio Proposto 5\10 Fornitori Pezzi Catalogo fid fnome indirizzo pid pnome colore fid pid costo 5) Trovare i fid dei fornitori che ricaricano su alcuni pezzi più del costo medio di quel pezzo SELECT distinct C.fid FROM Catalogo C WHERE C.costo > (SELECT AVG(C1.costo) FROM Catalogo C1 WHERE C1.pid = C.pid ) L interrogazione interna calcola la media del prezzo di vendita del pezzo i-esimo considerato (C.pid). L interrogazione esterna, per ciascun pezzo fornito in catalogo, verifica che il prezzo del pezzo considerato sia superiore rispetto al prezzo medio di vendita di quel pezzo (calcolato con l interrogazione interna). In quest ultimo caso, l interrogazione esterna restituisce il fid del fornitore che vende il pezzo i-esimo ad un prezzo superiore alla media 35
36 Esercizio Proposto 6\10 Fornitori Pezzi Catalogo fid fnome indirizzo pid pnome colore fid pid costo 6) Per ciascun pezzo, trovare gli fnome dei fornitori che ricaricano di più su quel pezzo SELECT C.pid, F.fnome FROM Fornitori F, Catalogo C WHERE C.fid = F.fid and C.costo = (SELECT MAX(C1.costo) FROM Catalogo C1 WHERE C1.pid = C.pid ) L interrogazione interna calcola il massimo prezzo di vendita del pezzo i- esimo considerato (C.pid). L interrogazione esterna, per ciascun pezzo fornito in catalogo, verifica che il prezzo del pezzo i-esimo considerato sia uguale al massimo prezzo di vendita di quel pezzo (calcolato con l interrogazione interna). In quest ultimo caso, l interrogazione esterna restituisce il nome del fornitore (e il pid del pezzo-iesimo) che vende il pezzo i-esimo al prezzo massimo 36
37 Esercizio Proposto 7\10 Fornitori Pezzi Catalogo fid fnome indirizzo pid pnome colore fid pid costo 7) Trovare i fid dei fornitori che forniscono solo pezzi rossi SELECT F.fid FROM Fornitori F WHERE NOT EXISTS (SELECT * FROM Pezzi P, Catalogo C1 WHERE C1.fid = F.fid and C1.pid = P.pid and P.colore <> Rosso ) and EXISTS (SELECT * FROM Catalogo C1 WHERE C1.fid = F.fid) La prima interrogazione interna verifica che l i-esimo fornitore venda pezzi non rossi La seconda interrogazione esterna verifica che l i-esimo fornitore venda qualcosa (per evitare che eventuali fornitori che non vendono niente siano inclusi nel risultato) L interrogazione esterna inserisce il nome dell i-esimo fornitore nella relazione risultato se la prima interrogazione interna restituisce una relazione vuota e la seconda interrogazione esterna restituisce una relazione non vuota 37
38 Esercizio Proposto 8\10 Fornitori Pezzi Catalogo fid fnome indirizzo pid pnome colore fid pid costo 8) Trovare i fid dei fornitori che forniscono un pezzo rosso e un pezzo verde SELECT distinct C.fid FROM Catalogo C, Pezzi P WHERE C.pid = P.pid and P.colore = rosso INTERSECT SELECT distinct C1.fid FROM Catalogo C1, Pezzi P1 WHERE C1.pid = P1.pid and P1.colore = verde La prima interrogazione calcola i fid dei fornitori (senza duplicati) che forniscono almeno un pezzo rosso La seconda interrogazione calcola i fid dei fornitori (senza duplicati) che forniscono almeno un pezzo verde L INTERSEZIONE restituisce i fid dei fornitori che forniscono almeno un pezzo rosso e un pezzo verde 38
39 Esercizio Proposto 9\10 Fornitori Pezzi Catalogo fid fnome indirizzo pid pnome colore fid pid costo 9) Trovare i fid dei fornitori che forniscono un pezzo rosso o uno verde SELECT distinct C.fid FROM Catalogo C, Pezzi P WHERE C.pid = P.pid and P.colore = rosso UNION SELECT distinct C1.fid FROM Catalogo C1, Pezzi P1 WHERE C1.pid = P1.pid and P1.colore = verde La prima interrogazione calcola i fid dei fornitori (senza duplicati) che forniscono almeno un pezzo rosso La seconda interrogazione calcola i fid dei fornitori (senza duplicati) che forniscono almeno un pezzo verde L UNIONE restituisce i fid dei fornitori che forniscono almeno un pezzo rosso oppure almeno un pezzo verde 39
40 Esercizio Proposto 10\10 Fornitori Pezzi Catalogo fid fnome indirizzo pid pnome colore fid pid costo 10) Trovare i pid dei pezzi forniti da almeno due fornitori SELECT distinct C.pid FROM Catalogo C WHERE EXISTS (SELECT distinct C1.pid FROM Catalogo C1 WHERE C1.pid = C.pid and C1.fid <> C.fid) L i-esimo pezzo compare nel risultato dell interrogazione interna se esiste un altro fornitore che vende quel pezzo 40
Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26
Uso delle variabili di alias SQL slide aggiuntive Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione educazione Non solo per disambiguare la notazione
SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma
SQL: Structured Query Language 1 SQL:Componenti Principali Data Manipulation Language (DML): interrogazioni, inserimenti, cancellazioni, modifiche Data Definition Language (DDL): creazione, cancellazione
Il linguaggio SQL: query innestate
Il linguaggio SQL: query innestate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLc-subquery.pdf Sistemi Informativi L-A DB di riferimento
Interrogazioni nidificate, commenti
Interrogazioni nidificate, commenti La forma nidificata è meno dichiarativa, ma talvolta più leggibile (richiede meno variabili) La forma piana e quella nidificata possono essere combinate Le sottointerrogazioni
Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a
Join in SQL (primo modo) Informatica Lezione 7 Laurea magistrale in Psicologia Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 09- Per formulare interrogazioni che coinvolgono
CONCETTO DI ANNIDAMENTO
LEZIONE14 SQL ANNIDAMENTI PAG. 1 / 5 PROF. ANDREA ZOCCHEDDU LEZIONE14 SQL ANNIDAMENTI CONCETTO DI ANNIDAMENTO LINGUAGGIO SQL QUERY ANNIDATE Per annidamento si intende la possibilità che, all interno di
SQL seconda parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2012/13
SQL seconda parte D O C E N T E P R O F. A L B E R T O B E L U S S I Anno accademico 2012/13 Interrogazioni nidificate Interrogazioni nidificate 2 Si ottiene una interrogazione nidificata quando un interrogazione
Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi
Query (Interrogazioni) Ultima modifica: 5/4/2012 SQL Materiale aggiuntivo per il corso di laurea in Lingue e Culture per il Turismo classe L-15! È necessario un modo per interrogare le basi di dati, cioè
Gli operatori relazionali
Gli operatori relazionali Agiscono su una o più relazioni per ottenere una nuova relazione (servono a realizzare le interrogazioni sul database) Ci sono tre operazioni fondamentali per i database relazionali:
Corso di Basi di Dati A.A. 2015/2016
Corso di Laurea in Ingegneria Gestionale Sapienza Università di Roma Corso di Basi di Dati A.A. 2015/2016 Tiziana Catarci, Andrea Marrella Ultimo aggiornamento : 22/02/2016 Interrogazioni nidificate In
Operazioni sui database
Operazioni sui database Le operazioni nel modello relazionale sono essenzialmente di due tipi: Operazioni di modifica della base di dati (update) Interrogazioni della base di dati per il recupero delle
Il linguaggio SQL: viste e tabelle derivate
Il linguaggio SQL: viste e tabelle derivate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLd-viste.pdf Sistemi Informativi L-A DB di riferimento
Vincoli di integrità
Vincoli di integrità Non tutte le istanze di basi di dati sintatticamente corrette rappresentano informazioni plausibili per l applicazione di interesse Studenti Matricola Nome Nascita 276545 Rossi 23-04-72?
Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf
Il linguaggio SQL: viste e tabelle derivate Versione elettronica: SQLd-viste.pdf DB di riferimento per gli esempi Imp Sedi CodImp Nome Sede Ruolo Stipendio Sede Responsabile Citta E001 Rossi S01 Analista
Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL
Basi di dati Il Linguaggio SQL Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,
Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL
Informatica Basi di dati parte 4 SQL Lezione 13 Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 2012 2013 1 Interrogazioni in
Esercitazione su SQL
Esercizio 1. Esercitazione su SQL Si consideri la base di dati relazionale composta dalle seguenti relazioni: impiegato Matricola Cognome Stipendio Dipartimento 101 Sili 60 NO 102 Rossi 40 NO 103 Neri
Istruzioni DML di SQL
Istruzioni DML di SQL Pag. 99 par.4 1 Sintassi: Costrutto: INSERT INTO (Inserimento di dati in tabelle) INSERT INTO [(, ,, )] VALUES (, ,
SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12
SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I Anno accademico 2011/12 DEFINIZIONE Il concetto di vista 2 È una relazione derivata. Si specifica l espressione che genera il suo contenuto.
(anno accademico 2008-09)
Calcolo relazionale Prof Alberto Belussi Prof. Alberto Belussi (anno accademico 2008-09) Calcolo relazionale E un linguaggio di interrogazione o e dichiarativo: at specifica le proprietà del risultato
ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7
ESEMPI DI QUERY SQL Dati di esempio... 2 Query su una sola tabella... 2 Esempio 1 (Ordinamento)... 2 Esempio 2 (Scelta di alcune colonne)... 3 Esempio 3 (Condizioni sui dati)... 3 Esempio 4 (Condizioni
Basi di dati. L Algebra Relazionale. K. Donno - L Algebra Relazionale
Basi di dati L Algebra Relazionale Introduzione all Algebra Relazionale Una volta definito lo schema logico di un database, partendo da un Diagramma E-R, e dopo aver inserito le tabelle nel database, eventualmente
SISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione
SISTEMI INFORMATIVI AVANZATI -2010/2011 1 Introduzione In queste dispense, dopo aver riportato una sintesi del concetto di Dipendenza Funzionale e di Normalizzazione estratti dal libro Progetto di Basi
SQL/OLAP. Estensioni OLAP in SQL
SQL/OLAP Estensioni OLAP in SQL 1 Definizione e calcolo delle misure Definire una misura significa specificare gli operatori di aggregazione rispetto a tutte le dimensioni del fatto Ipotesi: per ogni misura,
Ricorsione in SQL-99. Introduzione. Idea di base
Ricorsione in SQL-99 Introduzione In SQL2 non è possibile definire interrogazioni che facciano uso della ricorsione Esempio Voli(lineaAerea, da, a, parte, arriva) non è possibile esprimere l interrogazione
INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione
INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università degli Studi di Salerno : (1) Interrogazioni semplici INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione
Cardinalità e identificatori. Informatica. Generalizzazioni. Generalizzazioni. Generalizzazioni. Generalizzazioni
e identificatori Codice (0,1) (1,1) Dirige Informatica Lezione 8 Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 2012 2013 1 Cognome
Progettazione di Basi di Dati
Progettazione di Basi di Dati Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan Entità-Relazione Progettazione Logica 2 E il modo attraverso il quale i dati sono rappresentati : fa riferimento al modello
Introduzione all Algebra Relazionale
Basi di dati L Algebra Relazionale Introduzione all Algebra Relazionale Una volta definito lo schema logico di un database, partendo da un Diagramma E-R, e dopo aver inserito le tabelle nel database, eventualmente
Capitolo 13. Interrogare una base di dati
Capitolo 13 Interrogare una base di dati Il database fisico La ridondanza è una cosa molto, molto, molto brutta Non si devono mai replicare informazioni scrivendole in più posti diversi nel database Per
Basi di dati 9 febbraio 2010 Compito A
Basi di dati 9 febbraio 2010 Compito A Domanda 0 (5%) Leggere e rispettare le seguenti regole: Scrivere nome, cognome, matricola (se nota), corso di studio e lettera del compito (ad esempio, A) sui fogli
Informatica (Basi di Dati)
Corso di Laurea in Biotecnologie Informatica (Basi di Dati) Modello Entità-Relazione Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi, Torlone - Basi di Dati Lucidi del Corso di Basi di Dati 1, Prof.
Basi di Dati. Esercitazione SQL. Ing. Paolo Cappellari
Basi di Dati Esercitazione SQL Ing. Paolo Cappellari Esercitazione Considerando la seguente base di dati: Fornitori (CodiceFornitore, Nome, Indirizzo, Città) Prodotti (CodiceProdotto, Nome, Marca, Modello)
2.2b: RELAZIONI E BASI DI DATI. Atzeni, cap. 2.1.4
2.2b: RELAZIONI E BASI DI DATI Atzeni, cap. 2.1.4 Il modello è basato su valori Una Base di Dati è generalmente costituita da più di una Tabella Le corrispondenze fra dati presenti in tabelle diverse sono
Definizione di domini
Definizione di domini Come nei linguaggi ad alto livello (es. C) è possibile definire nuovi domini (tipi di dati) a partire da quelli predefiniti, anche se il costruttore è più limitato. create domain
Il Modello Relazionale
Il Modello Relazionale 1 Proposto da E. F. Codd nel 1970 per favorire l indipendenza dei dati e reso disponibile come modello logico in DBMS reali nel 1981 Si basa sul concetto matematico di relazione,
ARCHIVI E DATABASE (prof. Ivaldi Giuliano)
ARCHIVI E DATABASE (prof. Ivaldi Giuliano) Archivio: è un insieme di registrazioni (o records) ciascuna delle quali è costituita da un insieme prefissato di informazioni elementari dette attributi (o campi).
Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004
DB2 Data Management Software Il linguaggio SQL Raggruppamenti Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004 LEGGERE LE SEGUENTI ATTENZIONI Le informazioni contenute in questa
ALGEBRA DELLE PROPOSIZIONI
Università di Salerno Fondamenti di Informatica Corso di Laurea Ingegneria Corso B Docente: Ing. Giovanni Secondulfo Anno Accademico 2010-2011 ALGEBRA DELLE PROPOSIZIONI Fondamenti di Informatica Algebra
I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:
Il modello relazionale I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: 1. forniscono sistemi semplici ed efficienti per rappresentare
SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"
SQL SQL: concetti base originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo gli aspetti essenziali,
Introduzione ai database relazionali
Introduzione ai database relazionali Tabelle Un database (DB) è costituito da un insieme di file che memorizzano dati opportunamente organizzati Nei database relazionale tale organizzazione è costituita
Il Modello Relazionale
Il Modello Relazionale Il modello relazionale 1 Il modello relazionale Proposto da E. F. Codd nel 1970 per favorire l indipendenza dei dati e reso disponibile come modello logico in DBMS reali nel 1981
Sistemi per la gestione di database: MySQL ( )
Sistemi per la gestione di database: MySQL ( ) Relational Database e Relational Database Management System Un database è una raccolta di dati organizzata in modo da consentire l accesso, il reperimento
ALGEBRA RELAZIONALE RIEPILOGO
ALGEBRA RELAZIONALE RIEPILOGO PROIEZIONE: (notazione ) Operatore unario per estrarre colonne da una relazione: lista_attributi (R) Lo schema del risultato contiene i soli attributi contenuti in lista_attributi.
Attributi e domini. A per {A}; XY per X Y (pertanto A 1 A 2 A 3 denota
Attributi e domini Assumiamo un universo infinito numerabile U = {A 0, A 1, A 2...} di attributi. Denotiamo gli attributi con A, B, C, B 1, C 1... e gli insiemi di attributi con X, Y, Z, X 1,... per brevità
Interrogazioni complesse. SQL avanzato 1
Interrogazioni complesse SQL avanzato Classificazione delle interrogazioni complesse Query con ordinamento Query con aggregazione Query con raggruppamento Query binarie Query annidate SQL avanzato 2 Esempio
SQL IL LINGUAGGIO DI INTERROGAZIONE
SQL IL LINGUAGGIO DI INTERROGAZIONE SQL! Originato da SEQUEL-XRM e System-R (1974-1977) dell IBM! Significato originario Structured Query Language! Standard de facto! Attuale standard ANSI/ISO è SQL:1999
Si formulino le seguenti interrogazioni tramite il linguaggio SQL:
Informatica per le Scienze Umane - Corso di Laurea in Lettere Appello del 15.01.2009 - Docente: Massimo Coppola Modello Relazionale e SQL Si consideri la seguente base di dati relativa alla redazione di
SQL - Funzioni di gruppo
una funzione di gruppo permette di estrarre informazioni da gruppi di tuple di una relazione le funzioni di gruppo si basano su due concetti: partizionamento delle tuple di una relazione in base al valore
Funzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
Capitolo 2. Esercizio 2.1. Esercizio 2.2
Capitolo 2 Esercizio 2.1 Considerare le informazioni per la gestione dei prestiti di una biblioteca personale. Il proprietario presta libri ai suoi amici, che indica semplicemente attraverso i rispettivi
Dati relazionali e XML
Dati relazionali e Introduzione (1) Memorizzazione dei dati Utilizzo dei dati Applicazione DBMS relazionale Applicazione Applicazione 2 Introduzione (2) Memorizzazione dei dati Utilizzo dei dati Applicazione
LA NORMALIZZAZIONE. Introduzione
LA NORMALIZZAZIONE Introduzione La normalizzazione e' una tecnica di progettazione dei database, mediante la quale si elimina la rindondanza dei dati al fine di evitare anomalie nella loro consistenza
MODELLO RELAZIONALE. Introduzione
MODELLO RELAZIONALE Introduzione E' stato proposto agli inizi degli anni 70 da Codd finalizzato alla realizzazione dell indipendenza dei dati, unisce concetti derivati dalla teoria degli insiemi (relazioni)
Elementi di Algebra Relazionale
Note dalle lezioni di INFORMATICA (per gli allievi della classe quinta - indirizzo MERCURIO) Elementi di Algebra Relazionale prof. Stefano D.L.Campanozzi I.T.C. Giulio Cesare Bari - a.s. 2008-2009 1 Introduzione
Il seguente esempio ha lo scopo di illustrare i 3 tipi di relazione 1:1,1:N,N:N. Tabella Conto: Tabella Conto:
Il seguente esempio ha lo scopo di illustrare i 3 tipi di relazione 1:1,1:N,N:N. Tabella Conto: Tabella Conto: Tabella Cliente: Tabella NumTel: Tabella Dati_Cliente: L'esempio è per ragioni di chiarezza
Corso di Basi di Dati A.A. 2014/2015
Corso di Laurea in Ingegneria Gestionale Sapienza - Università di Roma Corso di Basi di Dati A.A. 2014/2015 Esercitazione su Progettazione Logica Tiziana Catarci, Andrea Marrella Ultimo aggiornamento :
Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda
Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Premessa Con l analisi di sensitività il perito valutatore elabora un range di valori invece di un dato
Modello Relazionale. Modello Relazionale. Relazioni - Prodotto Cartesiano. Relazione: tre accezioni. Es. Dati gli insiemi
Modello Relazionale Modello Relazionale Proposto agli inizi degli anni 70 da Codd Finalizzato alla realizzazione dell indipendenza dei dati Unisce concetti derivati dalla teoria degli insiemi (relazioni)
Progettazione di Database. Un Esempio
Progettazione di Database Un Esempio Data Base Management System Applicazione 1 Applicazione 2 Applicazione 3 DBMS A B C D E Il Modello Relazionale Una relazione è costituita su un insieme di domini, non
Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati
Basi di dati Il Modello Relazionale dei Dati Proposto da E. Codd nel 1970 per favorire l indipendenza dei dati Disponibile come modello logico in DBMS reali nel 1981 (non è facile realizzare l indipendenza
Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6
Data Base 1 Sommario I concetti fondamentali. Database Relazionale.. Query e SQL MySql, Creazione di un db in MySQL con PHPmyAdmin Creazione database e delle Tabelle Query Inserimento Ricerca Modifica
MODELLO RELAZIONALE. cesarini-bdsi mod relazionale 1 MODELLO RELAZIONALE
MODELLO RELAZIONALE Definizione di relazione Schema e istanza Chiave Valori nulli Predicati e vincoli di integrità Vincolo di integrità referenziale cesarini-bdsi mod relazionale 1 MODELLO RELAZIONALE
Basi di Dati: Corso di laboratorio
Basi di Dati: Corso di laboratorio Lezione 2 Raffaella Gentilini 1 / 45 Sommario 1 Il DDL di SQL: Cancellazione ed Aggiornamento di una BD Cancellazione di Schemi, Tabelle, e Domini Aggiornamento di Tabelle
Decomposizione senza perdita. Decomposizione senza perdita. Conservazione delle dipendenze. Conservazione delle dipendenze
Decomposizione senza perdita Data una relazione r su X, se X 1 e X 2 sono due sottoinsiemi di X la cui unione è X stesso, allora il join delle due relazioni ottenute per proiezione di r su X 1 e X 2 è
Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf
Il linguaggio SQL: trigger Sistemi Informativi T Versione elettronica: 04.7.SQL.trigger.pdf DBMS attivi Un DBMS si dice attivoquando dispone di un sottosistema integrato per definire e gestire regole I
Progettazione di una base di dati Ufficio della Motorizzazione
Corso di Gestione dell Informazione Studenti NON frequentanti A.A. 2008/2009 1 Scopo del progetto Progettazione di una base di dati Ufficio della Motorizzazione Si vuole realizzare un applicazione base
Vincoli di Integrità Approccio dichiarativo alla loro implementazione
Vincoli di Integrità Approccio dichiarativo alla loro implementazione Antonella Poggi Dipartimento di informatica e Sistemistica SAPIENZA Università di Roma Progetto di Applicazioni Software Anno accademico
Soluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
Normalizzazione. Normalizzazione. Normalizzazione e modello ER. Esempio. Normalizzazione
Normalizzazione Normalizzazione Introduzione Forma normale di Boyce Codd Decomposizione in forma normale Normalizzazione Introduzione La normalizzazione è un procedimento che, a partire da uno schema relazionale
Database. Si ringrazia Marco Bertini per le slides
Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida
Basi Di Dati, 09/12/2003
Basi Di Dati, 09/12/2003 Una concessionaria di auto nuove ed usate vuole automatizzare alcune delle sue attività. L attività che la concessionaria vuole automatizzare riguarda la gestione delle auto nuove,
Introduzione alla teoria dei database relazionali. Come progettare un database
Introduzione alla teoria dei database relazionali Come progettare un database La struttura delle relazioni Dopo la prima fase di individuazione concettuale delle entità e degli attributi è necessario passare
Dispensa di database Access
Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di
Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.
(Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System
Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema}
Documentazione SQL Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema} Definizione tabella Definizione dominio Specifica di valori
Data Warehousing (DW)
Data Warehousing (DW) Il Data Warehousing è un processo per estrarre e integrare dati storici da sistemi transazionali (OLTP) diversi e disomogenei, e da usare come supporto al sistema di decisione aziendale
BASE DI DATI: sicurezza. Informatica febbraio 2015 5ASA
BASE DI DATI: sicurezza Informatica febbraio 2015 5ASA Argomenti Privatezza o riservatezza Vincoli di integrità logica della base di dati intrarelazionali interrelazionali Principio generale sulla sicurezza
Le query di raggruppamento
Le query di raggruppamento Le "Query di raggruppamento" sono delle Query di selezione che fanno uso delle "Funzioni di aggregazione" come la Somma, il Conteggio, il Massimo, il Minimo o la Media, per visualizzare
Elementi di Psicometria con Laboratorio di SPSS 1
Elementi di Psicometria con Laboratorio di SPSS 1 12-Il t-test per campioni appaiati vers. 1.2 (7 novembre 2014) Germano Rossi 1 [email protected] 1 Dipartimento di Psicologia, Università di Milano-Bicocca
Compito DA e BD. Tempo concesso: 90 minuti 12 giugno 03 Nome: Cognome: Matricola: Esercizio 1
Compito DA e BD. Tempo concesso: 90 minuti 12 giugno 03 Nome: Cognome: Matricola: Esercizio 1 Si considerino le seguenti specifiche relative alla realizzazione della base di dati di una facoltà e si definisca
Algebra Relazionale e Calcolo Relazionale. L. Vigliano
Algebra Relazionale e Calcolo Relazionale Operazioni associate al modello relazionale Notazione algebrica Algebra relazionale Linguaggio procedurale interrogazioni espresse applicando operatori alle relazioni
Siti web centrati sui dati Architettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
Secondo Compitino di Basi di Dati
Secondo Compitino di Basi di Dati 10 Giugno 2004 NOME: COGNOME: MATRICOLA: Esercizio Punti previsti 1 18 2 12 3 3 Totale 33 Punti assegnati Esercizio 1 (Punti 18) Si vuole realizzare un applicazione per
Basi di Dati Corso di Laura in Informatica Umanistica
Basi di Dati Corso di Laura in Informatica Umanistica Appello del 10/09/2010 Parte 1: Algebra Relazionale e linguaggio SQL Docente: Giuseppe Amato Sia dato il seguente schema di base di dati per la gestione
Elena Baralis 2013 Politecnico di Torino 1
Modello relazionale Docente M2170 Fondamenti di informatica Verdi M4880 Sistemi di elaborazione Bianchi F0410 Basi di dati Neri Docenti Nome Dipartimento Telefono Verdi Informatica 123456 Bianchi Elettronica
Lezione V. Aula Multimediale - sabato 29/03/2008
Lezione V Aula Multimediale - sabato 29/03/2008 LAB utilizzo di MS Access Definire gli archivi utilizzando le regole di derivazione e descrivere le caratteristiche di ciascun archivio ASSOCIAZIONE (1:1)
Matematica in laboratorio
Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a
Corso di Laurea in Scienze e Tecnologie Biomolecolari. NOME COGNOME N. Matr.
Corso di Laurea in Scienze e Tecnologie Biomolecolari Matematica e Statistica II Prova di esame del 18/7/2013 NOME COGNOME N. Matr. Rispondere ai punti degli esercizi nel modo più completo possibile, cercando
f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da
Data una funzione reale f di variabile reale x, definita su un sottoinsieme proprio D f di R (con questo voglio dire che il dominio di f è un sottoinsieme di R che non coincide con tutto R), ci si chiede
( x) ( x) 0. Equazioni irrazionali
Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza
Dimensione di uno Spazio vettoriale
Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione
Progettazione e realizzazione di un applicativo Web Annunci Immobiliari
Corso di Gestione dell Informazione Studenti NON frequentanti A.A. 2009/2010 Progettazione e realizzazione di un applicativo Web Annunci Immobiliari 1 Scopo del progetto Si vuole realizzare un applicazione
Basi di dati 30 settembre 2010 Compito A
Basi di dati 30 settembre 2010 Compito A Domanda 0 (5%) Leggere e rispettare le seguenti regole: Scrivere nome, cognome, matricola (se nota), corso di studio e lettera del compito (ad esempio, A) sui fogli
