 | |
Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum |
dubbio su esercizio E-R Clicca QUI per vedere il messaggio nel forum |
Spr1gg4N |
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 |
dieguito |
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 ... |
carlo88 |
confermo che sia una dimenticanza.... |
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? |
dieguito |
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ù... |
Spr1gg4N |
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 |
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? |
morbido007 |
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: |
Spr1gg4N |
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)* |
morbido007 |
si...anch'io l'ho pensata cosi :approved: |
Spr1gg4N |
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)
|
Spr1gg4N |
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);
|
number15 |
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) |
Spr1gg4N |
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? |
number15 |
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. |
Spr1gg4N |
nu che hanno fatto ordini ad almeno due operatori diversi |
dieguito |
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.. |
dieguito |
il reverse engineering io l'ho fatto così:

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