php - 多酒店预订系统的数据库设计/结构
问题描述
我想开发一个类似于 OTA 网站的网站,例如(booking.com 和 agoda.com)。但是我在制作桌子时遇到了麻烦。酒店经营者也可以在特定日期关闭特定房间,所以我必须在某个地方有一个封闭的空地。我不确定我目前是否做得正确,因此我需要一些额外的大脑来帮助我更好地设计它。
我曾尝试在 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)
}
解决方案
也许这个设计模型会帮助你理解一个酒店管理系统的基本逻辑。
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
}
您可以根据这些标准/设计开发您的数据库。始终尝试将多种类型的数据分离到单独的表中。
推荐阅读
- python - AWS Sagemaker AttributeError:无法设置属性错误
- python - 使用 python 是否可以修改并可能在 csv 中添加新行?
- python - FileNotFoundError: [WinError 3] 系统找不到指定路径:'C:\\Users\\ASUS\\Desktop\\Opencv Course\\Faces\\train\\Madoona'
- r - DPLYR Left_Join 返回 NA 值
- python - BAST 和 FAST 算法
- javascript - 如何比较 2 个对象数组并在 Javascript 中返回单个数组结果?
- javascript - 如何理解“这样的绑定只定义一次,永不改变”这句话?
- python - Pandas:对列的子集应用过滤器
- php - 如何缩小或提高 laravel 8 刀片模板的速度?
- javascript - Vuejs - 焦点元素检查