.dsy:it.
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Basi di dati ~ informatica triennale (http://www.dsy.it/forum/forumdisplay.php?forumid=211)
-- dubbio su esercizio E-R (http://www.dsy.it/forum/showthread.php?threadid=39756)


Posted by Spr1gg4N on 15-01-2010 11:18:

dubbio su esercizio E-R

Ciao ragazzi, spero che qualcuno possa essermi di aiuto...sto guardando un po di esercizi nei temi d'esame passati e non mi è chiara una cosa: nell'esercizio sottostante, per esempio, come faccio a determinare che tipo di cardinalità ha l'associazione R1 al lato destro?



E, un'altra cosa, per l'associazione R2 come faccio a scegliere quale delle due opzioni preferire:
1) mettere A11 come chiave esterna in E2
2) mettere A21 e A22 come chiave esterna in E1

grazie in anticipo per le risposte :D


Posted by dieguito on 15-01-2010 17:42:

sembra più una dimenticanza nel testo dell'esrcizio, ma da qualche parte avevo letto che la cardinalità di default è 0,N..

e poi io metterei in E1 come fk A21 e A22, perchè la relazione R2 è 1 a N e quindi la chiave esterna va aggiunta alla relazione con cardinalità max = 1..
Però non sono sicurissimo.. :D

Se ti può interessare, qua la traduzione da ER a relazionale è spiegata abbastanza bene:
http://www.di.unito.it/~damiani/DID...nfoApp66-78.pdf

E cmq aspetto conferma da qualcuno con le idee più chiare :D ...


Posted by carlo88 on 15-01-2010 18:18:

confermo che sia una dimenticanza....


Posted by Spr1gg4N on 15-01-2010 19:31:

ah bene quindi il primo dubbio è andato :D
Si, cmq dieguito anche io avevo pensato la stessa cosa riguardante il punto 2...inoltre io mettere la fk (A21,A22) con l'asterisco (*) che sta ad indicare che puo' essere nulla dato che la cardinalità minima è = 0
Voi che dite?


Posted by dieguito on 15-01-2010 20:45:

credo di sì.. io l'* per indicare che un attributo può essere nullo nel relazionale l'ho scoperto 10 minuti fa .:D ..
come avete risolto gli esercizi di algebra relazionale dello stesso tema d'esame?
magari possiamo confrontare le soluzioni.. questi sono gli esercizi che mi preoccupano di più...


Posted by Spr1gg4N on 15-01-2010 20:53:

guarda altri esercizi di quel tema d'esame non li ho fatti e ora sono abbastanza cotto...
ma domani mi becco online con altri per fare un po di esercizi, volendo ci si puo beccare su una chat oppure fare un wave....oppure scriviamo man mano le soluzioni qui sopra :D
Domani dalle 10.30 circa iniziamo a farne un po :D


Posted by dieguito on 16-01-2010 14:11:

Come avete risolto il primo esercizio di algebra relazionale del tema del 10/4/2006? io fatto l'intersezione tra l'insieme dei numeri di telefono di quelli che avevano ordinato pizza margherita e l'insieme di quelli che avevano ordinato pizza marinara.. Secondo voi può andare?


Posted by morbido007 on 16-01-2010 21:30:

Originally posted by Spr1gg4N
ah bene quindi il primo dubbio è andato :D
Si, cmq dieguito anche io avevo pensato la stessa cosa riguardante il punto 2...inoltre io mettere la fk (A21,A22) con l'asterisco (*) che sta ad indicare che puo' essere nulla dato che la cardinalità minima è = 0
Voi che dite?


Ma gli attributi A21 e A22 vanno messi in E1 due volte?? cioè una per la traduzione di R1 e un'altra per la traduzione di R2?:pensa:

__________________
...e la mia giustizia calerà sopra di loro con grandissima vendetta e furiosissimo sdegno su coloro che si proveranno ad ammorbare ed infine a distruggere i miei fratelli. E tu saprai che il mio nome è quello del Signore quando farò calare la mia vendetta sopra di te (Ezechiele 25.17)


