.dsy:it.
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)


Posted by dvr on 24-01-2008 10:16:

esami perlasca 06/07

ho trovato solo esami relativi all' edizione 05/06 (quelli fatti insieme a mazzoleni) :sad: di quella corrente non c'è nulla?

chi li ha già fatti in passato ricorda qualcosa?


Posted by LiJay on 25-01-2008 12:52:

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


Posted by WillyWonka on 25-01-2008 14:20:

domanda sull'es 3: le chiavi sono AB, AC e AD, R è in 3nf, ma è anche in BCNF?


Posted by WillyWonka on 25-01-2008 15:16:

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?


Posted by j'sòd'bààr on 25-01-2008 15:18:

potete anche mettere le soluzioni degli altri esercizi?

grazie!!!


Posted by ARIEL on 25-01-2008 16:46:

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:Pnome(Scittà=’londra’(Musei))
R2: Pnome(Scittà=’londra’ and artista<>’leonardo’(Musei|><|nome=museoOpere))
R1-R2


Posted by ARIEL on 25-01-2008 17:02:

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


Posted by ARIEL on 25-01-2008 17:25:

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


Posted by ARIEL on 26-01-2008 09:28:

Altre correzioni che ho trovato(purtroppo le avevo fatte su carta e nel ricopiarle mi sono persa dei pezzi :P ):

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;


Posted by WillyWonka on 26-01-2008 09:34:

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


Posted by j'sòd'bààr on 26-01-2008 09:42:

ma una chiave primaria non può essere null

nella query 5 di arial è null:... p.Personaggio IS NULL

chi mi spiega?

grazie


Posted by ARIEL on 26-01-2008 10:11:

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?


Posted by j'sòd'bààr on 26-01-2008 10:17:

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


Posted by ARIEL on 26-01-2008 10:20:

giusto questo penso potrebbe andare!


Posted by WillyWonka on 26-01-2008 12:37:

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


Posted by LiJay on 26-01-2008 13:10:

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 :-D


Posted by LiJay on 26-01-2008 13:19:

in ogni caso la normalizzazione non mi entra in testa -.-'


Posted by WillyWonka on 26-01-2008 14:18:

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;


Posted by WillyWonka on 26-01-2008 14:25:

l’algebra verrebbe:

πnome(πmuseo(σcittà=’Londra’(MUSEO)) >< σartista=’Leonardo’(OPERE))


Posted by ARIEL on 26-01-2008 15:03:

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


Posted by WillyWonka on 26-01-2008 16:18:

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


hai perfettaemtne ragione!Non ci avevo proprio pensato..


Posted by LiJay on 27-01-2008 15:10:

scusate ma anche qui vi è il salto d'appello se si prende meno di 8?questa cosa mi mette una paura..


Posted by escanor on 27-01-2008 15:13:

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


Basta che ti ritiri prima di consegnare per evitare il salto di appello,se non sei sicuro di quanto hai fatto....;)


Posted by LiJay on 27-01-2008 15:13:

eh lo so ma essendo il penultimo appello non saro' mai sicura di cio' che faròxD


Posted by escanor on 27-01-2008 15:15:

Originally posted by LiJay
eh lo so ma essendo il penultimo appello non saro' mai sicura di cio' che faròxD


Bhè io mi rendero' conto se ho fatto schifo...e in quel caso pur di non saltare l'appello di febbraio mi ritiro eccome...:D


Posted by LiJay on 27-01-2008 15:20:

se penso che il progetto che ho quasi finito potrebbe non valermi piu'....mammaaaa!


Posted by ARIEL on 27-01-2008 16:31:

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


Posted by Melodiaz on 27-01-2008 16:32:

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


Posted by ARIEL on 27-01-2008 16:39:

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ì!


Posted by Melodiaz on 27-01-2008 16:46:

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ì!


vediamo se ho capito ad esempio
x(0)= AC
C---->D quindi ho ACD
AD--->B quindi ho ABCD
AB--->E quindi ho ABCDE
AC---F quindi ho ABCDEF

siccome ho tutto lo schema iniziale AC e' chiave corretto?


Posted by ARIEL on 27-01-2008 16:47:

si giusto


Posted by Melodiaz on 27-01-2008 16:49:

mi stai illuminando di immenso lo sai? DXDX


Posted by ARIEL on 27-01-2008 16:51:

:-D 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!


Posted by WillyWonka on 27-01-2008 17:06:

