1
annielong 2016-07-06 10:59:53 +08:00
看不明白,一般状态是 有客房,脏房 净房 锁房 维修房等,具体状态变化都是由具体操作来更改的,
|
2
nimdanoob OP @annielong 因为,我们的应用是做一个代理,只需要知道 是否能够入住,其实 针对的不是某个房间,而是 某个类型的房间,比如商务大床房
|
3
menc 2016-07-06 11:28:55 +08:00
定时操作,数据库存的是数据,应当是正确的。
|
4
felixzhu 2016-07-06 12:23:48 +08:00
不太理解为什么要用位来存储,这样拓展起来和维护性都很差吧,毕竟往后很可能不止两个状态
我是觉得还是每天单独存一个字段比较好,分库分表什么的也好做 然后我的理解更新肯定是有人预定的时候就要去更新吧,毕竟有人预定了之后应该就不能再继续预定了所以不能是后面再来操作的 |
5
GeekGao 2016-07-06 12:32:21 +08:00
lz 想复杂了,用 bitmap 来做,这是图个啥啊… 同意楼上观点。
|
6
murmur 2016-07-06 12:36:42 +08:00 1
假设一个酒店有 1000 间客房,每个月有 90 条记录(假设早中晚可以分别预定),一年的数据量不过:
1000*90*12=1080000 ,也就 100 万条记录,任何一个数据库都可以轻松应付 何况过去的数据不会被查询,实际的数据规模都会远小于这个数 。。。先把需求琢磨明白,按按计算器再考虑设计好吗 |
7
lecher 2016-07-06 12:36:59 +08:00
每个房间每天一条新纪录就没有这个冲突的问题了。
查询当前空房和房间状态历史记录都方便。 |
9
nimdanoob OP @lecher
那这个表应该如何设计, 这个表包括一个 roomId 为外键 和 90 个分别表示 90 天方段的字段吗? 这个字段 名应该用 日期名来定义,还是 直接用 1-90 ,哪个更好。 每天也需要删除一个过期的字段,和新建一个字段 |
10
fy 2016-07-06 16:32:27 +08:00 via Android
楼主图个啥啊,每次修改状态留一条记录就是了,独立设个表
|
11
nimdanoob OP 创建一个表
字段是 某个酒店的房间类型(外键) 日期 房态 这样的话 是不是也是可行的 我的系统 是多个酒店,数据量大概在 90 万条 |
12
linuxchild 2016-07-06 20:18:15 +08:00 via Android
每天一个状态不好?
|
13
lecher 2016-07-06 20:25:17 +08:00 via Android
楼主想复杂了,数据集一条就三个字段必须,房间 ID ,房间状态,房间状态对应的日期。这个表就存基础数据,每一天的房间状态。
可以在表里面做一下冗余字段,比如楼层,房型,当天销售价格之类的方便后期做报表计算。 至于你要的九十天内的房间状态报表,完全可以根据表里面的基础数据做计算,需要的时候再按房间 ID 和日期取指定房间最近九十天的数据出来,用程序处理一下汇总,比如 select * from room_status where room_id= 1 and order_time < xxxx and order_time > yyyyy 。把基础数据取出来自己算。 这样每天房间的状态都是一条独立的历史记录,删不删都可以,增加和汇总报表的成本也不会太高。 |
14
Livid MOD 用一张单独的表记录房间状态的变化,房间最新的状态就是这个表中根据 room_id 和时间取到的最后一条记录,所有在现实中产生的变化(入住、退房、打扫……),都对应这张状态表中的记录。
|
15
lecher 2016-07-06 20:35:25 +08:00 via Android
万不得已别删数据呀,万一需求改了,要看上一年的房间状态,或者看上月同期的房间状态,没有数据不就疯了。
让每个房间每天的记录都独立作为一条数据,方便后期计算。 你这种用位标识合并多个记录到一条数据的做法,更像是把数据序列化在文本中。从零开始做一些小功能的时间会用这种方式。 既然有数据库,有些计算处理是可以交给数据库做的,没必要什么都在程序做。 |
16
187j3x1 2016-07-06 20:36:32 +08:00
id
room_type room_is_available date record_is_delete |
17
yudahai109 2016-07-07 17:40:01 +08:00
。。。状态表呗,表里有 id, time, state 这 3 个字段以及一个外键 room_id 。有一个默认状态, 0 代表无人状态, 1 代表有人状态,某一个固定时间,有人入住,增加一条记录, state 为 1 ;入住的人离开,再增加一条记录, state 为 0. 只要状态改变,增加记录。查询的时候,直接小于一个月的 time 所有记录,然后把记录写入到 echarts 中展示出来, echarts 有基于时间轴的图表。比如 0 代表红色, 1 代表绿色。简单的一比。
我们做物联网的,通常喜欢把设备状态用 redis 记录,用 zset 形式,更简单,也更方面,因为这些记录有个特性,我不需要 update ,不需要复杂的 query ,所以最好用 redis 记录,速度也比较快。 |