![]() |
Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Basi di dati ~ comunicazione digitale (http://www.dsy.it/forum/forumdisplay.php?forumid=108)
-- esami perlasca 06/07 (http://www.dsy.it/forum/showthread.php?threadid=33477)
esami perlasca 06/07
ho trovato solo esami relativi all' edizione 05/06 (quelli fatti insieme a mazzoleni)
di quella corrente non c'è nulla?
chi li ha già fatti in passato ricorda qualcosa?
questo è l'esame di settembre..l'esercizio sul diagramma ER non ce l'ho sotto mano magari lo stendo piu' tardi quando avrò finito di esercitarmi ^_^
Esercizio 2
Sia dato il seguente schema relazionale:
MUSEI(nome, città, nazione, giornoChiusura)
ARTISTI(nome, nazionalità, dataNascita, DataMorte)
OPERE(codice, titolo, stato artista,museo)
PERSONAGGI(Personaggio, codice)
Rispondere ai seguenti quesiti utilizzando il linguaggio SQL:
• Restituire il nome dell’artista ed il titolo delle opere conservate alla “Galleria degli Uffizi” o alla “National Gallery”.
• Il codice ed il titolo delle opere di artisti italiani conservate nei musei di Londra, in cui è rappresentato Dante
• Restituire per ogni museo di Londra il numero delle opere di artisti italiani conservate nei musei di Londra, in cui è rappresentato Dante.
• Restituire per ogni museo di londra il numero delle opere di artisti italiani conservate in esso
• Il titolo dell’opera ed il nome dell’artista delle opere di artisti italiani che non hanno personaggi.
• Restituire il nome dei musei di Londra che conservano solo opere di Leonardo; effettuare tale interrogazione anche in algebra relazionale.
Esercizio 3
Si consideri R(A,B,C,D,E,F) con le seguenti dipendenze funzionali:
AB→E, AC→F, AD→B, B→C, C→D
Determinare
• Tutte le chiavi di R
• Se R è in 3NF
• Se R è in BCNF; nel caso in cui non lo fosse, discutere l’esistenza di una decomposizione che preservi le dipendenze funzionali
domanda sull'es 3: le chiavi sono AB, AC e AD, R è in 3nf, ma è anche in BCNF?
Il titolo dell’opera ed il nome dell’artista delle opere di artisti italiani che non hanno personaggi.
e per risolvere questa dobbiamo mettere come condizione:
WHERE personaggi.personaggi="nessuno" dato che personaggi.personaggio è parte della chiave primaria e non può essere nullo? corretto?
potete anche mettere le soluzioni degli altri esercizi?
grazie!!!
Ho provato a fare le query e questi sono i miei risultati...voi come avete fatto?
select a.nome, o.titolo
from artisti a, opere o, musei m
where a.nome=o.artista and o.museo=m.nome and o.museo=’Galleria degli Uffizi’ OR o.museo='National Gallery';
select o.codice, o.titolo
from artisti a, opere o, musei m, personaggi p
where a.nome=o.artista and o.museo=m.nome and p.codice=o.codice and p.Personaggio='Dante' and m.città='londra';
select m.nome, count(*) as numeropere
from artisti a, opere o, musei m, personaggi p
where a.nome=o.artista and o.museo=m.nome and p.codice=o.codice and p.Personaggio='Dante' and m.città='londra';
select m.nome, count(*) as numeropere
from artisti a, opere o, musei m,
where a.nome=o.artista and o.museo=m.nome and p.codice=o.codice and a.nazionalità='italiana' and m.città='londra';
select o.titolo, a.nome
from artisti a, opere o, personaggi.p
where a.nome=o.artista and p.codice=o.codice and a.nazionalità='italiana' and p.Personaggio=null;
select m.nome
from musei m
where m.città=’londra’ and not exist (select * from opere o where o.nome<>’leonardo’ and
m.nome=o.museo);
R1
nome(Scittà=’londra’(Musei))
R2: Pnome(Scittà=’londra’ and artista<>’leonardo’(Musei|><|nome=museoOpere))
R1-R2
Per quanto riguarda l'ultimo esercizio:
Le chiavi sono: AB, AC, AD
E' in 3NF, Non è in BCNF
Io non ho trovato ancora scomposizioni che preservino le dipendenze...voi?
Fatemi sapere
Ciao
Piccole correzioni
query 1:
select a.nome, o.titolo
from artisti a, opere o
where a.nome=o.artista and and o.museo=’Galleria degli Uffizi’ OR o.museo='National Gallery';
query 3:
select m.nome, count(*) as numeropere
from artisti a, opere o, musei m, personaggi p
where a.nome=o.artista and o.museo=m.nome and p.codice=o.codice and p.Personaggio='Dante' and m.città='londra'
GROUP BY m.nome;
Per caso avete lo schema ER dell'esame di settembre?
Grazie
Altre correzioni che ho trovato(purtroppo le avevo fatte su carta e nel ricopiarle mi sono persa dei pezzi
):
query 2:
select o.codice, o.titolo
from artisti a, opere o, musei m, personaggi p
where a.nome=o.artista and o.museo=m.nome and p.codice=o.codice and p.Personaggio='Dante' and m.città='londra' and a.nazionalità='italiana';
query4:
select m.nome, count(*) as numeropere
from artisti a, opere o, musei m,
where a.nome=o.artista and o.museo=m.nome and p.codice=o.codice and a.nazionalità='italiana' and m.città='londra';
GROUP BY m.nome;
query 5:
select o.titolo, a.nome
from artisti a, opere o, personaggi.p
where a.nome=o.artista and p.codice=o.codice and a.nazionalità='italiana' and p.Personaggio IS NULL;
l'es 3 è in 3nf xkè a sn ci sono chiavi o cmq attributi primi, mentre non è i BCNF xkè nn tutti sono appunto chiavi. E' corretto?Perchè non ho capito bene questa cosa..pomeriggio po sto le mie query
ma una chiave primaria non può essere null
nella query 5 di arial è null:... p.Personaggio IS NULL
chi mi spiega?
grazie
Per essere in BCNF bisogna avere per ogni dipendenza funzionale a sinistra una chiave o superchiave (nel nostro caso B-->C e C--->D non vanno bene).
Per il fatto della chiave anche a me è venuto sto dubbio perchè in teoria non può essere null...boh o c'è un errore nello schema o penso che la query non si possa fare..qualcuno ha qualche idea?
secondo me è:
query 5:
select o.titolo, a.nome
from artisti a, opere o, personaggi.p
where a.nome=o.artista and p.codice=o.codice and a.nazionalità='italiana' and p.Personaggio='non definito'
in un quadro che rappresenta ad esempio la natura non c'è un personaggio specifico
giusto questo penso potrebbe andare!
si basta mettere personaggio="nessuno" o qualcosa del genere, dato che non puo' essere NULL bisognaerà cmq scrivere qualcosa all'interno di personaggi.personaggio..l'avevo scritto poco sopra
L'esercizio sull'er di settembre riguardava la gestione di un DB per i gruppi musicali.Purtroppo il testo preciso non ce l'ho piu',ma posso scrivervi i punti ricavandoli dall'esercizio da me svolto.
a)il gruppo è identificato da un codice,si vuole sapere nome e anno di fondazione
b)ogni gruppo puo' fare piu' album,esso viene identificato da un codice.Si vuole sapere titolo e anno di uscita.Ogni album puo' essere fatto da un solo gruppo.
c)si vuole tener traccia dei concerti svolti.essi sono identificati da un codice e si vuole tener traccia delle canzoni suonate,nome,luogo,data.Al concerto possono partecipare piu' gruppi.
d)dei componenti di un gruppo si vuole tener traccia del codice fiscale,nome,nazionalità,anno di nascita.Inoltre se il componente è un m usicista si vuole sapere quale è il suo strumento preferito,se è cantante tutte le canzoni che ha cantato nella sua carriera
fare l'ER,ristrutturarlo e fare il relativo schema relazionale.
That's all ![]()
in ogni caso la normalizzazione non mi entra in testa -.-'
ho provato a risolvere le query e mi son venute simili a quelle di ariel, per cui credo proprio quelle siano corrette.
Solo un dubbio nel punto 6:
Restituire il nome dei musei di Londra che conservano solo opere di Leonardo.
nn basterebbe presentarla così?
select m.nome
from musei m, opere o
where m.città=’londra’ and o.artista=’leonardo’ and
m.nome=o.museo;
l’algebra verrebbe:
πnome(πmuseo(σcittà=’Londra’(MUSEO)) >< σartista=’Leonardo’(OPERE))
Penso che fatta così ti restituisca i musei che conservano un opera di leonardo (ma ci possono anche essere opere di altri artisti) e non quelli che hanno solo opere di leonardo
Originally posted by ARIEL
Penso che fatta così ti restituisca i musei che conservano un opera di leonardo (ma ci possono anche essere opere di altri artisti) e non quelli che hanno solo opere di leonardo
scusate ma anche qui vi è il salto d'appello se si prende meno di 8?questa cosa mi mette una paura..
Originally posted by LiJay
scusate ma anche qui vi è il salto d'appello se si prende meno di 8?questa cosa mi mette una paura..
eh lo so ma essendo il penultimo appello non saro' mai sicura di cio' che faròxD
Originally posted by LiJay
eh lo so ma essendo il penultimo appello non saro' mai sicura di cio' che faròxD
se penso che il progetto che ho quasi finito potrebbe non valermi piu'....mammaaaa!
Se si prende meno di 9 c'è il salto d'appello.....che paura! Cmq secondo me se non si è sicuri delle risposte è meglio ritirarsi! Che ansiaaaaaaa....
scusate io tra tutti gli esercizi ho difficolta' con la normalizzazione, ad esempio mi potete mostrare un esempio della chiusura? nn riesco a capire i passaggi per vedere cosa e' chiave e cosa no...grazie in anticipo
Per esempio nell'esercizio di prima:
x(0)=AB controllo tra le dipendenze e noto che ho AB-->E quindi mi risulta ABE...guardo ancora tra le dipendenze e ho B--->C quindi ottengo ABCE...guardo ancora tra le dipendenze e ho C--->D quindi ottengo ABCDE, guardo ancora tra le dipendeze e vedo che ho AC--->F quindi ho ABCDEF a questo punto ho tutto lo schema inziale quindi AB è chiave. Faccio tutto questo percorso per le varie possibilità...non so io le risolvo così!
Originally posted by ARIEL
Per esempio nell'esercizio di prima:
x(0)=AB controllo tra le dipendenze e noto che ho AB-->E quindi mi risulta ABE...guardo ancora tra le dipendenze e ho B--->C quindi ottengo ABCE...guardo ancora tra le dipendenze e ho C--->D quindi ottengo ABCDE, guardo ancora tra le dipendeze e vedo che ho AC--->F quindi ho ABCDEF a questo punto ho tutto lo schema inziale quindi AB è chiave. Faccio tutto questo percorso per le varie possibilità...non so io le risolvo così!
si giusto
mi stai illuminando di immenso lo sai? DXDX
Meno male...io invece ho una paura tremenda per le query (soprattutto algebra relazionale)e lo schema ER perchè non ho la minima idea della difficoltà che mette!
idem per le query..l'er mi preoccupa meno..
Voi come vi siete preparati per l'esame?
ho fatto esercizi su er, sql, qualcosa di algebra e normalizzazione..piu che altro in sto periodo di esami ho avuto poco tempo per prepararmi..speriamo in bene!voi?avete usato libri o altro materiale?
Io ho usato le slide e il libro Navathe però per questo esame sapere la teoria serve a poco...secondo me è importante fare esercizi perchè l'unico modo per passarlo è avere molta logica purtroppo :-(
io e la logica siamo come io e l'australia...anni luce di distanza
Originally posted by Melodiaz
io e la logica siamo come io e l'australia...anni luce di distanza
Solo un'altro dubbio sulla chiusura...ma come siete arrivati alla conclusioni che le chiavi erano AB AC AD?
prima guardate cosa nn c'e' a destra, in sto caso solo a
poi vedo che a nn e' chiave
e quindi iniziate a fare le combinazioni di due attributi giusto??
si esatto e continui finchè le finisci e poi passi a 3 attributi che si verificano facilmente (attenzione alle superchiavi)...
Una domanda...voi una divisione come la esprimete in sql?
mi riferisco alla terza interrogazione a pagina 182 del libro.
ragazzi, qualcuno può postare domani l' esame? io non potrò esserci 
Ecco l'esame di oggi
PRIMO
Si vogliono memorizzare informazioni riguardanti i concerti che si svolgono in una determinata regione.
Un concerto identificato da un codice puo' essere tenuto da un artista o da un gruppo e puo' riguardare piu' date.
Di ogni concerto interessa il nome,il luogo(con relativa capienza)e le date in cui si tiene.per ogni serata di ogni concerto interessa sapere quali canzoni sono state cantate.
di ciascun artista(solista),identificato dal nome e dal cognome interessa la discografia(titolo ed anno di uscita di ciascun album) mentre di ciascun gruppo,identificato dal nome,interes al'anno di fondazione,il nome di ciascun componente ed il suo ruolo all'interno del gruppo.
Per ogni data di ciascun concerto vengono resi disponibili alcuni biglietti omaggio da distribuire per promozione.Si vuole tenere traccia dei dati delle persone a cui vengono destinati tali biglietti e del numero di biglietit offerti;in piarticolare si vuole evitare di destinare piu' di tre biglietti per persona per concerto.
fare ER,ristrutturarlo e fare lo schema concettuale.
SECONDO
impiegati(matr,nome,codDip)
dipartimenti(codDip,nome)
competenze(u][matr,competenza[/u])
progetti(codP,nome,sede,budget,matrResponsabile)
assegnamento(codP,matr,data,numore,descrizione)
1)determinare per ogni progetto presso cui ha lavorato l'impiegato 1234 il numero totale di giorni e di ore lavorativa effettuati
2)determinare le competenze per le quali esiste un unico impiegato che le possiede
3)trovare il nome e la matricola dei responsabili che possiedono almeno 5 competenze
4)determinare gli impiegati che sono stati aseegnati a tutti i progetti microsoft avente budget di almeno 500000 euro
ESERCIZIO3
Si consideri R(A,B,C,D,E,F) con le seguenti dipendenze funzionali
AB-->E,AE-->F,AD-->B,C-->D
determinare chiavi,se è in bcnf e in 3nf
ESERCIZIO 4
Si scriv un trigger dove si eviti di destinare piu' di 3 biglietti per persona per concerto(es1)
Io mi sono ritirata..l'sql l'ho trovato abbastanza difficile
grazie lijay, davvero utile 
ma chi scriveva su questo forum che i trigger non ci sarebbero stati 
era bello difficile oggi!io nn ho fatto il trigger..
L'esame era bello tosto...cmq qualcuno può postare la soluzione dello schema er? Grazie
Ma per il trigger, basta una stesura standard in sql o vuole che venga fatta una funzione in pl/sql come ad esempio per il progetto?
upppppp! Qualcuno può postare le sue soluzioni dell'esame per favore?
Grazie
per quanto riguarda l'er ti conviene andare da lui..l'sql no me lo sono scritto ma era piu' facile di quel che sembrava,mi sono mangiata le mani al colloquio =_=.
Nell'ultima interrogazione sql va bene fare sta cosa?
SELECT I.matr, I.nome
FROM Impiegato AS I, Progetto AS P, assegnamento AS A
WHERE A.matr=I.matr
AND A.codP=P.codP
AND P.Sede= 'Microsoft'
AND P.budget >=50000
si accettano consigli e insulti :-)
Qualcuno gentilmente può delucidarmi sulla questione del trigger? 
nell'ultima devi fare una divisione...io ho fatto così:
SELECT budget
FROM progetti p,assegnamento a
WHERE p.codP=a.codP AND Budget>=500000 AND p.nome='microsoft'
GROUP BY matr
HAVING COUNT(matr)=(SELECT COUNT(matr) FROM progetti WHERE nome='microsoft')
scusate ma perchè aggiungere le lettere? ad esempio a.matr oppure p.cod.
perchè ce ne sono diversi? cioè in più relazioni?
Nell'esercizio N° 3 dell'ultimo appello del 28-01-2008, quello sulla normalizzazione il cui testo è il seguente:
Si consideri R(A,B,C,D,E,F) con le seguenti dipendenze funzionali
AB-->E,AE-->F,AD-->B,C-->D
Io sono riuscito a trovare solo la chiave AC (cioè è l'unica che mi permette di avere la chiusura), vi posto il passaggio che ho fatto..
Prima di tutto noto che a destra non compaiono mai ne A ne C e quindi questi due attributi fanno parte della chiave.....poi ho fatto i seguenti passaggi:
X(0) = AC
C --> D quindi ottengo ACD
AD -->B quindi ottengo ABCD
AB -->E quindi ottengo ABCDE
AE --> F quindi ottengo ABCDEF
e quindi ottengo la chiusura e deduco che AC è chiave.
Poi ho provato a fare la stessa cosa per AB e AD ma non si riesce a fare la chiusura e quindi non possono essere chiavi
Non è in BCNF perchè a sinistra di ogni dipendenza funzionale bisogna avere una chiave o superchiave.
E' in 3NF.
E' giusto ciò che ho fatto o ci sono degli errori?
Per quanto riguarda la scomposizione qualcuno/a sa come si procede?
Originally posted by el-mundo
scusate ma perchè aggiungere le lettere? ad esempio a.matr oppure p.cod.
perchè ce ne sono diversi? cioè in più relazioni?
Altra domanda...
qualcuno è riuscito a fare in modo corretto le query 2 e 3 dell'ultimo appello?
2)determinare le competenze per le quali esiste un unico impiegato che le possiede
3)trovare il nome e la matricola dei responsabili che possiedono almeno 5 competenze
Scusa ma a me non sembra in 3NF...
Per la scomposizione in 3NF a me viene che lo schema è minimale in quanto non ci sono ridondanze così procedo e ottengo:
R1=(ABE) R2=(AEF) R3=(ADB) R4=(CD) essendo la chiave AC noto che nessun gruppo contiene la chiave....e a sto punto come si procede?
Grazie
Allora, non è in 3nf sicuramente. Per la scomposizione, a quel che ho capito io:
R1=(ABE) chiave AB R2=(AEF) chiave AE R3=(ADB) chiave AD R4=(CD) chiave C
E diventa in 3nf a questo punto (e mantiene le dipendenze)
Ma non sono sicuro al 100%
Originally posted by Kardo
Allora, non è in 3nf sicuramente. Per la scomposizione, a quel che ho capito io:
R1=(ABE) chiave AB R2=(AEF) chiave AE R3=(ADB) chiave AD R4=(CD) chiave C
E diventa in 3nf a questo punto (e mantiene le dipendenze)
Ma non sono sicuro al 100%
io personalmente prima ho controllato se lo schema è minimale (ovvero se non ci sono ridondanze...i passaggi da fare li trovi sulle slide nuove sul sito di perlasca) poi ho diviso in relazioni in base alle dipendenze che avevo tipo: ho AB-->E quindi R1(ABE) e così via e poi controlli se è in 3nf.
Originally posted by ARIEL
io personalmente prima ho controllato se lo schema è minimale (ovvero se non ci sono ridondanze...i passaggi da fare li trovi sulle slide nuove sul sito di perlasca) poi ho diviso in relazioni in base alle dipendenze che avevo tipo: ho AB-->E quindi R1(ABE) e così via e poi controlli se è in 3nf.
Io la query 3 l'ho provata a farla così:
3)trovare il nome e la matricola dei responsabili che possiedono almeno 5 competenze
select impiegati.matr, impiegati.nome
from impiegati, competenze
where impiegati.matr = competenze.matr
group by impiegati.matr, impiegati.nome
having count(competenze) >= 5
Non so cmq se è giusta!!!!
Secondo voi??????
Ho provato a risolvere le prime 3 query...
1)SELECT p.codp,COUNT(a.data),SUM(numore)
FROM impiegati i, assegnamento a,progetti p
WHERE i.matr=a.matr AND p.codp=a.codp AND i.matr=1234
GROUP BY p.codp
2)SELECT i.matr,c.competenza
FROM competenze c, impiegato i,
WHERE i.matr=c.matr AND
(SELECT COUNT(c.matr)
FROM competenze c, impiegati i
WHERE i.matr=c.matr)=1
3)SELECT i.nome,i.matr
FROM impiegati i,competenze c, progetti p
WHERE i.matr=p.matrResponsabile AND c.matr=p.matrResponsabile AND
(SELECT COUNT(c.matr)
FROM competenze c, impiegati i
WHERE i.matr=c.matr)>4
secondo voi sono giuste?
grazie
Nella 1 penso bastasse usare un natural join, no?
Posto come sono venute a me le prime due:
1) SELECT a.CodP, sum (a.numore) as TOTore, count (a.data) as
TOTgiorni
FROM impiegati i NATURAL JOIN assegnamento a
WHERE i.matr = '1234'
GROUP BY a.CodP
2) SELECT competenza, matr
FROM competenze
GROUP BY competenza, matr
HAVING COUNT(*) = 1
scusate qualcuno potrebbe postare lo schema er corretto dell'appello di gennaio? ho ancora qualche dubbio a proposito...
THX
Originally posted by Kardo
Nella 1 penso bastasse usare un natural join, no?
Posto come sono venute a me le prime due:
1) SELECT a.CodP, sum (a.numore) as TOTore, count (a.data) as
TOTgiorni
FROM impiegati i NATURAL JOIN assegnamento a
WHERE i.matr = '1234'
GROUP BY a.CodP
2) SELECT competenza, matr
FROM competenze
GROUP BY competenza, matr
HAVING COUNT(*) = 1
Scusate ma count (a.data) as Totgiorni non è sbagliato?
l'attributo data semmai per rivacare i giorni bisogna utilizzare DAY xò bisogna capire se quella data è la data di fine o è la data di inizio....boh secondo me fare il count di una data è un errore, ma non vorrei sbagliare....
Non so io l'ho inteso, vista la richiesta, come se lui mi contasse tutte le date in cui un impiegato lavora, però non escludo che sia da usare day magari con l'interval; se qualcuno ha idee in proposito ben venga.
Dal testo purtroppo non si capisce se quella è la data di inizio e qual è la data di fine e se i progetti non sono ancora finiti, se on sono ancora finiti per sapere il numero di giorni totali per quel determinato progetto bisognerebbe fare (current date () - data) DAY così ritrovi soltanto i giorni che sono stati impiegati, oppure io visto che non sapevo a che cosa si riferiva l'attributo data se inizio oppure fine e se sono già finiti nel compito avevo scritto sum(ore) / 24 per trovare il numero di giorni, xò non credo che sia giusto, bohhh
Per quanto riguarda il trigger pochi minuti fa ho provato a scriverlo così:
create trigger NumMaxBiglietti
after insert on Persona
for each row
when ( select New.NumBiglietti
from persona ) > 3
ROLLBACK;
Secondo voi può essere giusto?
Il trigger mi sembra giusto.
Per la query :
bisognerebbe fare (current date () - data) DAY
Allora a ricevimento dal prof. mi ha spiegato che in Assegnamento Data indica i giorni in cui si è lavorato al progetto. Siccome la chiave primaria è codP, Matr, Data ci saranno tuple fatte così:
0001, 1234, 12/03/2007
0001, 1234, 17/03/2007
0001, 1234, 24/03/2007
etc.
quindi facendo un count di Data si riescono a trovare i giorni totali di lavoro effettuati sul progetto.
Ho dei dubbi su alcune cose:
Select i.nome, p.matrResponsabile, c.competenza
From impiegati i,competenze c,progetti p
where i.matr = p.matrResponsabile and i.matr = c.matr
group by c.competenza, i.nome, p.matrResponsabile
(non mi ricordo se devono andare tutti e tre nel group by)
having count (competenza) >= 5
non basta mettere nel group by solo c. competenza, i.nome?
Seconda cosa quando nell'having count si mette l'attributo (come nel caso prima competenze) e quando no (come nella query degli impiegati con una sola competenza)?
Nell'esame c'era anche la query:
Determinare gli impiegati assegnati a tutti i progetti Microsoft avente budget di almeno 50000 euro.
SELECT i.Matr, i.Nome
FROM Impiegati i, Progetti p, Assegnamento a
WHERE a.Matr=i.Matr AND a.codP=p.CodP AND budget>='50000' AND p.Nome='Microsoft' AND NOT EXIST (SELECT i.Nome, p.CodP
FROM Impiegati i, Progetti p, Assegnamento a
WHERE a.Matr=i.Matr AND a.codP=p.CodP AND p.Nome<>'Microsoft');
Qualche idea? penso che la mia sia sbagliata in qualche pezzo!
Grazie
Originally posted by ARIEL
Allora a ricevimento dal prof. mi ha spiegato che in Assegnamento Data indica i giorni in cui si è lavorato al progetto. Siccome la chiave primaria è codP, Matr, Data ci saranno tuple fatte così:
0001, 1234, 12/03/2007
0001, 1234, 17/03/2007
0001, 1234, 24/03/2007
etc.
quindi facendo un count di Data si riescono a trovare i giorni totali di lavoro effettuati sul progetto.
Select i.nome, p.matrResponsabile, c.competenza
From impiegati i,competenze c,progetti p
where i.matr = p.matrResponsabile and i.matr = c.matr
group by c.competenza, i.nome, p.matrResponsabile
(non mi ricordo se devono andare tutti e tre nel group by)
having count (competenza) >= 5
non basta mettere nel group by solo c. competenza, i.nome?
C'era anche la query:
Determinare gli impiegati che non sono stati assegnati ad alcun progetto
Originally posted by Melodiaz
scusate qualcuno potrebbe postare lo schema er corretto dell'appello di gennaio? ho ancora qualche dubbio a proposito...
THX
purtroppo penso che lo schema corretto non ce l'abbia nessuno!
nooooooo...va beh iniziero' a strapparmi i capelli per domani...ormai a causa di sto esame sto diventando pelato
perchè invece non provi a postare i tuoi dubbi? magari qualcuno può risponderti ugualmente...
Originally posted by LiJay
nell'ultima devi fare una divisione...io ho fatto così:
SELECT budget
FROM progetti p,assegnamento a
WHERE p.codP=a.codP AND Budget>=500000 AND p.nome='microsoft'
GROUP BY matr
HAVING COUNT(matr)=(SELECT COUNT(matr) FROM progetti WHERE nome='microsoft')
Originally posted by ARIEL
Io invece la farei così:
SELECT i.Matr
FROM Progetti p, Impiegati i, Assegnamento a
WHERE i.Matr=a.Matr AND p.CodP=a.CodP AND budget>='50000' AND p.Nome='Microsoft'
GROUP BY Matr
HAVING COUNT (Matr)=(SELECT COUNT (Matr) FROM Impiegati
WHERE Nome='Microsoft');

