如何管理数据库中的计划数据结构?

时间:2015-08-18 07:51:40

标签: mysql sql

如何管理数据库中的计划?

我有应用程序所有者注册计划数据,用户可以注册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]介于两者之间。

如何将计划数据存储在数据库中?

谷歌如何为谷歌日历存储?

1 个答案:

答案 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如何存储他们的数据,当然是他们的商业秘密......