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

query esame 17-06-2013


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

#1
nicola87

nicola87

    Member

  • Utente
  • StellaStella
  • 14 Messaggi:
ciao a tutti, volevo chiedere come avete risolto la seconda query del compito in cui veniva chiesto di effettuare una cancellazione ipotizzando che il vincolo IR sia definito con politica no action. Io ho fatto semplicemente in questo modo:

DELETE FROM Prenotazione WHERE Cliente = 'AAA'
DELETE FROM Cliente WHERE Codice = 'AAA'

l'ho testata anche con postegresql e funziona, tuttavia ho ricevuto 0 punti.
grazie in anticipo



#2
orres21

orres21

    Advanced Member

  • Utente
  • StellaStellaStella
  • 270 Messaggi:
non rispetti il vincolo! non puoi effettuare direttamente la cancellazione come fai tu!

#3
Marco Bassi

Marco Bassi

    Advanced Member

  • Utente
  • StellaStellaStella
  • 575 Messaggi:
io ho tolto il vincolo intra relazionale che c'era
ne ho messo uno con cancellazione a cascata
ho cancellato quello che dovevo
ho preso quattro li, quindi...

la prima invece come andava fatta?

#4
nicola87

nicola87

    Member

  • Utente
  • StellaStella
  • 14 Messaggi:
però la mia soluzione sembra lo stesso corretta, con politica no action la cancellazione di una tupla dalla tabella riferita è eseguita solo se non esiste alcuna tupla nella tabella riferente che vi fa riferimento

#5
Ryuji

Ryuji

    Advanced Member

  • Utente
  • StellaStellaStella
  • 523 Messaggi:
Io ho fatto come te e ho preso 4 punti, solo che ho inserito le due operazioni in una transazione dato che si vuole che vadano entrambe a buon fine.
Non serve togliere il vincolo.

Piuttosto... la normalizzazione come andava fatta?

@marco: per prima query io ho fatto così
1) una vista che contenesse tutti gli alberghi con il numero di camere prenotate dove datainizio2) una vista che contenesse tutti gli alberghi con il numero di camere libere partendo da quella di prima
3) e poi era facile fare la query vera e propria

#6
Marco Bassi

Marco Bassi

    Advanced Member

  • Utente
  • StellaStellaStella
  • 575 Messaggi:
Io ho fatto una vista per gli alberghi per la data e con un attributo per indicare le camere libere, forse ho sbagliato quest'ultima cosa. ho messo una semplice differenza fra gli attributi che non so neanche se sia sintatticamente corretta come cosa.
poi ho fatto una query semplice

#7
dottorbrillo

dottorbrillo

    Advanced Member

  • Utente
  • StellaStellaStella
  • 82 Messaggi:
Potete postare il codice delle due query ? :) e magari anche la normalizzazione, come l'avete fatta?

#8
Ryuji

Ryuji

    Advanced Member

  • Utente
  • StellaStellaStella
  • 523 Messaggi:

Potete postare il codice delle due query ? :) e magari anche la normalizzazione, come l'avete fatta?


Io ho fatto così:

[codice-sql:b3tqg3l7]START TRANSACTION;

DELETE FROM Prenotazione WHERE Cliente = 'AAA'
DELETE FROM Cliente WHERE Codice = 'AAA'

COMMIT WORK;[/codice-sql]

[codice-sql:b3tqg3l7]CREATE VIEW camereoccupate AS
SELECT SUM(camereprenotate) AS prenotate, albergo
FROM prenotazione P
WHERE datainizio <= datadata AND datafine >= datadata
GROUP BY albergo;

CREATE VIEW camerelibere AS
SELECT (A.camere - prenotate) AS libere, albergo
FROM albergo A, camereoccupate C
WHERE A.codice = C.albergo;

SELECT A.nome
FROM camerelibere C, albergo A
WHERE A.codice = C.albergo
AND A.citta = 'firenze'
AND camerelibere <= ALL (SELECT Libere FROM camerelibere);[/codice-sql]

la normalizzazione servirebbe anche a me... più che altro l'inutile procedimento, perché le tabelle non ci vuole niente a separarle =_=

#9
sabatinof

sabatinof

    Advanced Member

  • Utente
  • StellaStellaStella
  • 137 Messaggi:
per la normalizzazione io ho fatto cosi:
ho diviso la tabella in due tabelle mantenendo le dipendenze funzionali ed effettuando una decomposizione senza perdita, ottenendo:
R1(CF,Casa,CognomeProprietario) con CF e Casa chiavi primarie
R2(Casa,AnnoAccatastamento) con Casa chiave primaria

Ora R2 è in BCNF mentre R1 non lo è e bisogna ancora dividere ottenendo:
R3(CF,CognomeProprietario) con CF chiave primaria
R4(Casa,CF) con entrambi chiave primarie

Credo sia giusto ma non ne sono sicuro aspetto conferme e commenti, grazie in anticipo.

#10
CrazyDiamond

CrazyDiamond

    Advanced Member

  • Utente
  • StellaStellaStella
  • 51 Messaggi:

io ho tolto il vincolo intra relazionale che c'era
ne ho messo uno con cancellazione a cascata
ho cancellato quello che dovevo
ho preso quattro li, quindi...

la prima invece come andava fatta?


Marco puoi scrivere il codice per capire meglio. Grazie :D




Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi