gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 19:05:43 28 4
gpt4 key购买 nike

在我的网络应用程序中,我有 parent 和保姆。
保姆将声明工作时间(时间间隔),该工作时间将存储在工作时间表中。
家长也会每隔一段时间表达自己的需求(暂时不需要存储)。
所以我设计了这样的可用性表:

+------------+---------------------+------+-----+---------+-------+
| 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. |
+---------+----------+------------+------------+

正如您所见,在 week_day = 0(星期一),保姆有两个时间段。
我的问题是:
1)有没有更好的方法来存储这些信息?
2) hour_start 和 hour_end 列的 var_char(10) 格式是否正确?
3)如果我添加 ID 主列(我认为我永远不会查询)是否有一些好处?
4)如果我将列 week_dayhour_starthour_end 的所有数据存储在序列化数组中会更好吗?

最佳答案

您的问题:

  1. 有更好的方法来存储这些信息吗?
  2. hour_start 和 hour_end 列的 var_char(10) 格式正确吗?
  3. 如果我添加 ID 主列(我认为我永远不会查询该列)是否有一些好处?
  4. 如果将 week_day、hour_start、hour_end 列的所有数据存储在序列化数组中是否会更好?

答案:

  1. 是的。小时开始和小时结束应该可以作为时间戳。您只需选择一个日期并将其用于每个日期即可忽略日期部分。它们还可以在几分钟内存储为 INT。凌晨 1 点是 60,凌晨 2 点是 120,等等。
  2. 没有。如果您需要与日期时间进行比较,它可能会变得复杂。如果时间以 24 小时格式存储(无上午/​​下午),则它可以工作,但随后您要与某个日期时间进行字符串比较。
  3. 当然!如果您需要构建一个编辑器,它允许您指定正在编辑的行以及保存时要更新的行。
  4. 不知道。这实际上取决于它们在您的应用程序中的使用方式。如果您需要构建涉及值的 SQL 查询(即列出两个日期时间之间所有可用的保姆),这不是一个好主意。

关于mysql - 可用性(时间间隔)表的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43530944/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com