如何管理数据库中的计划?
我有应用程序所有者注册计划数据,用户可以注册30min的单位的计划。 (如会议室预订服务)
在这种情况下。
如何将数据存储在数据库中?
例如所有者输入
8/23 14:30-17:00
8/27 12:00-14:00
idea1)将每个时间表分成30分钟(多行)
8/23 14:30-15:00
8/23 15:00-15:30
8/24 15:30-16:00
.
.
8/27 13:30-14:00
idea2)
分为几天(2行)
8/23 14:30-17:00
8/27 12:00-14:00
idea3)
为每次注册创建表格行。
[idea1]很容易理解哪个时段被预订。 如果你想这样取消
cancel 8/23 15:30-16:00
它很容易处理。
但是如果你想这样, '每周四重复一次' 这是不可能的。
[idea3]它可以实现每个星期四的重复' 然而,理解预订或取消是非常复杂的。
[idea2]介于两者之间。
如何将计划数据存储在数据库中?
谷歌如何为谷歌日历存储?
答案 0 :(得分:0)
我通常有一张表,其中每一行都是一个'注册'。在行中,您存储开始日期/时间和结束日期/时间,当然还有关于“注册”的任何其他信息。例如:
CREATE TABLE `registration` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`start` datetime NOT NULL,
`end` datetime NOT NULL,
`comment` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
通过这种方式,您可以随时查找某些注册是否存在以下查询:
SELECT * FROM `registration`
WHERE `start` <= '2015-08-18 14:00:00'
AND `end` >= '2015-08-18 14:00:00'
如果您拥有id
,则取消注册很容易:
DELETE FROM `registration` WHERE `id` = 3
存储日期和时间而不是使用固定时间段的一个重要优点是,您可以轻松定义30分钟内更高精度的插槽。
Google如何存储他们的数据,当然是他们的商业秘密......