Newsgroup: it.comp.appl.access
Titolo: consiglio su gestione prenotazioni

ciao a tutti
devo gestire le prenotazioni di tot stanze in tot alberghi.
le stanze sono affittabili anche per singolo giorno e per tutto l'anno.
Vorrei un vs. consiglio su come progettare la base dati per facilitare le 
operaizioni di ricerca dei giorni liberi e delle stanze occupate.
Sono indeciso se,. per ogni stanza creare 365 campi boolean 
(occupata/libera)
o per ogni stanza memorizzare in un'altra tabella uno-molti le finestre di 
date in cui la stanza è occupata
cosa mi consigliate?
ciao, Ivan 

Ivan ci ha detto :

Solo una ipotesi, non so dirti se la migliore, perché non ho fatto 
test.
Ma ho usato questa logica con un programma di rilevazione presenze... 
più o meno la stessa situazione...
A livello mentale concettuale proverei a implementare una cosa del 
genere:
creo una
tabella stanze con il suo id chiave primaria.
una tabella giorni con il suo id chiave primaria.
una tabella molti a molti a molti di nome Stanze_Giorni (molti a 
molti).
Questa ultima contiene tutte le occorrenze che ti serviranno.
Se devi dire che la stanza x è occupata un mese, ti fai un ciclo in 
questa tabella , facendo gli insert per id dei giorni e per gli  id 
delle stanze, per tutti i giorni del mese.
In questo modo rispetti tutti i criteri di normalizzazione e hai una 
certà facilità nelle ricerche:
esempio vuoi trovare tutte le stanze libere in un dato giorno, o usi un 
"where not in", o un left join dove poni a null, l'id della stanza...
La cosa è un po' più elaboriosa, ma non credo sia una buona strada 
mettere 365 campi a fianco, se sorgono problemi, è difficile poi 
gestire la cosa...
-- 
http://www.pierpaoloromanelli.com/aim-free-universal-information-manager.html
http://cala79.blog.excite.it/permalink/499745

 ha scritto nel messaggio 
news:mn.80057d7ad...@gmail.com...

grazie mille, ma la tabella giorni la popolo con i 365 giorni dell'anno?
non è superflua?
potrei usare la tabella stanze come dici tu
e tabella stanze giorni dove memorizzo
idstanza+idgiorno+idprenotazione   dove idgiorno non è altro che la data 
magari in formato intero
giusto?
ciao, ivan

 ciao a tutti


Una tabella Prenotazioni dove salverai il numero della stanza, data di
arrivo e data di partenza degli occupanti, numero persone, e tutti gli
altri dati che ti servono per la prenotazione.
Nella maschera di inserimento prenotazioni, sull'evento "prima di
aggiornare" della maschera, controlli che la stanza non sia già occupata.
Posto che siano Dal e Al le caselle sulla maschera, e Arrivo e Partenza
quelle in tabella, per sapere se la stanza è occupata ti basta fare una
dlookup o una query impostando 3 criteri:
  numero stanza maschera = numero stanza tabella
  Dal <= Partenza
  Al >= Arrivo
Se la query restituisce uno o più record vuol dire che la stanza è già
occupata, e puoi anche informare l'operatore su chi l'ha prenotata e per
che periodo.
Dovresti trovare qualche esempio sul 
www.sitocomune.com
 o cercando nei
vecchi post.
Ciao.
-Marco-
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio 
news:4713ad40$0$37199$4faf...@reader3.news.tin.it...

Mettere 365 campi boolean è assurdo e inutile.
Io fare 4 tabelle:
TabellaStanze
-IdStanza (relaz. molti molti tab prenot.)
-TipoStanza
-Balcone
-VistaMare
-Frigobar
-TvSat
-Telefono
-Note
-tariffa
-ecc...
TabellaPrenotazioni
-IdPrenotazione
-IdStanza (relazione molti-molti tab stanze)
-PrenotazDal
-PrenotazAl
-IdCliente (molti molti tab clienti)
-IdTrattamento (realz uno-molti tab trattamento)
-ecc..
TabellaClienti
-IdCliente
-Nome
-ecc.
TabellaTrattamento
-IdTrattamento
-TipoTRattamento
-tariffa
-ecc.
A questo punto devi avere un record per ogni stanza con le caratteristiche 
(in modo da poter ricercare una caratteristica piuttosto che un'altra), e un 
record per ogni tipo di trattamento.
Al momento della prenotazione crei un nuovo record per il cliente e gli 
assegni la stanza con le date e il trattamento, ma prima di questo con una 
semplice query puoi estrarre le stanza libere in base alle date, inoltre 
puoi aggiungere filtri in base alle esigenze del cliente sulle 
carattesristiche della stanza, opppure avere lo storico del cliente nel caso 
faccia un nuovo soggiorno. 

Ivan scriveva il 16/10/2007 :

Ciao Ivan, non è superfluo.
Tu comunque non sei obbligato ad inserire tutti i giorni.
io inserivo i giorni che mi serviva indagare.
se c'erano già non li inserivo, metti i constraints opportuni.
va bene anche il formato intero per la data, io dovevo fare 300 mila 
calcoli, quindi spezzavo in 3 campi... ma tu credo possa usare un 
formato data, così non fai fatica con le query.
io dovevo controllare festività, riposi, ecc, era tutot basato sulle 
date.
tu hai poco da fare.
la tabella giorni, è il perno di tutto, perché se devi fare le query le 
fai basandoti su questa...
quanto vivrà il tuo programmino?
sono 1 anno 365 record + 365 per ogni anno...
100 anni, aprox 36500 records..
Sono una facezia per access....
Comunque questa soluzione è necessaria se devi fare molti controlli 
basati sulle date... Richiede da parte tua un po' più di sforzo 
implementativo...
Ciao.
Ciao.


 ha scritto nel messaggio 
news:mn.82957d7ab...@gmail.com...

Ok, penso che userò la tua soluzione..con la data comunque intera visto che 
non mi interessano festività etc etc.
per la dimensione del DB non ho problemi, sono anni che lavoro solamente con 
MSDE o SQL Server
vedro di progettare bene le stored procedure per la ricerca
grazie mille
Ivan

Perchè creare una tabella con i 365 giorni dell'anno??? Dopo che hai 
inserito i giorni su cosa lavori? leggi la mia spiegazione di stamattina, 
devi lavorare sulle stanze e avere tabelle correlate. Ora sembra inutile, ma 
man mano che inserisci le prenotazioni vedrai che nel mio modo è pianificato 
in modo adeguato.
Io ho un db di quasi 1Gb, e in una tabella ci sono quasi 2 milioni di 
record, e ho decine di tabelle con categorie, reparti, clienti, fornitori, 
tutto correlato e tutto che gira sul codice di ogni articolo, e tu devi far 
girare tutto su ogni singola stanza. 

 sono 1 anno 365 record + 365 per ogni anno...
;<) Hanno soppresso i bisestili?
-- 
ac
y-1=x

 ;<) Hanno soppresso i bisestili?
"aprox" 36500, non l' ho messo a caso:).
Ciao Alessandro.


 Sono una facezia per access....
scusate ma questo albergo ha una sola stanza?
Ivan parla di tot alberghi  X tot stanze X 366 gg/anno
credo che la stima di 365000 in cento anni sia indice di non profitto della 
attivita'.
Al di fuori delloscherzo ... credo che se una stanza resta impegnata per 5 
giorni consecutivi, sia inutile elencare ogni singolo giorno in maniera 
ripetuta. Va' indicato solo il periodo DA - A e le considerazioni vanno 
eseguite tramite query.
Se poi si allegano le voci varie connesse alla stanza: Bar,Telefono, Pranzi, 
Gioielli dalla galleria ...
credo che i records siano un tantinello di pių.
IvanDaBologna 


Si esatto. la soluzione che sto attuando infatti è quella di memorizzarmi 
idstanza, idprenotazione, da, a
Comunque lo scenario è di :
200 hotel + relative camere
900 appartamenti
per 365 gg l'anno
grazia tutti per i consigli
Ivan


Infatti è quello che subito avevo detto io, ma probabilmente i miei messaggi 
non li vedono.....