我正在开发一个新项目。我真的刚刚开始它,我正在指导自己如何构建页面结构,当然还有数据库。
该页面将与房屋/公寓等有关,您可以租用(与家人共度一周或与朋友一起度周末)。
用户可以注册并添加house
(可以扩展,可以添加更多房屋)。
所以我想出了这个基础数据库结构:
table users
-----------
user_id
user_email
user_password
table house
-----------
house_id
user_id
house_name
...
house_num_bedrooms
house_description
正如您所看到的,桌屋具有所有房屋的一些属性,例如卧室数量,可以停留的最小和最大人数等等。这些“修复属性”在表house
中分配。
现在用户必须能够选择设施,列表的一部分:
Category: kitchen
- Microwave [yes|no]
- Coffee machine [senseo|2 pot|3 pot]
- Water boiler [yes|no]
- Refrigerator [yes|no]
Category: bedrooms
- number of bedrooms [xx]
- number of 1-person-beds [xx]
- number of 2-person-beds [xx]
- number of 2-person boxspring [xx]
设施的后面是列出的可能性,因此有些设施是否存在,其他设施的数量(例如,26间卧室,20张单人床和6张2人床)。
一开始我会有一个很好的设施清单(大约100个)。
问题是,在数据库中保存这个的最佳方法是什么,使用灵活的数据库,还是一个名为facility的表,所有设施都是列?
你会怎么做?
答案 0 :(得分:0)
关于设施:你需要一个表,其中存储了所有设施 - id和名称(可能还有一个文本字段,其中包含有关该设施的额外信息,如2欧元/天) - 以及一个连接表,加入房屋和设施。此表还可以包含“#”数字'领域和成本'虽然后者是有问题的,因为一些设施每天的成本,如城市税,有些是每次入住的基础,如最后的清洁。这是一个练习。
碰巧,我只是想在佛罗伦萨租房,所以我很乐意给你一个例子。
APARTMENTS
id
daily price
name
address
FACILITIES
id
name
extra details
FACBYAPART // join table, find your own name
apartment
facility
quantity
cost
示例数据:
公寓 - 1,82,Green Fig; 2,95,Belfiore 2
设施 - 1,最后清洁; 2,Wifi; 3,单人床; 4,双人床
FacByApart - 1,1,1,40; 1,2,1,0; 1,3,1,0; 1,4,1,0; 2,1,1,0; 2,2,1,2; 2,3,2,0; 2,4,2,0。
数据显示Green Fig公寓最后清洁(费用为40欧元),免费无线网络,一张单人床和一张双人床。 Belfiore 2提供免费最后清洁服务,2欧元的无线网络连接,2张单人床和2张双人床。
这是根据需要定义数据库的标准方法。稍后,您需要一张日历表,该日历表将包含该日期的公寓,公寓,该公寓的价格以及该日期已预订公寓的人的姓名(没有值意味着公寓是免费的)。然后,您需要一张桌子给那些预订过的人....
答案 1 :(得分:0)
在这里,您可以根据需要使用用例进行架构设计:
APARTMENT
id:1;2
name:Valley View;City Center
address: Narayan Rd 50;Kanti Rd 30
daily price: 40;60
FACILITy
id:1;2;3;4;5;6;7;8
name:Double Bed;Kitchen Set;Double Bed BoxSpring;Car;Movie Theater;Refrigenator;Water boiler;Final Cleaning
remarks:;All kitchenware(refrigenerator, water boiler,cofee machine, microwave) Available;;;;;;;
APARTMENT_FACILITy
id:1;2;3;4;5;6;7
apartment_id:1;1;1;1;2;2;2
facility_id:1;2;4;5;1;6;7
quantity:2;1;1;1;1;1;1
cost:0;0;20;50;0;0;0
cost_frequency_days:0;0;1;7;0;0;0
APARTMENT_USER
id:1;2
email:abc@abc.com;xyz@abc.com
password;secret1_hash;secret2_hash
RENTAL_DETAILs
id:1;2;3;4
apartment_id;1
arrival_date:2015-01-10
departure_date:2015-01-13
apartment_user_id:1
<强>考虑:强>
Referred Apartment for both house and apartment. Users table holds email for username and password for the credentials, you can extend other fields as per your requirements. Add additional fields in other tables as per your requirements.
case #1-You have Valley View apartment at Naryanan Rd 50 and cost per day is $80, it offers 2 Double Beds and Kitchen. Additional Cost: Car - $20/day and Movie Theater $50/Week
case #2-You have City Center apartment at Kanti Rd 30 and cost per day is $30, it offers 1 Double Bed, Refrigenator and Water boiler.
Case #3-User abc@abc.com stay in Valley View Apartment for 4 days(2015-01-10 to 2015-01-13)=>40+80(Car-20X4days)+50(one week charge).