idem per le query..l'er mi preoccupa meno..


Posted by ARIEL on 27-01-2008 17:14:

Voi come vi siete preparati per l'esame?


Posted by WillyWonka on 27-01-2008 17:18:

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?


Posted by ARIEL on 27-01-2008 17:45:

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 :-(


Posted by Melodiaz on 27-01-2008 18:21:

io e la logica siamo come io e l'australia...anni luce di distanza


Posted by escanor on 27-01-2008 18:31:

Originally posted by Melodiaz
io e la logica siamo come io e l'australia...anni luce di distanza


Allora sei pronto per domani....:D
Io se solo penso al fatto che avevo già passato la teoria con valle e mi tocca rifarla in questo "modo" è meglio che mi spari...:D


Posted by Melodiaz on 27-01-2008 18:41:

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


Posted by ARIEL on 27-01-2008 19:03:

si esatto e continui finchè le finisci e poi passi a 3 attributi che si verificano facilmente (attenzione alle superchiavi)...


Posted by LiJay on 27-01-2008 20:32:

Una domanda...voi una divisione come la esprimete in sql?
mi riferisco alla terza interrogazione a pagina 182 del libro.


Posted by dvr on 27-01-2008 22:44:

ragazzi, qualcuno può postare domani l' esame? io non potrò esserci :(


Posted by LiJay on 28-01-2008 12:16:

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


Posted by dvr on 28-01-2008 12:26:

grazie lijay, davvero utile :)
ma chi scriveva su questo forum che i trigger non ci sarebbero stati :?


Posted by WillyWonka on 28-01-2008 14:24:

era bello difficile oggi!io nn ho fatto il trigger..


Posted by ARIEL on 28-01-2008 15:51:

L'esame era bello tosto...cmq qualcuno può postare la soluzione dello schema er? Grazie


Posted by Kardo on 29-01-2008 16:49:

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?


Posted by ARIEL on 31-01-2008 08:18:

upppppp! Qualcuno può postare le sue soluzioni dell'esame per favore?
Grazie


Posted by LiJay on 31-01-2008 13:03:

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 =_=.


Posted by Melodiaz on 03-02-2008 17:40:

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


Posted by Kardo on 04-02-2008 11:24:

Qualcuno gentilmente può delucidarmi sulla questione del trigger? :?


Posted by LiJay on 07-02-2008 14:39:

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


Posted by el-mundo on 18-02-2008 14:49:

scusate ma perchè aggiungere le lettere? ad esempio a.matr oppure p.cod.

perchè ce ne sono diversi? cioè in più relazioni?


Posted by roberto85 on 19-02-2008 13:43:

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?


Posted by roberto85 on 19-02-2008 14:51:

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?


Le lettere si riferiscono precisamente a

progetti per quanto riguarda p
e
assegnamento per quanto riguarda a

vengono utilizzate semplicemente per dare la possibilità di non riscrivere tutte le volte progetti.codP oppure assegnamento.codP, etcc...

Le lettere vengono utilizzate anche per poter fare le query correlate!

:)


Posted by roberto85 on 19-02-2008 16:01:

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


Posted by ARIEL on 20-02-2008 11:05:

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


Posted by Kardo on 20-02-2008 11:45:

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%


Posted by roberto85 on 20-02-2008 12:05:

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%


Ah già, mi sono sbagliato non è in 3NF!

Per quanto riguarda la scomposizione come si fanno ad avere le 4 relazioni? che procedimenti avete fatto?


Posted by ARIEL on 20-02-2008 12:12:

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.


Posted by roberto85 on 20-02-2008 13:33:

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.


Ah ok perfetto! Andrò a vedere le slide! Grazie mille per le spiegazioni!

Per quanto riguardano le query 2 e 3 le sapete fare? io le ho fatte ma non sono sicuro che sono giuste!!


Posted by roberto85 on 20-02-2008 14:31:

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


Posted by tolarian on 20-02-2008 14:57:

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


Posted by Kardo on 20-02-2008 17:32:

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


Posted by Melodiaz on 20-02-2008 18:08:

scusate qualcuno potrebbe postare lo schema er corretto dell'appello di gennaio? ho ancora qualche dubbio a proposito...

THX


Posted by tolarian on 20-02-2008 20:21:

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


Sì hai ragione sul natural join ... e anche sull'uso dell'having...dato che mi confondo sempre, dato che dopo il where non si possono usare i COUNT o i SUM, mentre dopo l'having sì...

