每日时间表(MySQL)

时间:2015-05-05 13:49:17

标签: mysql

这就是我所拥有的:

days_of_week
+----+-------------------+
| id | name              |
+----+-------------------+
|  1 | Monday            |
|  2 | Tuesday           |
|  3 | Wednesday         |
|  4 | Thursday          |
|  5 | Friday            |
|  6 | Satday            |
|  7 | Sunday            |
+----+-------------------+

time
+----------+-------------+
| id       | time        |
+----------+-------------+
| Integer  | hh:mm:ss    |
+----+-------------------+

schedule
+---------+---------+----------+---------+
| id      | user_id | time_id  | day_id  |
+---------+---------+----------+---------+
| Integer | Integer | Integer  | Integer |
+---------+---------+----------+---------+

我应该在哪里放置活动栏,例如早餐08:30。现在'早餐'必须存放在这里。我无法弄清楚目前的位置,但是如果有人知道如何正确归一化这请与我分享,并告诉我为什么你这样做或推荐。非常感谢提前。

我想要实现的目标:

Monday: Date of that day here
08:00 Breakfast
08:30 Something else
09:00 Introduction

Tuesday: Date of that day here
08:00 Breakfast
09:00 Hackathon begins
12:30 Lunch

你明白了。

澄清:

用户可以选择添加计划,然后创建此计划并包括在这些选定日期内将发生的事件的计划,例如,如果发生了3天的Hackathon,则用户可以创建这三天的时间表,将会有时间和活动。例如。 08:00早餐,09:00简介,09:30设备安装

发现这个: 非常标准化,Method for storing/displaying repeating weekly schedule

然而,重复每周时间表更多,这不是我想要实现的。

2 个答案:

答案 0 :(得分:1)

您是否按周计划重复一周?

如果不是,我会考虑删除星期和时间表以及使用标准DATETIME字段的日期。您可以在模型验证中弹出任何限制性措施,它也可以使检测碰撞更容易。

您是否希望定期重复活动?

如果是这样的话,我会制作一个活动表并从时间表中引用它。

如果没有,我可能会满足于描述和时间。

<强> SIMPLE

  • 时间表(id,description,datetime)

可重复的活动

  • 时间表(id,activity_id,datetime)
  • 活动(身份证,说明)

周计划周(具有可重复的活动)

  • 日程安排(id,activity_id,day_of_week_id,时间)
  • 活动(身份证,说明)
  • Day_of_week(id,title)

始终选择满足您要求的最简单选项!

答案 1 :(得分:1)

规范化!既然你已经这样做了:

// others omitted
activity(id, description)
day(id, time_id, activity_id)
schedule(id, day_id)

我可能会错过一些东西,但愿意纠正。