Posted by Spr1gg4N on 17-01-2010 08:37:

Originally posted by dieguito
Come avete risolto il primo esercizio di algebra relazionale del tema del 10/4/2006? io fatto l'intersezione tra l'insieme dei numeri di telefono di quelli che avevano ordinato pizza margherita e l'insieme di quelli che avevano ordinato pizza marinara.. Secondo voi può andare?

ieri alla fine abbiamo fatto altri esercizi...oggi magari mi metto a fare quel tema di esame e ti faccio sapere.


Ma gli attributi A21 e A22 vanno messi in E1 due volte?? cioè una per la traduzione di R1 e un'altra per la traduzione di R2?

Io penso di sì: per R1 metterei fk (A21,A22) e per R2 fk(A21,A22)*


Posted by morbido007 on 17-01-2010 09:39:

si...anch'io l'ho pensata cosi :approved:

__________________
...e la mia giustizia calerà sopra di loro con grandissima vendetta e furiosissimo sdegno su coloro che si proveranno ad ammorbare ed infine a distruggere i miei fratelli. E tu saprai che il mio nome è quello del Signore quando farò calare la mia vendetta sopra di te (Ezechiele 25.17)


Posted by Spr1gg4N on 17-01-2010 15:37:

Originally posted by dieguito
Come avete risolto il primo esercizio di algebra relazionale del tema del 10/4/2006? io fatto l'intersezione tra l'insieme dei numeri di telefono di quelli che avevano ordinato pizza margherita e l'insieme di quelli che avevano ordinato pizza marinara.. Secondo voi può andare?


anche io ho fatto così:

1)

code:
∏ Nr.Telefono(∏ Nr.Telefono( ∏ Codice-Pizza( σ nome = 'margherita' PIZZA ) * (∏ Nr.Telefono, Codice-Pizza ORDINE)) ∩ ∏ Nr.Telefono(∏ Nr.Telefono( ∏ Codice-Pizza( σ nome = 'marinara' PIZZA ) * (∏ Nr.Telefono, Codice-Pizza ORDINE)))


2)
code:
((∏ Nr.Telefono ORDINE) - (∏ Nr.Telefono ( σ data = 'gennaio 2006' ORDINE))) * (∏ Nr.Telefono, Nome CLIENTE)


Posted by Spr1gg4N on 17-01-2010 15:54:

Per quanto riguarda le SELECT dello stesso testo di esame come avete fatto? Io così ma nn sono tanto convinto della seconda:

1)

code:
SELECT Codice-Pizza, Codice-Operatore, SUM(Costo) FROM Ordine GROUP BY Codice-Pizza, Codice-Operatore;


2)
code:
SELECT Nome FROM Cliente WHERE Nr.Telefono IN ( SELECT Nr.Telefono, COUNT DISTINCT(Codice-Operatore) FROM Ordine GROUP BY Nr.Telefono HAVING COUNT DISTINCT(Codice-Operatore) >= 2);


Posted by number15 on 17-01-2010 18:24:

Nella seconda devi levare la count nella select della subquery, perché oltre a non servirti, fa fallire la query, perché vuole ci dev'essere un solo campo nella select.

Ps: la sintassi della count distinct è: COUNT(DISTINCT campo)

__________________
Portale segnalazioni marchi-negozi di abbigliamento
http://www.ovojo.com


Posted by Spr1gg4N on 17-01-2010 18:38:

si hai ragione infatti avevo il dubbio che desse errore "too many columns".... ma togliendo il count dalla select e, ovviamente, mettendo la count distinct con la sintassi corretta (:D) va bene la la query?


Posted by number15 on 17-01-2010 21:01:

Non ho il testo davanti, ma deduco tu voglia estrarre i nomi delle persone che hanno effettuato 2 o più ordini... in tal caso è corretta.

__________________
Portale segnalazioni marchi-negozi di abbigliamento
http://www.ovojo.com


Posted by Spr1gg4N on 17-01-2010 21:11:

nu che hanno fatto ordini ad almeno due operatori diversi


Posted by dieguito on 18-01-2010 00:02:

io la seconda query sql l'ho fatta così:

SELECT c.nome
FROM cliente c, ordine o1
WHERE o1.nr_telefono=c.nr_telefono
AND EXISTS(SELECT *
FROM ordine o2
WHERE o1.nr_telefono=o2.nr_telefono
AND
o1.codice_operatore <> o2.codice_operatore)

e la prima invece l'ho fatta come Spr1gg4n; le ho provate entrambe e funzionano...
Domattina se riesco posto la soluzione dell'inverse engineering così le confrontiamo..


Posted by dieguito on 18-01-2010 09:33:

il reverse engineering io l'ho fatto così:

che ne dite?
scusate la qualità ma non avevo voglia di rifarlo a computer..:D


Posted by Spr1gg4N on 18-01-2010 10:16:

io l'ho fatto esattamente come te :D


Posted by stenofa on 18-01-2010 11:02:

ciao ragazzi volevo chiedervi un info... perchè questo confronto?

o1.codice_operatore <> o2.codice_operatore

non l'ho capito!

__________________
..fortunato io...


Posted by stenofa on 18-01-2010 11:04:

no ok ok... avevo letto male la richiesta del prof..

__________________
..fortunato io...


Posted by stenofa on 18-01-2010 13:11:

l'esercizio 2 dell'appello del 10 aprile2006 lo avete fatto?

__________________
..fortunato io...


Posted by dieguito on 18-01-2010 16:40:

ragazzi ma questo esercizio come le fareste?


a me verrebbe da mettere:
1) 1:N e 3:N
2) 1:N e 1:6
3) 1:10 e 1:2

ma sembra una boiata pazzesca.. anche perchè non ho mai visto delle cardinalità simili.. saranno tutti 1:N??


Posted by Spr1gg4N on 18-01-2010 16:59:

secondo me è così:
1) 1:N e 3:N
2) 0:N e 0:6 (perchè dice "possono" e non "devono")
3) 1:10 e 2:2 (perchè dice che ogni articolo "deve" avere due esperti)

io in questi casi li leggo come, ad esempio la terza:
"Un esperto revisiona da 1 a 10 articoli e un articolo viene revisionato da un minimo di 2 ad un max di due esperti"

però nn so se sbaglio...
cmq sì, in realtà le cardinalità > 1 diventano un generico N ma in un esercizio come questo credo sia giusto mettere numeri come 10,2 o 6 se sono specificati nel testo.


Posted by stenofa on 18-01-2010 17:44:

anche io lo farei così, mi rimane un dubbio sulla 3a richiesta

perchè non 0:10 e 2:2
se nel punto 2 mettiamo 0:N e ci scrive possono revisionare, nel 3 scrive un esperto revisiona non più di 10 articoli, ma potrebbe farne anche 0. no?

__________________
..fortunato io...


Posted by Spr1gg4N on 18-01-2010 18:10:

eh si in effetti anche io ho questo dubbio...se ci fosse stato scritto espressamente "un esperto potrebbe revisionare al più 10 articoli" sarei sicuro sul 0:N ma così nn saprei...


Posted by stenofa on 19-01-2010 08:32:

l'esercizio 3 di aprile 2006 è identico al vostro...

__________________
..fortunato io...


Posted by lferri469 on 30-03-2011 13:54:

vi volevo chiedere un info perche sono un attimo in crisi :)
volevo chiedervi nel caso in cui avessi un associazione ternaria nel quale tre entita puntano alla stessa relazione, è possibile piu che possibile dire corretto associare secondo voi l'id di tale relazione (che a livello di sql verrebbe trasformata in tabella contenente le chiavi primarie delle entità) come FOREIGN KEY in una delle entità associate?
non so se mi sono spiegato...
ciao e grazie a tutti


All times are GMT. The time now is 17:00.
Show all 28 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.