![]() |
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)
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 ![]()
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.. ![]()
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
...
confermo che sia una dimenticanza....
ah bene quindi il primo dubbio è andato ![]()
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?
credo di sì.. io l'* per indicare che un attributo può essere nullo nel relazionale l'ho scoperto 10 minuti fa .
..
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ù...
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 ![]()
Domani dalle 10.30 circa iniziamo a farne un po ![]()
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?
Originally posted by Spr1gg4N
ah bene quindi il primo dubbio è andato
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?

__________________
...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)
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?
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?
si...anch'io l'ho pensata cosi 
__________________
...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)
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?
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)))
code:
((∏ Nr.Telefono ORDINE) - (∏ Nr.Telefono ( σ data = 'gennaio 2006' ORDINE))) * (∏ Nr.Telefono, Nome CLIENTE)
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;
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);
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
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 (
) va bene la la query?
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
nu che hanno fatto ordini ad almeno due operatori diversi
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..
il reverse engineering io l'ho fatto così:

che ne dite?
scusate la qualità ma non avevo voglia di rifarlo a computer..![]()
io l'ho fatto esattamente come te ![]()
ciao ragazzi volevo chiedervi un info... perchè questo confronto?
o1.codice_operatore <> o2.codice_operatore
non l'ho capito!
__________________
..fortunato io...
no ok ok... avevo letto male la richiesta del prof..
__________________
..fortunato io...
l'esercizio 2 dell'appello del 10 aprile2006 lo avete fatto?
__________________
..fortunato io...
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??
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.
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...
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...
l'esercizio 3 di aprile 2006 è identico al vostro...
__________________
..fortunato io...
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.