.dsy:it. Pages (5): « 1 2 3 [4] 5 »
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)
-- Soluzione Appelli Castano (http://www.dsy.it/forum/showthread.php?threadid=37060)


Posted by Gimmy on 17-01-2009 18:04:

Ragazzi sto facendo gli esercizi di algebra relazionale dei temi d'esame, chi di voi è così gentile da dirmi cosa ne pensa? :D


12 luglio 2005
perche nella prima fai una sottrazione? non basta fare una proiezione+selezione(costo<500) da manutenzione?

14 giugno 2005
nella prima io ho usato una left outer join fra percorrenza e treno, di modo da far saltar fuori i valori nulli...

10 aprile 2006
nella seconda non è possibile fare una selezione(data <> '2006-01')?

poi volevo chiedere, è possibile usare un carattere per sottointenderne un gruppo? per esempio in quest'ultimo esercizio scrivere: selezione(data <> '2006-01-%') di modo da raggruppare tutti i giorni di gennaio e di sonseguenza tutto il mese?


Posted by Gimmy on 17-01-2009 18:07:

Originally posted by R1cky`
Io credo che visto che non ci sono attributi opzionali nelle chiavi esterne tutte le le entità hanno la partecipazione obbligatoria all'associazione alle rispettive associazioni. O no?


bo, dipende molto dalle entità in gioco, cmq il tuo ragionamento è giusto anche se nell'esercizio non specifica la presenza o meno di valori nulli degli attrbuti.
Cmq penso che le cardinalità minime in questo caso abbiamo un ruolo marginale in un esercizio del genere... l'importante credo sia capire se sono uno a uno, uno a molti o molti a molti...


Posted by R1cky` on 17-01-2009 18:16:

Originally posted by Gimmy
12 luglio 2005
perche nella prima fai una sottrazione? non basta fare una proiezione+selezione(costo<500) da manutenzione?


Non credo perchè in questo modo tiri fuori anche quelli che in un'altra operazione di manutenzione hanno speso più di 500.

Originally posted by Gimmy
14 giugno 2005
nella prima io ho usato una left outer join fra percorrenza e treno, di modo da far saltar fuori i valori nulli...


Non è che puoi scrivermela? L'idea è giusta però non capisco come dopo che hai fatto il left join togli quelli che percorrono delle linee.

Originally posted by Gimmy

10 aprile 2006
nella seconda non è possibile fare una selezione(data <> '2006-01')?

poi volevo chiedere, è possibile usare un carattere per sottointenderne un gruppo? per esempio in quest'ultimo esercizio scrivere: selezione(data <> '2006-01-%') di modo da raggruppare tutti i giorni di gennaio e di sonseguenza tutto il mese?


Penso di si, ma non credo sia un problema come tu scrivi il confronto. Per formulare un' espressione sulla data bisognerebbe sapere come è memorizzata, ma visto che non è specificato uno fa come vuole :asd:


Posted by Gimmy on 17-01-2009 18:35:

Non credo perchè in questo modo tiri fuori anche quelli che in un'altra operazione di manutenzione hanno speso più di 500.


eh infatti, ma nel testo non dice di prendere solo quello con manutenzione meno costosa, cioè non c'è nessula clausula

Non è che puoi scrivermela? L'idea è giusta però non capisco come dopo che hai fatto il left join togli quelli che percorrono delle linee.


in pratica ho fatto una left outer join fra percorrenza e treno, prioettando su treno codice e tipo, e su percorrenza cf,id-treno e citta, poi sul risultato del join una selezione con nomelina= NULL e infine una proiezione su id-treno e tipo.

Penso di si, ma non credo sia un problema come tu scrivi il confronto. Per formulare un' espressione sulla data bisognerebbe sapere come è memorizzata, ma visto che non è specificato uno fa come vuole :asd:


eh infatti perche in genere la data e memorizzata con date che ha protocollo yyyy-mm-dd, quindi volevo sapere se era sintatticamente giusto scrivere % per indicare un qualsiasi carattere...


Posted by R1cky` on 17-01-2009 23:08:

eh infatti, ma nel testo non dice di prendere solo quello con manutenzione meno costosa, cioè non c'è nessula clausula


come no scusa? Il testo dice di "trovare il codice dei dispositivi hw che non hanno subito manutenzioni con costo superiore a 500" credo significhi "trovare il codice dei dispositivi il cui prezzo di tutte le manutenzioni effettuate è inferiore a 500", e difatti la mia espressione da proprio quello: prende quelli che hanno fatto manutenzioni con prezzo inferiore, poi toglie gli stessi che hanno fatto anche manutenzioni da più di 500.

in pratica ho fatto una left outer join fra percorrenza e treno, prioettando su treno codice e tipo, e su percorrenza cf,id-treno e citta, poi sul risultato del join una selezione con nomelina= NULL e infine una proiezione su id-treno e tipo.


Dovrebbe funzionare... diciamo che l'abbiama pensata in modo diverso :)


Posted by irene on 18-01-2009 09:11:

grande Ricky, hai ragione, vengono cancellate anche le righe
Neri verdi A R 45 Y
Marroni Neri A R 75 N
avevo guardato un esercizio del prof e all'inizio cancella solo la riga incriminata, invece... ho guardato l'esercizio sulla sicurezza disponibile su dsy, e la tabella viene aggiornata cancellando tutte le righe necessarie.

per l'esercizio di reverse eng. ho messo cardinalita' 1..n perche' nella traccia non metteva nessuna limitazione... 0..n, 1..n in questo caso non fa differenza.

continuo a fare esercizi per l'esame... magari ci sentiamo piu' tardi se sei loggato.

Buona domenica.


Posted by R1cky` on 18-01-2009 11:33:

Originally posted by irene
grande Ricky, hai ragione, vengono cancellate anche le righe
Neri verdi A R 45 Y
Marroni Neri A R 75 N


E' stato Gimmy a suggerirtelo, non mi prendo meriti altrui :asd:
Anche perchè non avevo visto che c'era da riscrivere la tabella aggiornata, io mi ero limitato a rifare il grado :asd:


Posted by Gimmy on 18-01-2009 11:38:

come no scusa? Il tempo "trovare il codice dei dispositivi hw che non hanno subito manutenzioni con costo superiore a 500" credo significhi "trovare il codice dei dispositivi il cui prezzo di tutte le manutenzioni manutenzioni effettuate è inferiore a 500".


Bo secondo me "trovare il codice dei dispositivi hw che non hanno subito manutenzoni con costo superiore a 500" è diverso dal scrivere "trovare il codice dei dispositivi hw che hanno subito SOLO manutenzoni con costo inferiore a 500". Nella prima se il dispositivo ha subito manutenzione con costo < a 500 ma magari ne ha subite altre con costo > a 500 va bene lo stesso, nella seconda invece devono essere presi solo quelli con costo manutenzione < 500.

Bo vabè se capita una roba del genere all'esame chiederò :-D


E' stato Gimmy a suggerirtelo, non mi prendo meriti altrui :asd: Anche perchè non avevo visto che c'era da riscrivere la tabella aggiornata, io mi ero limitato a rifare il grado :asd:

ahah grazie :D


Posted by R1cky` on 18-01-2009 11:46:

Originally posted by Gimmy
Bo secondo me "trovare il codice dei dispositivi hw che non hanno subito manutenzoni con costo superiore a 500" è diverso dal scrivere "trovare il codice dei dispositivi hw che hanno subito SOLO manutenzoni con costo inferiore a 500". Nella prima se il dispositivo ha subito manutenzione con costo < a 500 ma magari ne ha subite altre con costo > a 500 va bene lo stesso, nella seconda invece devono essere presi solo quelli con costo manutenzione < 500.


Ma scusa nel momento in cui ti dice "che non hanno subito manutenzioni con costo superiore a 500" mi sembra palese che se hanno subito manutenzioni con costo superiore a 500 non vanno bene. o no?

PS: Ho editato quello che avevo scritto ieri sera.. era leggermente incomprensibile :asd:


Posted by Gimmy on 18-01-2009 11:57:

mmm... è che secondo me non essendoci la parolina "solo" non implica che se un dispositivo hw che ha subito manutenzione sia con costo < 500 sia con costo > 500 non debba essere ammesso...

bè in ogni caso se è come dici tu l'hai risolta nel modo giusto ;)


Posted by R1cky` on 18-01-2009 12:01:

Vabbuò dai ricordiamoci che in caso di domanda ambigue è meglio chiedere alla prof :asd:

Tra oggi e domani forse mi conviene rivedermi la teoria che più ci penso e più non so una mazza :sad:


Posted by Gimmy on 18-01-2009 12:03:

si io di teoria so le domande degli appelli e qualcosa sugli argomenti inerenti... speriamo non chieda cose troppo specifiche!


Posted by darkshadow on 18-01-2009 21:34:

Originally posted by R1cky`
come no scusa? Il testo dice di "trovare il codice dei dispositivi hw che non hanno subito manutenzioni con costo superiore a 500" credo significhi "trovare il codice dei dispositivi il cui prezzo di tutte le manutenzioni effettuate è inferiore a 500", e difatti la mia espressione da proprio quello: prende quelli che hanno fatto manutenzioni con prezzo inferiore, poi toglie gli stessi che hanno fatto anche manutenzioni da più di 500.




diciamo che tira fuori le cose giuste pero.... ci sono delle ridondanze.

Mettiamo che abbiamo questo nella tabella MANUTENZIONE:

Codice   Data ....  Costo
   A        d1   ....  100
   B        d1   ....  100
   A        d2   ....  600
   C        d1   ....  10
   C        d2   ....  100
   C        d3   ....  400
   D        d4   ....  10



applicando la tua soluzione si ottiene:

B
C
C
C
D

che tira fuori si quelli con costo di manutenzione <= 500 pero alcuni codici sono ripetuti.

stavo cercando un modo per togliere i codici ripetuti. avete qualche suggerimento?

ciao.

__________________
by Ð@rk§h@ÐØw


Posted by R1cky` on 18-01-2009 21:44:

Con le operazioni in algebra relazionale a differenza di quanto avviene con le query sql non ottieni relazioni che hanno tuple distinte ma uguali ;)


Posted by darkshadow on 19-01-2009 12:29:

SQL - vincoli di integrità referenziale

 
ciao.

qualcuno ha idea di come si possono implementare i vincoli di integrità referenziale del esercizio 3 del tema d'esame del 18/01/06.


non so se si possa mettere nella parte references (column) on delete qualcosa con il check??



grazie in anticipo.

__________________
by Ð@rk§h@ÐØw


All times are GMT. The time now is 11:12. Pages (5): « 1 2 3 [4] 5 »
Show all 64 posts from this thread on one page

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