【问题标题】:What would be the optimal structure for a fixed availability schedule?固定可用性计划的最佳结构是什么?
【发布时间】:2018-12-17 18:32:57
【问题描述】:

我正在设置一个日历,用户可以在该日历上指明他们何时有空。日历每天分为 3 个时间段,每周 7 天(周一-上午、周一-下午、周一-晚上)。

我有点纠结于将其存储在我的数据库中的最佳方式是什么。我想过做:

开始日期

结束日期

user_id

时间段

user_id

user_id& mon1 mon2 mon3 ... 太阳3 创建 21 列似乎不是最优的,但它确实使可用性查询变得非常容易。

我想在定义时段的时间方面保持一定的灵活性。第二个似乎给了我这个,因为我可以在之后定义每天的小时数。

最后我必须能够在 2019-02-01 13:00:00 - 2019-02-01 17:15:00 查找谁有空。这些日期与时间段不对应。

【问题讨论】:

    标签: mysql database calendar schedule


    【解决方案1】:

    您可以使用 3 个字段来存储此信息,

    slot_date - to store date of slot like 2018-12-17, 2018-12-18, etc
    slot_time - to store time slot like 13:00:00, 15:00:00, etc
    user_id - to store user identifier
    

    假设您的 2 个具有这些字段的用户的示例数据看起来有点像这样,

    slot_date    slot_time    user_id
    ---------------------------------
    2018-12-17    14:00:00      1
    2018-12-17    17:00:00      2
    

    您可以轻松获取给定时间段内用户的可用性。例如,您想获取今天下午时段的可用性(考虑到下午 1 点到 4 点是晚上时段),可以通过以下查询检索,

    SELECT slot_date, slot_time, user_id
    FROM tbl_slot 
    WHERE slot_date = '2018-12-17'
    AND slot_time BETWEEN '13:00:00' AND '15:00:00'
    

    同样,您可以将查询中的slot_time 子句更改为适用于早晚时段。

    更新

    根据 OP 的要求,如果用户选择一天和一个时段,它将适用于每个月/年。基于它,您可以消除 slot_date 列并使用 day_of_week 将存储从 1 到 7 的整数值,即(Sun to Sat)

    day_of_week    slot_time    user_id
    -----------------------------------
        2           14:00:00      1
        2           17:00:00      2
    

    然后,获取所有下午可用性的查询将是,

    SELECT day_of_week, slot_time, user_id
    FROM tbl_slot 
    WHERE day_of_week = '2'
    AND slot_time BETWEEN '13:00:00' AND '15:00:00'
    

    【讨论】:

    • 感谢您的回答,但每周的可用性不是特定的。用户只需表明他们每周一下午(或一周中的其他时段)都有空
    • 是的,它仍然适用于一个月或一年中的任何一天。根据您的要求,您也可以查询日期范围并获取可用性。
    • 好的,但它不应该存储任何特定的日期。如果您将 slot_date 替换为 day_of_week 我猜该方法可能会起作用
    • 如果用户说星期一晚上,是否意味着他的空闲时间是每个月/年的每个星期一晚上?
    • 是的!这更像是一个普遍的偏好,而不是一个非常精确的指示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多