Ben birini inşa ettik, ama bu yanlış eminim.
Ben müşteri bilgileri için bir tablo vardı, ve her tarih kalmak ile başka bir tablo (yani bir hafta tatil yedi kayıtları olurdu).
Daha iyi bir yolu var mı?
MySQL ile PHP kodu
I found it at this page: A list of free database models.
WARNING: Şu anda (Kasım '11), Google kötü amaçlı yazılım içeren olarak o siteyi bildiriyor: http://safebrowsing.clients.google.com/safebrowsing/diagnostic?client=Firefox&hl=en-US&site=http://www.databaseanswers.org/data_models/hotels/hotel_reservations_popkin.htm
I work in the travel industry and have worked on a number of different PMS's. The last one I designed had the row per guest per night approach and it is the best approach I've come across yet. Quite often in the industry there are particular pieces of information to each night of the stay. For example you need to know the rate for each night of the stay at the time the booking was made. The guest may also move room over the duration of their stay.
Performans açısından bir MySQL aralığından daha arama eşittir yapmak için daha hızlı, bu yüzden startdate / enddate yaklaşımı daha yavaş olacaktır. Tarihleri do "tarih (dates)" bir dizi için bir arama yapmak için.
Ben kullanılan kabaca şema:
Bookings (id, main-guest-id, arrivaltime, departime,...)
BookingGuests (id, guest-id)
BookingGuestNights (date, room, rate)
Modelinizi kırılabilir Bazı şeyler. Bu bir sorun olmayabilir, ama onlar oluşabilir görmek için müşteri ile kontrol etmelisiniz.
Vay, tüm cevaplar için teşekkürler.
Ben şeması hakkında uzun ve sert düşündüm ve başka bir şekilde çalışıyor ve html dönüştürme zorluk sonra bir rekor = gece yaklaşımı ile gitti.
Ben rezervasyon bilgi görüntülemek için Takvim Sınıf inşa ile CodeIgniter'ı kullanılır. Bir tarih mevcut olmadığını denetleme (en azından denedikten sonra) bu şekilde daha kolay olduğunu, bu yüzden onunla gitti. Ama ben soru sordum neden olan, en iyi yol olmadığını ikna oldum.
Ve DB cevaplar için teşekkürler, çok bağlantı.
En iyisi,
Mei
Bir kişi neccessary kaldığı her gün için bir kayıt yaratıyor? Her gün önemli ise sadece aksi misafirler için rezervasyon içeren müşteri bilgilerini içeren bir Müşteri / Misafir tablo, Kitap tablo var, gerekliyse olmalıdır. Kitap masa, oda vb içeren tarihi, bitiş tarihi, konuk (veya misafir), başlamak istiyorum
Eğer böyle ödenen faaliyetler, ya da yemek gibi başka şeyleri kaydetmek için gerekli olan diğer tablolarda bu eklemek gerekir.
Her kalmak için girişlerin sayısını azaltmak için olası bir yol, zaman çerçevesi örneğin saklamanız başlangıç tarihi ve bitiş tarihi. Ben size daha spesifik bir tavsiye vermek için veri karşı çalıştırmak operasyonları bilmek gerekir.
Eğer bir saklı yordam ile yapabilirsiniz belirli bir tarihte kalıyorsun kaç müşterinin kontrol etmek gerekirse, genel anlamda.
Bazı özel operasyonlar için tasarım iyi olabilir. Bu durumda bile hala benzersiz bir konaklama için bir müşteri bağlayan bir "ziyaret" tablosu, ve ben onun gün her müşterinin rahat çözecek bir "gün-of-ziyareti" tablosunu yapacağını.
Asaf.
Sen sorgu basitlik (ve muhtemelen performans) ile veritabanı boyutu kapalı ticaret konum
Misafirlerine numarasını sorgulamak için oldukça kolay, gece n, ve böylece, ancak veritabanı boyutu üzerinde oda X boş oldukça hızla artacak gibi mevcut modeli, basit sorgular verir.
Bir başlangıç için hareketli / durdurmak veya başlatmak / num gece modeli zamanlarda bazı ilginç ... sorguları :) için yapacak
Yani bir sürü seçenek SQL beceri düzeyi ile yapmaktır :)
Ben şemada şemada için umurumda değil. Bu oldukça çirkin.
Schema Abstract
Table: Visit
Her gece bir otelde kaldık için ziyaret tablo bir satır içerir.
Not: Yazarın içeriyor
Table: Customer
Table: Stay
Stay tablo tüm ziyaret açıklayan bir satır içerir. Bu her ziyaret udpated edilir güncellenir.
Notes
Bir web uygulaması iki şeydir: eylemleri ve CRUD eylemleri SEÇ. Çoğu web uygulamaları% 99 SELECT, ve% 1 CRUD. Normalizasyon, SELECT daha fazla CRUD yardımcı eğilimindedir. Sen benim şema ve panik bakmak olabilir, ama hızlı. Herhangi CRUD etkinlik için ekstra çalışma küçük bir miktar yapmak zorunda olacak, ancak seçen tüm Stay tablo vurabilir çünkü seçer çok daha hızlı olacaktır.
Ben Jeff Atwood koyar nasıl severim: "acıyor kadar çalıştığını kadar denormalize, Normale"
Yoğun bir otel müdürü, ne kadar iyi çalıştığını kadar hızlı çalışıyor kadar önemlidir tarafından kullanılan bir web sitesi için.