Originally posted by ARIEL
io personalmente prima ho controllato se lo schema è minimale (ovvero se non ci sono ridondanze...i passaggi da fare li trovi sulle slide nuove sul sito di perlasca) poi ho diviso in relazioni in base alle dipendenze che avevo tipo: ho AB-->E quindi R1(ABE) e così via e poi controlli se è in 3nf.
Doppio post. Sorry.
Originally posted by ARIEL
Io invece la farei così:
SELECT i.Matr
FROM Progetti p, Impiegati i, Assegnamento a
WHERE i.Matr=a.Matr AND p.CodP=a.CodP AND budget>='50000' AND p.Nome='Microsoft'
GROUP BY Matr
HAVING COUNT (Matr)=(SELECT COUNT (Matr) FROM Impiegati
WHERE Nome='Microsoft');
SELECT i.Matr, i.Nome
FROM Impiegati i, Progetti p, Assegnamento a
WHERE a.Matr=i.Matr AND a.codP=p.CodP AND budget>='50000' AND p.Nome='Microsoft' AND NOT EXIST (SELECT i.Nome, p.CodP
FROM Impiegati i, Progetti p, Assegnamento a
WHERE a.Matr=i.Matr AND a.codP=p.CodP AND p.Nome<>'Microsoft')
Originally posted by Kardo
Io l'ho fatta con il group by, ma sono giuste entrambe, credo, perchè sulle slide la divisione viene espressa, o usando la doppia negazione (not exist) o con le funzioni di gruppo.
4)SELECT i.matr
FROM impiegati i, progetti p, assegnamento a
WHERE i.matr=a.matr AND a.codP=p.codP AND p.budget >= 500000 AND p.nome=’microsoft’
GROUP BY i.matr
Con questa query penso che nel risultato siano compresi anche quegli impiegati che sono stati assegnati a un solo progetto microsoft con budget >=50000 mentre penso che la query vuole sapere gli impiegati che partecipano a tutti i progetti microsoft...
io l'ho intesa così!
Originally posted by ARIEL
4)SELECT i.matr
FROM impiegati i, progetti p, assegnamento a
WHERE i.matr=a.matr AND a.codP=p.codP AND p.budget >= 500000 AND p.nome=’microsoft’
GROUP BY i.matr
Con questa query penso che nel risultato siano compresi anche quegli impiegati che sono stati assegnati a un solo progetto microsoft con budget >=50000 mentre penso che la query vuole sapere gli impiegati che partecipano a tutti i progetti microsoft...
io l'ho intesa così!
Ah cavolo mi sa che avevo sbagliato a scrivere la sottoquery....così forse potrebbe andare...
SELECT i.Matr
FROM Progetti p, Impiegati i, Assegnamento a
WHERE i.Matr=a.Matr AND p.CodP=a.CodP AND budget>='50000' AND p.Nome='Microsoft'
GROUP BY Matr
HAVING COUNT (CodP)=(SELECT COUNT (CodP) FROM Progetti
WHERE Nome='Microsoft');
Originally posted by ARIEL
Ah cavolo mi sa che avevo sbagliato a scrivere la sottoquery....così forse potrebbe andare...
SELECT i.Matr
FROM Progetti p, Impiegati i, Assegnamento a
WHERE i.Matr=a.Matr AND p.CodP=a.CodP AND budget>='50000' AND p.Nome='Microsoft'
GROUP BY Matr
HAVING COUNT (CodP)=(SELECT COUNT (CodP) FROM Progetti
WHERE Nome='Microsoft');
SELECT DISTINCT impiegati.nome, impiegati.matr, progetti.budget
FROM impiegati, assegnamento, progetti
WHERE impiegati.matr = assegnamento.matr AND progetti.nome = 'microsoft' AND progetti.budget >= 500000
GROUP BY progetti.budget, impiegati.nome, impiegati.matr
HAVING count(impiegati.matr) = ( SELECT count(assegnamento.matr) AS count
FROM assegnamento, progetti
WHERE assegnamento.cod_progetto = progetti.cod_progetti AND progetti.nome = 'microsoft' AND progetti.budget >= 500000)
cosi' sono certa che va,mi sono creata apposta il db per provare le varie query^^
![]()
![]()
è talmente contorta che non riesco nemmeno a capirla! Sarà anche che sono fusa, è da stamattina che sto facendo query! ![]()
cmq come avete fatto la query:
Determinare gli impiegati che non sono stati assegnati ad alcun progetto?
@Lijay: se per caso hai tempo puoi provare anche la query:
SELECT i.Matr
FROM Progetti p, Impiegati i, Assegnamento a
WHERE i.Matr=a.Matr AND p.CodP=a.CodP AND budget>='50000' AND p.Nome='Microsoft'
GROUP BY Matr
HAVING COUNT (CodP)=(SELECT COUNT (CodP) FROM Progetti
WHERE Nome='Microsoft');
Tanto per avere la certezza che funziona! Grazie
ma a che ora è domani l'esame e dove si trova???
L'esame di Gestione dell'Informazione si terrà il 22 Febbraio alle ore 14.00 in aula Beta, via Comelico
Originally posted by ARIEL
cmq come avete fatto la query:
Determinare gli impiegati che non sono stati assegnati ad alcun progetto?
@Lijay: se per caso hai tempo puoi provare anche la query:
SELECT i.Matr
FROM Progetti p, Impiegati i, Assegnamento a
WHERE i.Matr=a.Matr AND p.CodP=a.CodP AND budget>='50000' AND p.Nome='Microsoft'
GROUP BY Matr
HAVING COUNT (CodP)=(SELECT COUNT (CodP) FROM Progetti
WHERE Nome='Microsoft');
Tanto per avere la certezza che funziona! Grazie
cmq come avete fatto la query:
Determinare gli impiegati che non sono stati assegnati ad alcun progetto?
io l'ho fatta così
SELECT i.nome
FROM Impiegati i
WHERE i.Matr NOT IN (SELECT i.Matr FROM Impiegati i, Progetti p, Assegnamento a WHERE i.matr=a.matr and p.codP=a.codP)
il concetto che ho cercato di scrivere è cerco gli impiegati che sono stati assegnati a qualche progetto se la matr nn è in qst elenco allora vuol dire che quell'impiegato nn è stato assegnato a nessun progetto
Originally posted by carlinus
cmq come avete fatto la query:
Determinare gli impiegati che non sono stati assegnati ad alcun progetto?
io l'ho fatta così
SELECT i.nome
FROM Impiegati i
WHERE i.Matr NOT IN (SELECT i.Matr FROM Impiegati i, Progetti p, Assegnamento a WHERE i.matr=a.matr and p.codP=a.codP)
il concetto che ho cercato di scrivere è cerco gli impiegati che sono stati assegnati a qualche progetto se la matr nn è in qst elenco allora vuol dire che quell'impiegato nn è stato assegnato a nessun progetto
nn saprei alla fine l'interragazione è uguale alla sottointerrogazione
Originally posted by tolarian
Cosa ne dite di questa?
SELECT i.matr
FROM impiegati i, progetti p, assegnamento a
WHERE i.matr=a.matr AND a.codP=p.codP AND not exists (SELECT a.matr FROM impiegati i, progetti p, assegnamento a WHERE i.matr=a.matr AND a.codP=p.codP)
GROUP BY i.matr
Quella di carlinus mi sembra corretta.
Richiedo l'elenco di coloro che hanno partecipato a un progetto e poi gli dico che quello che cerco non è in quell'insieme.
sono fuso ormai
cmq in una NOT IN posso mettere una colonna di una select??
dato che di solito è NOT IN (10,20,30) dove 10,20,30 sono i valori che voglio far escludere...
grazie
Si è possibile infatti nelle slide c'è un esempio:
Elencare i titoli dei film di Quentin Tarantino usciti in un anno in cui non sono usciti film di Tim Burton
la soluzione del prof:
SELECT titolo
FROM Film
WHERE regista='Quentin tarantino' AND anno NOT IN (SELECT anno FROM Film WHERE regista='Tim Burton');
anche perche la select mi pare ti vada a scegliere dei valori secondo le condizioni che metti!
Originally posted by ARIEL
Si è possibile infatti nelle slide c'è un esempio:
Elencare i titoli dei film di Quentin Tarantino usciti in un anno in cui non sono usciti film di Tim Burton
la soluzione del prof:
SELECT titolo
FROM Film
WHERE regista='Quentin tarantino' AND anno NOT IN (SELECT anno FROM Film WHERE regista='Tim Burton');
anche perche la select mi pare ti vada a scegliere dei valori secondo le condizioni che metti!
raga io di sql ne so poko ma l'altra parte lo studiato bene.speriamo in bene.ho letto adesso i vostri post...sembrano molto incasinati ed è molto difficile da segurivi.
in boca al lupo per domani!!!!
solo ieri cioè 2 giorni prima del esame sono venuto a conoscenza di un sito ottimo per fare prove per sql.
www.sqlzoo.net
IN BOCA AL LUPO GENTE!!!
solo ieri cioè 2 giorni prima del esame sono venuto a conoscenza di un sito ottimo per fare prove per sql.
www.sqlzoo.net
IN BOCA AL LUPO GENTE!!!
Originally posted by ARIEL
cmq come avete fatto la query:
Determinare gli impiegati che non sono stati assegnati ad alcun progetto?
@Lijay: se per caso hai tempo puoi provare anche la query:
SELECT i.Matr
FROM Progetti p, Impiegati i, Assegnamento a
WHERE i.Matr=a.Matr AND p.CodP=a.CodP AND budget>='50000' AND p.Nome='Microsoft'
GROUP BY Matr
HAVING COUNT (CodP)=(SELECT COUNT (CodP) FROM Progetti
WHERE Nome='Microsoft');
Tanto per avere la certezza che funziona! Grazie
Ah ok mancano gli alias nel group by e nell'having + select....
grazie mille :-)
Determinare gli impiegati che non sono stati assegnati ad alcun progetto:
SELECT impiegati.matr
FROM impiegati
WHERE impiegati.matr NOT IN ( SELECT DISTINCT assegnamento.matr
FROM assegnamento);
nella subquery seleziono tutte le matricole in assegnamento,cioe' ricavo chi è assegnato a qualche progetto;poi gli dico di selezionare le matricole che non stanno nella subquery,cioè coloro che non sono assegnati a nessun progetto.
Per la divisione io ho ragionato cosi':nella subquery seleziono tutti i progetti microsoft con budget maggiore a 50.000 e faccio il count del risultato.Nella query principale invece seleziono gli IMPIEGATI che partecipano a QUALCHE progetto microsoft con budget superiore a 50'000 e faccio il count.Se i due conteggi corrispondono vuol dire che quell'impiegato partecipa a TUTTI i progetti microsoft.
Disfatta...
credo proprio che dovrò rifarlo..troppo poco tempo T_T
Il tempo era davvero poco e l'er era abbastanza lungo e bisognava ragionarci bene...quasi quasi era più facile l'appello scorso -.-' uff solo l'idea che se non si è passati a questo appello bisogna rifare tutto il progetto mi viene male! Tra un paio di settimane sapremo anche se mi sa che per me ci vorrà solo un miracolo 
Il tempo era poco, io mi sono incartato sull'sql e alla fine mi son ritrovato con mezz'ora per fare l'e-r...
A sapere come valuta gli esercizi, magari qualche barlume di speranza c'è ancora, ma non ci conto molto 
L'unica minima speranza è che sia andato male in generale in modo che alza i punteggi..almeno mi han detto che valuta un po' in base all'andamento....
l'esame era fattibilissimo ma lungo davvero...anche io il primo l'ho dovuto fare in mezz'oretta e quindi non ho potuto controllarlo nè impostarlo come avrei dovuto fare..
speriamo di arrivare almeno a 18
io invece sono partito col l' er e quasi senza rendermene conto è passata oltre un' ora, poi ho fatto di corsa il resto temo per l' sql che devo ammettere non era difficile (o, probabile, ho sbagliato le query).
ah, ma a riguardo dell' ER, quali vincoli di integrità avete messo??? (oltre le cardinalità..). o forse non ce n'era bisogno? anche l' altra punto che chiedeva di generare lo schema ristrutturato non aveva molto senso secondo me, non vedo in che modo si potesse generare uno schema non ristrutturato (con ereditarietà e attributi multipli)
Originally posted by dvr
ah, ma a riguardo dell' ER, quali vincoli di integrità avete messo??? (oltre le cardinalità..). o forse non ce n'era bisogno? anche l' altra punto che chiedeva di generare lo schema ristrutturato non aveva molto senso secondo me, non vedo in che modo si potesse generare uno schema non ristrutturato (con ereditarietà e attributi multipli)
__________________
http://profile.mygamercard.net/ZAKx84
| All times are GMT. The time now is 22:16. | Show all 119 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.