Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 可用性(时间间隔)表的数据库设计_Mysql - Fatal编程技术网

Mysql 可用性(时间间隔)表的数据库设计

Mysql 可用性(时间间隔)表的数据库设计,mysql,Mysql,在我的网络应用程序中,我有父母和保姆。 保姆将声明工作可用性(时间间隔),并将其存储在可用性表中。 家长也会在时间间隔内表达他们的需求(此时无需存储)。 因此,我将可用性表设计为: +------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------

在我的网络应用程序中,我有父母和保姆。
保姆将声明工作可用性(时间间隔),并将其存储在可用性表中。
家长也会在时间间隔内表达他们的需求(此时无需存储)。
因此,我将可用性表设计为:

+------------+---------------------+------+-----+---------+-------+
| Field      | Type                | Null | Key | Default | Extra |
+------------+---------------------+------+-----+---------+-------+
| user_id    | bigint(20) unsigned | NO   | MUL | NULL    |       |
| week_day   | tinyint(1)          | NO   |     | NULL    |       |
| hour_start | varchar(10)         | NO   |     | NULL    |       |
| hour_end   | varchar(10)         | NO   |     | NULL    |       |
+------------+---------------------+------+-----+---------+-------+
数据示例如下:

+---------+----------+------------+------------+
| user_id | week_day | hour_start | hour_end   |
+---------+----------+------------+------------+
|      10 |        0 | 08:00 a.m. | 10:00 a.m  |
|      10 |        0 | 02:00 p.m. | 04:00 p.m. |
|      10 |        1 | 10:00 p.m. | 11:00 p.m. |
|      10 |        2 | 09:00 a.m. | 12:00 a.m. |
|      10 |        3 | 03:00 p.m. | 05:00 p.m. |
|      10 |        4 | 10:00 a.m. | 12:00 a.m. |
|      10 |        5 | 12:30 a.m. | 02:00 p.m. |
|      10 |        6 | 12:30 a.m. | 02:00 p.m. |
+---------+----------+------------+------------+
如您所见,对于周日=0(周一),保姆有两个时间段。
我的问题是:
1) 有没有更好的方法来存储这些信息?
2) 小时开始和小时结束列的var_char(10)格式正确吗?
3) 如果我添加一个ID主列(我认为我永远不会查询该列),会有什么好处吗?
4) 如果我将周日小时开始小时结束列的所有数据存储在一个序列化数组中是否更好?

您的问题:

  • 有没有更好的方法来存储这些信息
  • 小时开始和小时结束列的var_char(10)格式正确吗
  • 如果我添加一个ID主列(我认为我永远不会查询它),会有什么好处吗
  • 如果我将week_day、hour_start、hour_end列的所有数据存储在一个序列化数组中,会更好吗
  • 答复:

  • 对。小时开始和小时结束可以作为时间戳。只需选择一个日期并对每个日期使用它,即可忽略日期部分。它们也可以在几分钟内存储为INT。凌晨1点为60,凌晨2点为120,以此类推
  • 不。如果你需要与约会时间进行比较,它可能会变得复杂。如果时间是以24小时格式存储的(没有am/pm),那么它可能会工作,但是您正在与一些日期时间进行字符串比较
  • 绝对是!如果需要构建编辑器,它允许您指定要编辑的行以及保存时要更新的行
  • 不知道。这实际上取决于它们在应用程序中的使用方式。如果您需要构建包含这些值的SQL查询(即列出两个约会时间内可用的所有保姆),这不是一个好主意

  • hour_start和hour_end应该是timestamp数据类型或float number,以便更容易查询。hour_start和hour_end也可以是从午夜开始的秒或分钟的整数。按照惯例,周一是第一天,周日可以是第0天或第7天。是的。不,不,不,穆尔?呃?????????