tnx


Posted by roberto85 on 20-02-2008 20:40:

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


Posted by Kardo on 20-02-2008 21:42:

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.


Posted by roberto85 on 20-02-2008 22:31:

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


Posted by roberto85 on 20-02-2008 22:33:

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?


Posted by Kardo on 20-02-2008 23:14:

Il trigger mi sembra giusto.
Per la query :

bisognerebbe fare (current date () - data) DAY


Intendevo proprio quello, penso sia giusto così.

La query 3 a me viene:

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


Posted by ARIEL on 21-02-2008 08:31:

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.


Posted by ARIEL on 21-02-2008 09:19:

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


Posted by roberto85 on 21-02-2008 09:24:

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.


ah ora ho capito, allora si se per ogni giorno viene fatta una tupla di assegnamento allora basta il count per tenere traccia dei giorni per ogni progetto


Posted by roberto85 on 21-02-2008 09:33:

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?


Il group by funziona solamente se si mettono tutti i campi che ci sono nella select, sulle slide del prof nella categoria funzioni di raggruppamento c'è proprio un esempio a rigardo!


Posted by ARIEL on 21-02-2008 09:40:

C'era anche la query:

Determinare gli impiegati che non sono stati assegnati ad alcun progetto


Posted by Melodiaz on 21-02-2008 10:48:

Originally posted by Melodiaz
scusate qualcuno potrebbe postare lo schema er corretto dell'appello di gennaio? ho ancora qualche dubbio a proposito...

THX


mi autoquoto sperando che qualche anima pia mi risponda...grassie


Posted by ARIEL on 21-02-2008 11:08:

purtroppo penso che lo schema corretto non ce l'abbia nessuno!


Posted by Melodiaz on 21-02-2008 11:25:

nooooooo...va beh iniziero' a strapparmi i capelli per domani...ormai a causa di sto esame sto diventando pelato


Posted by ARIEL on 21-02-2008 11:26:

perchè invece non provi a postare i tuoi dubbi? magari qualcuno può risponderti ugualmente...


Posted by ARIEL on 21-02-2008 12:54:

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


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


Posted by tolarian on 21-02-2008 13:53:

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

Non la capisco molto l'ultima riga...
4)determinare gli impiegati che sono stati aseegnati a tutti i progetti microsoft avente budget di almeno 500000 euro -->vuol dire di trovare gli impiegati che lavorano in tutti i progetti microsoft con un budget >= 500000 oppure trovare tutti gli impiegati che lavorano in progetti microsoft con un budget >= 500000 ???

cmq con l'having che hai scritto non risolveresti: impiegati.nome è sicuramente il nome dell'impiegato, mentre come controllo tu conteggi le matricole che lavorano in progetti microsoft >=500000 però la query tiene anche conto di quelli che lavorano in almeno uno di questi progetti...
quindi io ho scritto la query per la 2° mia ipotesi :)

Ecco quello che ho fatto io...

Es.2

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

1)SELECT p.codP, SUM(a.numore), COUNT(a.data)
FROM progetti p, assegnamento a, impiegati i
WHERE a.matr=i.matr AND p.codP=a.codP AND i.matr=’1234’
GROUP BY p.codP

2)SELECT matr, competenza
FROM competenze
GROUP BY competenza, matr
HAVING COUNT(c.competenza)=1

3)SELECT i.nome, p.matrResponsabile
FROM impiegati i, competenze c, progetti p, assegnamento a
WHERE i.matr=c.matr AND c.matr=p.matrResponsabile AND a.codP=p.codP AND a.matr=i.matr
GROUP BY i.nome, p.matrResponsabile
HAVING COUNT(c.competenze) > 4

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

Es.3

AB-->E
AE-->F
AD-->B
C-->D

A destra non compare mai A e C ... quindi fanno parte della chiave;

AC-->ACD-->ABCD-->ABCDE-->ABCDEF è chiave

non è in 3NF e neanche in BCNF

ora faccio anche il resto...

PS se ho sbagliato qualcosa ditemelo ;)


Posted by tolarian on 21-02-2008 13:57:

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.


mi potresti inviare via pm sia il link che lo usr e psw delle slide???

grazie


Posted by Kardo on 21-02-2008 14:20:

Doppio post. Sorry.


Posted by Kardo on 21-02-2008 14:21:

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


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.


Posted by tolarian on 21-02-2008 14:49:

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.

mi potete dare il link delle slide per piacere?

