我想开发一个类似于(booking.com&agoda.com)OTA网站的网站。但是我在摆桌子时遇到了麻烦。酒店经营者也可以在特定日期关闭特定房间,所以我必须在某个地方有一个封闭的开放场地。我不确定目前是否做得正确,因此我需要一些额外的头脑来帮助我更好地进行设计。
我曾尝试在Google中搜索数据库设计,但它们不符合我的要求,其中大多数仅针对单个酒店结构且价格固定,而我的价格则基于日期。 PH和周末的价格可能更高,并且可以由酒店经营者更改。
我在餐桌上的想法:
hotel {
hotelID (INT) PK
hotelName (VARCHAR)
}
rooms {
roomID (INT) PK
roomType (VARCHAR)
}
我打算在可用性上使用INT(0 =关闭&1 =打开)
rates {
roomID (INT)
date (datetime)
price (double)
available (INT)
}
bookings {
bookingID (INT) PK
hotelID (INT)
roomID (INT)
checkInDate (datetime)
checkOutDate (datetime)
price (double)
}
答案 0 :(得分:1)
也许这种设计模型将帮助您了解酒店管理系统的基本逻辑。
hotels {
id INT 11
code VARCHAR 50
name VARCHAR 70
street_address TEXT
city_id INT 11
state_id INT 11
country_id INT 11
zip_code VARCHAR 30
added_on DATETIME
added_by INT 11 ( ADMIN ID )
updated_on DATETIME
updated_by INT 11 ( ADMIN ID )
flag TINYINT 2 DEFAULT 0
}
rooms {
id INT 11
hotel_id INT 11
room_number INT 11
floor_number INT/VARCHAR ..
room_type INT 5 ( FK: room_types )
added_on DATETIME
added_by INT 11 ( ADMIN ID )
flag TINYINT 2 (0/1) DEFAULT 0 AVAILABLE / NOT AVAILABLE
}
room_types {
id INT 11
hotel_id INT 11
......
}
room_facilities {
id INT 11
hotel_id INT 11
room_id INT 11
bed_type ( 'single', 'double', etc. )
ac_available ...
..... etc.
}
room_rates {
id INT 11
hotel_id INT 11
room_id INT 11
price INT 11
.. other price ..
price_on DATETIME 11 ( DATE )
added_on DATETIME
added_by INT 11 ( ADMIN ID )
flag TINYINT 2
}
bookings {
id INT 11
hotel_id INT 11
room_id INT 11
check_in DATETIME
check_out DATETIME
booking_person_id INT 11
flag
}
booking_customer {
id INT 11
booking_id INT 11
first_name ..
last_name ..
contact_number ..
id_number ..
added_on
flag
}
booking_payment {
id
booking_id
customer_id
total_paid
-- other price
payment_type ( credit card/cash )
status ( paid/ not paid )
}
booking_person {
id
hotel_id
first_name
last_name
contact_number
email
address
profile_picture
added_on
updated_on
flag
}
您可以根据这些条件/设计来开发数据库。 始终尝试将多种类型的数据隔离到单独的表中。