【发布时间】:2016-12-04 16:12:53
【问题描述】:
我不是很喜欢数据库,我有以下疑问:
我有这个 room_rate 表,它代表了一个住宿系统的预订率:
id bigint(20) unsigned NO PRI NULL auto_increment
rate_name varchar(255) NO NULL
rate double NO NULL
date_from datetime NO PRI NULL
date_to datetime NO PRI NULL
id_room_tipology_fk bigint(20) unsigned NO PRI NULL
time_stamp datetime YES NULL
我知道主键由以下字段组成:
1) id:一个自动递增的id。
2) date_from:开始日期。
3) date_to:教育日期。
4) id_room_tipology_fk:房间拓扑链接到另一个表。
此表的记录仅表示在 date_fromid_room_tipology_fk 表示)的房间的成本是多少/strong> 和 date_to 日期。
我想避免同一个房间的拓扑结构在同一时间范围内的表中有 2 条记录。
我在问是否使用以前的主键子集是好的,或者我是否必须排除 id 字段。
基本上我不能有这样的东西:
1 rate1 50 01/01/2017 10/01/2017 5 04/12/2016
2 rate2 70 01/01/2017 10/01/2017 5 06/12/2016
因为我不能在同一时间段内为同一房间类型 (5) 提供 2 个费率。
正确模拟这种情况的最佳解决方案是什么?
【问题讨论】:
-
要处理时间范围,您将不得不在 MySQL 中使用触发器。
-
@GordonLinoff 不,也许我不清楚...该记录表示特定时间范围内的房间成本是多少。租房者不能在相同的时间范围内插入相同的价格……这是我必须建模的约束
-
@GordonLinoff 或者我错过了什么?
-
。 .您是否考虑过不同的时间范围可能重叠,但又不完全相同?
-
@GordonLinoff 不,这不可能发生在我的要求中。我只需要在特定时间范围内记录特定房间类型。我该如何处理这种情况?
标签: mysql sql database primary-key rdbms