grazie


Posted by ARIEL on 21-02-2008 15:00:

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ì!


Posted by tolarian on 21-02-2008 15:16:

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ì!


lo so, però nn penso possa funzionare

HAVING COUNT (Matr)=(SELECT COUNT (Matr) FROM Impiegati
WHERE Nome='Microsoft');

dato che conteggia le matricole sopra citate e fa un eguaglianza al conteggio di tutti gli impiegati che si chiamano Microsoft (perchè fai From impiegati Where nome='Microsoft') ... avrebbe più senso fare FROM progetti Where nome='Microsoft' ma calcoleresti tutte le persone che lavorano ad almeno un progetto microsoft ... se sto dicendo vaccate ditemelo :)


Posted by ARIEL on 21-02-2008 15:32:

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


Posted by carlinus on 21-02-2008 16:36:

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


pure io l'ho fatta così e penso che sia giusta perchè conta il codP di un impiegato che ha partecipato a progetti microsoft con 500000 di budget se qst è uguale al numero tot di codp dei progetti progetti microsoft con 500000 di budget allora restituisce l'impiegato


Posted by LiJay on 21-02-2008 16:37:

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


Posted by ARIEL on 21-02-2008 16:41:

:shock::shock::shock: è talmente contorta che non riesco nemmeno a capirla! Sarà anche che sono fusa, è da stamattina che sto facendo query! :cry:


Posted by ARIEL on 21-02-2008 16:44:

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


Posted by zyx on 21-02-2008 16:52:

ma a che ora è domani l'esame e dove si trova???


Posted by ARIEL on 21-02-2008 16:53:

L'esame di Gestione dell'Informazione si terrà il 22 Febbraio alle ore 14.00 in aula Beta, via Comelico


Posted by tolarian on 21-02-2008 16:57:

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


direi che manca l'ultimo pezzo

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' AND budget>='50000');


Posted by carlinus on 21-02-2008 17:00:

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



Posted by tolarian on 21-02-2008 17:03:

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


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


Posted by carlinus on 21-02-2008 17:07:

nn saprei alla fine l'interragazione è uguale alla sottointerrogazione


Posted by ARIEL on 21-02-2008 17:12:

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




Non so però nella prima select già colleghi le matricole di Impiegati con Assegnamento mentre se un impiegato non ha progetti assegnati la sua matricola non compare


Posted by Kardo on 21-02-2008 17:22:

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.


Posted by tolarian on 21-02-2008 17:46:

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


Posted by ARIEL on 21-02-2008 17:53:

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!


Posted by tolarian on 21-02-2008 17:57:

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!


ottimo...grazie


Posted by altin on 21-02-2008 17:59:

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


Posted by altin on 21-02-2008 18:00:

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


Posted by altin on 21-02-2008 18:29:

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


Posted by LiJay on 22-02-2008 08:43:

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



mi da' insieme vuoto...O_O

non mi hai messi gli alias per matricola e codp,ti posto come l'ho scritto

SELECT i.Matr
FROM Progetti p, Impiegati i, Assegnamento a
WHERE i.Matr=a.Matr AND p.cod_progetti=a.cod_progetto AND budget>='50000' AND p.Nome='Microsoft'
GROUP BY i.Matr
HAVING COUNT (cod_progetti)=(SELECT COUNT (cod_progetti) FROM Progetti
WHERE Nome='Microsoft');


Posted by ARIEL on 22-02-2008 08:46:

Ah ok mancano gli alias nel group by e nell'having + select....
grazie mille :-)


Posted by LiJay on 22-02-2008 08:51:

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.


Posted by LiJay on 22-02-2008 15:32:

Disfatta...
credo proprio che dovrò rifarlo..troppo poco tempo T_T


Posted by ARIEL on 22-02-2008 16:55:

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 :(


Posted by Kardo on 22-02-2008 17:09:

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 :(


Posted by ARIEL on 22-02-2008 17:12:

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


Posted by LiJay on 22-02-2008 19:07:

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


Posted by dvr on 22-02-2008 20:06:

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


Posted by dvr on 22-02-2008 20:11:

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)


Posted by zak84 on 27-02-2008 10:15:

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)

ma praticamente nessuno... a parte cose ovvie (che durante il progetto mi hanno detto di mettere cmq). io ho creato il non restrutturato, ma mettendo tipo di danno meccanico o carrozzeria, come figli di riparazione..... cose così

__________________
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.