Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

Problema query esame n.3 (slide)


  • Effettua l'accesso per rispondere
Questa discussione ha avuto 8 risposta/e

#1
apisapia92

apisapia92

    Advanced Member

  • Utente
  • StellaStellaStella
  • 280 Messaggi:
Ragazzi volevo chiedervi aiuto per quanto riguarda la query n.3 delle slide 09
Semplicemente non ho capito perché usa la delete alla fine, in quanto ha già aggiornato in "Corso" con la Insert all'inizio, inoltre non mi è chiaro in generale il senso di questi esercizi di modifica della BD
Grazie



#2
apisapia92

apisapia92

    Advanced Member

  • Utente
  • StellaStellaStella
  • 280 Messaggi:
Più che altro forse non capisco perché all'inizio fa la insert su corso from corso che senso ha aggiungerli se già ci sono??? non basterebbe fare una update?

#3
cirom91

cirom91

    Advanced Member

  • Moderatore
  • 908 Messaggi:
In pratica ti chiede di aggiornare il codice del corso da DB a DB1, questo nella tabella CORSO. Però, tra CORSO e DOCENZA c'è un vincolo inter-relazionale, quindi non puoi aggiornare tranquillamente il codice, perchè così facendo è come se il valore di DOCENZA.Docente (che è uguale a DB) divenisse "non valido" (perchè non è più presente in CORSO). Allora nella prima query ti crei una nuova tupla nella tabella CORSO dove CORSO.Codice=DB1 e assegni i restanti valori, altrimenti avresti perdita di informazione (infatti, la tupla con primary key DB1 avrebbe attributi non primi settati a NULL). A questo punto DOCENZA.Corso potrà assumere il valore DB1, ecco quindi la query con update. Infine, la tupla in cui CORSO.Codice=DB non ti serve più e la puoi rimuovere con la terza query, siccome nessuna tupla di DOCENZA userà più DB.

In parole povere, è come se tu nella tabella CORSO crei una copia della tupla con Codice=DB, gli cambi il valore della chiave primaria, ed elimini la tupla "originale".
Non puoi fare un semplice update alla tabella CORSO perchè il valore DB è già in uso da una qualsiasi relazione della tabella DOCENZA.
Non puoi fare un semplice update alla tabella DOCENZA perchè il valore DB1 non è presente in CORSO.

Il senso di questi esercizi è vedere se sappiamo agire modificando e/o eliminando informazioni senza violare i vincoli imposti allo schema relazionale.

Scusa se non mi sono espresso bene, magari cerco di essere più chiaro..

#4
apisapia92

apisapia92

    Advanced Member

  • Utente
  • StellaStellaStella
  • 280 Messaggi:
Sei stato strachiarissimo :D grazie davvero fingerup
P.S. sai quanto dura lo scritto?

#5
cirom91

cirom91

    Advanced Member

  • Moderatore
  • 908 Messaggi:
Prego. Meno male, ho riletto più volte il messaggio prima di inviarlo xD
Un mio amico l'ha fatto a giugno ed mi ha detto che è durato 2 ore e mezza.

#6
CrazyDiamond

CrazyDiamond

    Advanced Member

  • Utente
  • StellaStellaStella
  • 51 Messaggi:
Questa query si sarebbe potuta fare anche con una transazione? Tutti gli esercizi diquesto tipo li ho visti risolvere con una transazione...

#7
fedexav

fedexav

    Advanced Member

  • Utente
  • StellaStellaStella
  • 82 Messaggi:
Certo è consigliabile risolvere con una transazione.

#8
CrazyDiamond

CrazyDiamond

    Advanced Member

  • Utente
  • StellaStellaStella
  • 51 Messaggi:
Quindi facendo una cosa simile ?
Star Transaction

update corso set codice = 'DB1' where codice = 'DB'
update docenza set corso = 'DB1' where corso = 'DB'

Commit Work;


#9
fedexav

fedexav

    Advanced Member

  • Utente
  • StellaStellaStella
  • 82 Messaggi:
Sì perfetto :grin: attenzione ai vincoli però

Inviato dal mio HTC Desire S con Tapatalk 2




Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi