WebApplication comunicazione Database

di il
2 risposte

WebApplication comunicazione Database

Buongiorno ragazzi sto cercando di realizzare una WebApplication in Java (jsp,javascript) in cui permetto la prenotazione di alcune camere di un hotel.
Premetto che sono ancora all'inizio con la programmazione in questo linguaggio.
In sostanza, dopo aver effettuato il login/registrazione/logout devo creare un modo che mi permetta di prenotare le camere dell'hotel.
Quindi pensavo di realizzare un form del tipo:
Email
Tipo Stanza
Data Arrivo
Data di Partenza

Ora il primo problema risulta nel controllare che per un determinato tipo di stanza, in quel periodo ( data di arrivo- data di partenza ) non avvengano altre prenotazioni.
 String idPrenotazione = request.getParameter("idPrenotazione");
         String emailUtente = request.getParameter("emailUtente");
         String nomestanza = request.getParameter("nomestanza");
         String dataInizioPrenotazione = request.getParameter("dataInizioPrenotazione");
         String dataFinePrenotazione = request.getParameter("datafinePrenotazione");
         
         try {
        	 
        	 String check =  (("SELECT res1.nomestanza, res1.dataInizioPrenotazione, res1.dataFinePrenotazione\n" + 
                     "FROM prenotazione res1, prenotazione res2\n" + 
                     "WHERE ( res1.nomestanza = res2.nomestanza ) \n" + 
                     "AND (res1.dataInizioPrenotazione <= res2.dataFinePrenotazione)\n" + 
                     "AND (res2.dataInizioPrenotazione <= res1.dataFinePrenotazione)"));
        	 
        	 
         } catch(Exception e) {
        	 
         }
Ho provato scrivendo questo, ma già sorge il primo dubbio come faccio a controllare il risultato della "check" ? Perchè mettiamo caso che il controllo effettuato sia positivo ( quindi la camera è libera in quel periodo ) allora posso procedere all'inserimento della prenotazione e a settare la disponibilità della stanza ad 1 ( e quindi impostare che la stanza è occupata ).

Vi lascio pure lo schema del DB:
'room`
`idRoom` varchar(45) NOT NULL,
`nomestanza` varchar(45) NOT NULL,
`capienza` int(11) NOT NULL,
`disponibile` int(11) DEFAULT NULL,

prenotazione [/u ]
`idPrenotazione` int(11) NOT NULL,
`emailUtente` varchar(45) NOT NULL,
`idRoom` int(11) NOT NULL,
`dataPrenotazione` varchar(45) NOT NULL,
`esitoPrenotazione` int(11) NOT NULL,
`dataInizioPrenotazione` varchar(45) NOT NULL,
`dataFinePrenotazione` varchar(45) NOT NULL,
`costo` double NOT NULL,
`saldo` int(11) NOT NULL,
`nomestanza` varchar(45) DEFAULT NULL

Grazie a tutti per l'aiuto

2 Risposte

  • Re: WebApplication comunicazione Database

    kepz ha scritto:


    Vi lascio pure lo schema del DB:
    'room`
    `idRoom` varchar(45) NOT NULL,
    `nomestanza` varchar(45) NOT NULL,
    `capienza` int(11) NOT NULL,
    `disponibile` int(11) DEFAULT NULL,

    prenotazione [/u ]
    `idPrenotazione` int(11) NOT NULL,
    `emailUtente` varchar(45) NOT NULL,
    `idRoom` int(11) NOT NULL,
    `dataPrenotazione` varchar(45) NOT NULL,
    `esitoPrenotazione` int(11) NOT NULL,
    `dataInizioPrenotazione` varchar(45) NOT NULL,
    `dataFinePrenotazione` varchar(45) NOT NULL,
    `costo` double NOT NULL,
    `saldo` int(11) NOT NULL,
    `nomestanza` varchar(45) DEFAULT NULL

    Prima della parte Java, io vedo già un po' di cose "dubbie" sulla base dati.

    - perché in room il `idRoom` è un varchar(45) ?
    - perché in prenotazione il `idRoom` è invece un int(11) ?
    - perché vorresti legare prenotazione alla stanza tramite il nomestanza ?
    - perché non leghi prenotazione e stanza tramite una chiave primaria in room ?
    - perché in prenotazione hai ripetuto il `nomestanza` che invece è già in room ?

    Insomma, DEVI chiarirti le idee anche su SQL e soprattutto sul design delle basi dati relazionali.
  • Re: WebApplication comunicazione Database

    Grazie per la risposta, effettivamente non avevo notato la svista della differenza delle idRoom! Ed effettivamente mi conviene legare la prenotazione alla stanza tramite idRoom.
Devi accedere o registrarti per scrivere nel forum
2 risposte