Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako napraviti ovu bazu?

[es] :: Web dizajn i CSS :: Kako napraviti ovu bazu?

[ Pregleda: 4191 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ljuba
Aleksandar Ljubojevic
Marketing Director
Sid/Novi Sad/Malta/Cyprus

Član broj: 1475
Poruke: 203
*.telemail.com.mt

ICQ: 21352441
Sajt: www.linkedin.com/in/aleks..


Profil

icon Kako napraviti ovu bazu?30.07.2002. u 16:40 - pre 264 meseci
Cao svima,

Uradio sam dosta baza ali sam evo naleteo na jednu sto mi predstavlja problem ...

Naime, projekat je za jednu turisticku agenciju koja saradjuje sa vise hotela koji su po svemu razliciti a sistem treba da daje podatke on-line kad je koja soba u kom hotelu slobodna, koliko bi to kostalo te osobe koje bi dosle ...

Znaci za svaku sobu u svim hotelima moram pamtiti pored svih standardnih stvari (u kom je hotelu, broj kreveta, maksimalan broj kreveta - jer za slucaj sezone moze da se trazi ekstra krevet, ...):

- cenu za odraslu osobu za svaki datum
- cenu za dete za svaki datum (mora biti posebno jer nema standardne formule za racunanje u odnosu na cenu za odraslu osobu)

Bila bi tabela HOTELI gde su podaci za sve hotele ...

Bila bi tabela SOBE gde su podaci za svaku sobu i jedno polje koje je vezano za kljuc od tabele HOTELI

Bila bi jedna tabela koja belezi rezervacije (preko koje se saznaje da li je neka soba slobodna u nekom trazenom periodu)

i mora biti jos jedna tabela koja belezi cene za svaki datum ...

Postoji naravno najjednostavnije resenje da se ima tabale sa minimum (365x2) 730 kolona gde se belezi posto je koja soba za taj i taj datum ... za dete i za odraslu osobu ... Ima li koji drugi nacin da to napravim a da mogu jednostavno da izvucem da li je u nekom hotelu neka soba slobodna i kolika je cena za dvoje odraslih i jedno dete za period 14 Mart 2003 do 17 Mart 2003 a posto je i ima li mesta za jednu odraslu osobu sa dvoje dece za period 15 Mart 2003 do 21 Mart 2003 ... naprimer ... klijent oce da mu ovaj sistem takve zahteve moze izvrsiti ... U jednom ili dva koraka ...

Sve bi bilo lakse da se ima neki standard ... neki 'paketi' sto se nude, ali nema ... :(((

Svaki hotel ima poseban nacin racunanja ... negde je dete do 11 godina, negde do 14-15 ... u nekom se sezona racuna od Aprila, negde od Jula, ... Nikako se ne moze standardizovati ni povezati ... neki nudi bazen za dzabe neki trazi doplatu, ...

Nije problem punjenja baze jer se to moze izvesti da je klijentu lako, ali me interesuje struktura?

Zvuci kao da se neko zajebava i 'izmislja krive Drine', ali realan je zahtev :((( Ima li ko misljenje, predlog, savet, ...

Hvala,

LJUBA
Pozdrav

LJUBA
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.200.EUnet.yu



+1 Profil

icon Re: Kako napraviti ovu bazu?31.07.2002. u 15:00 - pre 264 meseci
Ok, da probam da ti pomognem

Necu ti objasnjavati za hotele i sobe posto to vec znas, nego moj predlog ti je za cene da napravis novu tabelu npr. pricing koja ce imati sledeca polja:

room_id
date_start DATE
date_end DATE
price FLOAT(5,2)

pa onda za svaku sobu neka dodaje cenu. Kada neko radi search za neki datum, samo gledas room_id i da datum bude izmedju ova dva.

To je po meni najelegantnije resenje, kada je vec kompletna struktura toliko razudjena.
Goran Pilipović fka bluesman
 
Odgovor na temu

ljuba
Aleksandar Ljubojevic
Marketing Director
Sid/Novi Sad/Malta/Cyprus

Član broj: 1475
Poruke: 203
*.telemail.com.mt

ICQ: 21352441
Sajt: www.linkedin.com/in/aleks..


Profil

icon Re: Kako napraviti ovu bazu?02.08.2002. u 15:46 - pre 264 meseci
Cao ...

Hvala na pomoci i idejama ...

Tesko da moze po periodima ... Sto se tice perioda sve bi to bilo lako i jednostavno za realizovati da ima neki standard za periode ili pakete ... Ali negde su intervali od 1-og do 1-og ... negde od 15-15-og ... negde na svakih 7 dana ... negde na 10 ... negde se dete racuna do 11 negde do 8 ... neki hotel naplacuje pogled na bazen neki ne naplacuje ni koriscenje a ne pogled ...

Sta mislite o ovakoj strukturi:

http://fdl.futuredesign.com/Alex/Hoteli/
User Name: test
Password: showmesite

Hvala i cao

LJUBA
Pozdrav

LJUBA
 
Odgovor na temu

ljuba
Aleksandar Ljubojevic
Marketing Director
Sid/Novi Sad/Malta/Cyprus

Član broj: 1475
Poruke: 203
*.telemail.com.mt.

ICQ: 21352441
Sajt: www.linkedin.com/in/aleks..


Profil

icon Re: Kako napraviti ovu bazu?03.08.2002. u 00:23 - pre 264 meseci
Jos neki podaci o zahtevima:

Mora biti veza soba i cena jer je agencija zamislila da da dodje klijent i da kaze osobine koje oce da ima soba (sea view, air-cond, smoking, ...) i kaze klijent da ih je 5-oro npr a da hoce 2 sobe u periodu od nekog do nekog datuma ... i sistem treba da nadje sve kombinacije u svih hotelima i nadje sve sobe koje su 'nebukirane' za ceo taj period ... znaci kombinaciju 4-oro krevetna + 1 krevetna i 2-vokrevetna + 3-rokrevetna da u zavisnosti od datuma skonta koliko treba da se doda na normalnu cenu ako je kombinacija 4+1 jer za jednokrevetnu sobu se dodaje i single supplement ... Koliko ja kontam moram imati za sve datume ubelezeno za sve sobe koliko je sta za taj datum ... kolika je normalna cena, koliko je HB, FB, ... da li se naplacuje koriscenje bazena ... koliko je tog datuma naplacivanje ako je neko sam u sobi ... jeste da je veza soba-cena tipa 1:M jer za jednu konkretnu sobu imas podatke za vise datuma ... Takodje su 1:M i veze hotel_type-hotel, room_type-room i ostale veze sa Area i locations ...

Pozdrav

LJUBA
Pozdrav

LJUBA
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.130.EUnet.yu



+1 Profil

icon Re: Kako napraviti ovu bazu?05.08.2002. u 12:49 - pre 264 meseci
Ne vidim neki problem sto se tice naplacivanja, a i datuma.

Ti u tabeli koju sam ti napravio cuvas cenu za sobu od datuma START do END. Taj period moze biti i 1 dan, a moze i celo leto. Hotel ide i kaze za svaku sobu (npr 453)
453, 2002-07-01, 2002-07-15, 345.00
453, 2002-07-16, 2002-07-20, 315.00
453, 2002-07-21, 2002-08-01, 255.00
...

i ti, kada radis search za 4-krevetnu sobu (zauzeta, broj kreveta, pogled na bazen,... cuvas u tabeli soba) u periodu od 4. do 24. jula trazis sve sobe koje imaju navedene atribute (broj kreveta ...) kojoj je flag ZAUZETA iskljucen, i JOIN-ujes tabelu "pricing" (kako sam je ode ja naveo) USING room_id i onda u WHERE stavis "WHERE date_start <= Datum AND date_end >= Datum.

Taj Query mozes jos da prosiris ako klijent trazi DO ODREDJENE cene, u where stavi jos i " AND price <= client_price"

Po meni, posto se cene verovatno menjaju na svakih 7-15 dana u zavisnosti od sezone, po sobi ce u sezoni JUN-SEPTEMBAR (gde nema vise od 15 nedelja) biti izmedju 5 i 15 zapisa, sto nije mnogo.

Naravno, ova tabela koju sam ti predlozio je najprostija, ti tu mozes da dodajes jos polja koji se menjaju u zavisnosti od datuma.

Goran Pilipović fka bluesman
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.130.EUnet.yu



+1 Profil

icon Re: Kako napraviti ovu bazu?05.08.2002. u 13:00 - pre 264 meseci
zaboravih...

Kada ispisujes cenu za sobu od 4 do 24 jula onda napises
- od 4 do 15 cena je 345.00
- od 16 do 20 cena je 315.00
- od 21 do 24 cena je 255.00
pa kazes (iz tabele soba) pogled na bazen, pogled na kontejner....

pa mu jos i saberes na kraju :-))

Ako sa ovim "pogledima na ..." imas problem, mozes i tu da napravis jednu tabelu extra_pricing, gde ces cuvati room_id, extra_name (na primer "pogled na more"), extra_price. Pa cak i tu tabelu mozes da podelis po periodima (mozda leti vise naplacuju pogled na more nego zimi - zimi obicno duva i unosi vodu na terasu sobe, sta znam...)

Kod ovoliko razudjenih tabela jedini nacin je podeliti u sto sitnija crevca.
Goran Pilipović fka bluesman
 
Odgovor na temu

ljuba
Aleksandar Ljubojevic
Marketing Director
Sid/Novi Sad/Malta/Cyprus

Član broj: 1475
Poruke: 203
*.telemail.com.mt

ICQ: 21352441
Sajt: www.linkedin.com/in/aleks..


Profil

icon Re: Kako napraviti ovu bazu?05.08.2002. u 14:49 - pre 264 meseci
Citat:
bluesman:
Ti u tabeli koju sam ti napravio cuvas cenu za sobu od datuma START do END. Taj period moze biti i 1 dan, a moze i celo leto. Hotel ide i kaze za svaku sobu (npr 453)
453, 2002-07-01, 2002-07-15, 345.00
453, 2002-07-16, 2002-07-20, 315.00
453, 2002-07-21, 2002-08-01, 255.00
...

i ti, kada radis search za 4-krevetnu sobu (zauzeta, broj kreveta, pogled na bazen,... cuvas u tabeli soba) u periodu od 4. do 24. jula trazis sve sobe koje imaju navedene atribute (broj kreveta ...) kojoj je flag ZAUZETA iskljucen, i JOIN-ujes tabelu "pricing" (kako sam je ode ja naveo) USING room_id i onda u WHERE stavis "WHERE date_start <= Datum AND date_end >= Datum.


Dobro to mi je jasno, ali ako npr u tabeli price imam za sobu 453 definisana dva perioda npr:

453, 2002-07-01, 2002-07-15, 345.00
453, 2002-07-16, 2002-07-20, 315.00

A dodje klijent i trazi period izmedju 2002-07-10 i 2002-07-17

Kako onda naci cene iz ova dva reda u tabeli price kad se ne poklapaju periodi ... Zbog toga je moja ideja bila da kad administrator unosi podatke za pojedine sezone, da on odabere period ali da ja smestim iste podatke za sve datume u tom periodu, pa je onda lako naci cene za sve datume i da li je slobodno ... ond alako mogu reci where datum >= pocetni datum and datum <= krajnji datum Osim toga ako imas period od 15 dana u bazi i hotel odluci da taj period podeli na dva od po 8 i 7 dana onda moras brisati postojeci period iz baze i upisivati dva nova ... a ako su cene po datumu ... za svaki dan ... onda se samo menja vrednost ...

Jel se slazes?

Pozdrav

Ljuba

[Ovu poruku je menjao ljuba dana 05.08.2002 u 02:56 PM GMT]
Pozdrav

LJUBA
 
Odgovor na temu

ljuba
Aleksandar Ljubojevic
Marketing Director
Sid/Novi Sad/Malta/Cyprus

Član broj: 1475
Poruke: 203
*.telemail.com.mt

ICQ: 21352441
Sajt: www.linkedin.com/in/aleks..


Profil

icon Re: Kako napraviti ovu bazu?05.08.2002. u 14:54 - pre 264 meseci
Citat:
bluesman:
Ako sa ovim "pogledima na ..." imas problem, mozes i tu da napravis jednu tabelu extra_pricing, gde ces cuvati room_id, extra_name (na primer "pogled na more"), extra_price. Pa cak i tu tabelu mozes da podelis po periodima (mozda leti vise naplacuju pogled na more nego zimi - zimi obicno duva i unosi vodu na terasu sobe, sta znam...)
Kod ovoliko razudjenih tabela jedini nacin je podeliti u sto sitnija crevca.

Pod pretpostavkom da je struktura kao sto sam opisao u prethodnom odgovoru:
Sto se tice dodatne cena za poglede ako neka soba vec u svom opisu ima osobinu da ima pogled na more onda je to vec ukljuceno u cenu ... ne moze npr da zazidaju prozor ako gost nece pogled ... ako je vec pristao na tu sobu znaci da je pristao i na pogled i na tu cenu ... Sto se tice razlicite cene za razlicite periode - ako se vec definise cena za svaki datum, onda ce za svaki datum i biti uracunat dodatak za poglede.

Pozdrav

LJUBA
Pozdrav

LJUBA
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.220.EUnet.yu



+1 Profil

icon Re: Kako napraviti ovu bazu?06.08.2002. u 14:53 - pre 264 meseci
Citat:
ljuba:

Dobro to mi je jasno, ali ako npr u tabeli price imam za sobu 453 definisana dva perioda npr:

453, 2002-07-01, 2002-07-15, 345.00
453, 2002-07-16, 2002-07-20, 315.00

A dodje klijent i trazi period izmedju 2002-07-10 i 2002-07-17

Kako onda naci cene iz ova dva reda u tabeli price kad se ne poklapaju periodi ...


Pa upravo to sam ti napisao u prethodnoj poruci. Koliko ja znam, a bio sam dosta u hotelima, pa cak iz proslogodisnjeg primera sledi:

od 10 do 15 je cena 345.00, sto znaci 5 * 345.00 = 1725
od 16 do 17 je cena 315.00, sto znaci 2 * 315.00 = 630

pa kada se sabere dobije se 1725 + 630 = 2355

Kao sto rekoh i ja sam prosle godine placao 9 dana jednu cenu, pa onda jos 6 dana drugu cenu u hotelu. Ne vidim gde je tu problem. Nemas ti tu sta da delis dane... Na kraju, mozes u tabeli soba da imas jednu cenu koja vazi za sve periode koji ne postoje u tabeli pricing. Na primer, u pricing je uneo cene za periode od 1 juna do 31 septembra i kada trazis taj period citas te cene, a ako je period van tog intervala citas "DEFAULT" cenu.

Osim toga, nije neuobicajno da se za sve "NEDEFINISANE" cene napise "please call" ili nesto slicno. U tvom slucaju to bi bilo za neke "specijalne" aranzmane ili mozda za sve periode koji nisu navedeni u pricing tabeli.

Goran Pilipović fka bluesman
 
Odgovor na temu

ljuba
Aleksandar Ljubojevic
Marketing Director
Sid/Novi Sad/Malta/Cyprus

Član broj: 1475
Poruke: 203
*.telemail.com.mt

ICQ: 21352441
Sajt: www.linkedin.com/in/aleks..


Profil

icon Re: Kako napraviti ovu bazu?06.08.2002. u 15:39 - pre 264 meseci
Cao,

Hvala jos jednom, ali moram dalje pitati ...

Sve ja ovo razumem sto ti ovde pises i to je sto se logike tice sve OK, ali govorim po pitanju Select SQL upita nad tom bazom ...

Npr imam to moje:

453, 2002-07-01, 2002-07-15, 345.00
453, 2002-07-16, 2002-07-20, 315.00

gde su kolone u bazi npr datod i datdo.

i sve je to slobodno za izdavanje i sve je OK ...

Ali ako hocu sve datume da imam u jednom rekord setu a pitam za interval npr 2002-07-10 i 2002-07-17 morao bih sagraditi SQL upit nesto kao ovo:

Select * form (lista tabela) where (neki uslov) and (neki uslov) and (neki uslov) and (2002-07-10 between datod and datdo) and (2002-07-17 between datod and datdo) and (polje za booked nije cekirano)

Ali ovo u mom slucaju ne bi naslo nista jer ovakav uslov ne nalazi nista.

A ako je po datumima u bazi definisano (polje dat) onda bi SQL upit bio kao:

Select * form (lista tabela) where (neki uslov) and (neki uslov) and (neki uslov) and (dat between 2002-07-10 and 2002-07-17) and (polje za booked nije cekirano)

Ovo bi naslo sve redove u bazi kojima je datum u trazenom periodu ...

Neznam kako se ne razumemo ... Jel sad malo jasnije sta me buni?

Cao i hvala puno na zelji da pomognes!!!!!!!

LJUBA
Pozdrav

LJUBA
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.146.EUnet.yu



+1 Profil

icon Re: Kako napraviti ovu bazu?06.08.2002. u 16:27 - pre 264 meseci
Da, u pravu si, mora da ide malo komplikovaniji SELECT

"SELECT room.*, feat.*, pric.* from rooms as room,
LEFT JOIN room_pricing as pric ON pric.room_id=room.room_id
WHERE room.room_id = $id AND room.booked = 0
AND (pric.datdo <= '$datdo' OR pric.datdo >= '$datod')
ORDER BY ..."

NAPOMENA: ovo je "od oka", moram da imam bazu da bih testirao

Ovako bi dobio niz od onoliko elemenata u koliko ti se nedelja poklapa datum

Mozes da podelis i u 2 SELECTA (mozda bolje):
SELECT * from rooms WHERE room_id=$id AND booked=0

a onda kada dobijes tu sobu:
SELECT * from pricing WHERE room_id=$id AND
(date_end <= '$date_end' AND date_end >= '$date_start')

primer:
1. date_start = 06-01 date_end = 06-30
2. date_start = 07-01 date_end = 07-07
3. date_start = 07-08 date_end = 07-15
4. date_start = 07-16 date_end = 07-31
5. date_start = 08-01 date_end = 08-15

a trazi se od 07-04 do 07-24 (od 2 do 4)

za (date_end <= '$date_end') => date_end <= '07-24'
vratio bi ti sve od pocetka do 4 jer su
ali sa "AND date_end >= '$date_start'" => date_end >= '07-04'
osiguravas da ne pokupi i datume pre 07-04, znaci ispadaju sve kolone pre kolone 2

Ov je, kazem, od oka, verovatno moze da se optimizuje ali ovako "na brzaka"... nadam se da sam pomogao
Goran Pilipović fka bluesman
 
Odgovor na temu

ljuba
Aleksandar Ljubojevic
Marketing Director
Sid/Novi Sad/Malta/Cyprus

Član broj: 1475
Poruke: 203
*.telemail.com.mt

ICQ: 21352441
Sajt: www.linkedin.com/in/aleks..


Profil

icon Re: Kako napraviti ovu bazu?07.08.2002. u 10:59 - pre 264 meseci
Cao,

U pravu si ... ideja je dobra ali treba dodati nesto koliko ja kontam ... npr:

U bazi imam periode:

1) od 31.3.2002. do 19.5.2002.
2) od 20.5.2002. do 30.5.2002.
3) od 31.5.2002. do 20.6.2002.
4) od 21.6.2002. do 20.7.2002.

A ja npr hocu period od 24.5.2002. do 3.6.2002.

tada select mora biti nesto kao (sa zamenjenim vrednostima):

select (bla bla bla) where (bla bla bla)
and (datdo <= 3.6.2002. and datdo >= 24.5.2002) // Ovo ce uhvatiti 2)
or (datod <= 3.6.2002. and datdo >= 3.6.2002) // Ovo ce uhvatiti 3)

1) ne hvata ga prvi uslov jer mu je datdo manji od 24.5.2002 a ni drugi ga ne hvata jer mu je datdo manji od 3.6.2002
4) ne hvata ga prvi uslov jer mu je datdo veci od 3.6.2002 a ni drugi ga ne hvata jer mu je datod veci od 3.6.2002

a ako bi hteo npr period od 24.5.2002. do 23.6.2002.

tada select mora biti nesto kao (sa zamenjenim vrednostima):

select (bla bla bla) where (bla bla bla)
and (datdo <= 23.6.2002. and datdo >= 24.5.2002) // Ovo ce uhvatiti 2) i 3)
or (datod <= 23.6.2002. and datdo >= 23.6.2002) // Ovo ce uhvatiti 4)

1) ne hvata ga prvi uslov jer mu je datdo manji od 24.5.2002 a ni drugi ga ne hvata jer mu je datdo manji od 23.6.2002

Cao,

Aleksandar Ljubojevic
Pozdrav

LJUBA
 
Odgovor na temu

[es] :: Web dizajn i CSS :: Kako napraviti ovu bazu?

[ Pregleda: 4191 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.