MySQL每日预约调度架构

时间:2016-03-08 17:05:52

标签: html mysql database-schema jsonschema

我希望创建一个预订系统。一方面,您有一个客户希望预约,另一方面,您有一个提供商,其中包含客户可以预订的时间表

注册成为提供者时,他们可以选择工作日和工作时间。他们有html复选框,表示他们可以选择的日期,一旦他们选择一天显示小时数(下拉角度),如下所示

html schedule form

在MySQL方面,我想我可以拥有一个每天都有一个列的表,并在那里有一个以逗号分隔的列表,包括开始时间,结束时间,午餐时间和午餐长度

即。提供商选择星期一和星期二从下面的小时开始工作

提供商'日程安排'表

|ScheduleID|ProviderID|Monday  |Tuesday |Wednesday|Thursday|Friday|Saturday|Sunday|
|----------|----------|--------|--------|---------|--------|------|--------|------|
|1         | 2        |09:00am,|10:00am,|         |        |      |        |      |
|          |          |08:30pm,|07:00pm,|         |        |      |        |      |
|          |          |12:00pm,|01:00pm,|         |        |      |        |      |
|          |          |30 min  |60 min  |         |        |      |        |      |
|----------|----------|--------|--------|---------|--------|------|--------|------|

该表将具有一个计划ID和一个提供者ID,该ID将链接回"提供者"表将提供者链接到他的日程表

或者这样更好吗?

|-------------|-------------|----------|-----------|----------|------------|--------------|
| schedule_id | provider_id | week_day |start_time | end_time | lunch_time | lunch_length |
|-------------|-------------|----------|-----------|----------|------------|--------------|
| 1           | 1           | Monday   | 06:00 AM  | 08:00 PM | 12:30 PM   | 60           |
|-------------|-------------|----------|-----------|----------|------------|--------------|
| 2           | 1           | Friday   | 06:00 AM  | 08:00 PM | 12:30 PM   | 60           |
|-------------|-------------|----------|-----------|----------|------------|--------------|
| 3           | 2           | Tuesday  | 06:00 AM  | 08:00 PM | 12:30 PM   | 60           |
|-------------|-------------|----------|-----------|----------|------------|--------------|

如果不发布

的内容

2 个答案:

答案 0 :(得分:0)

在我开始考虑你应该如何构建Provider 'Schedule' Table之前,请确保将来,删除绒毛。

更多关于绒毛here

您可以更好地进行以下更改:

  • 将所有列标题设置为小写,因为如果您尝试以其他方式查询数据库,这可能会阻止错误
  • scheduleId更改为id
  • 您可以简单地添加一个weekDay列来存储该工作日的值
  • ,而不是有七列,一周中的每一天。
  • 然后为startTimeendTimelunchTimelunchLength
  • 创建列
  • 最后,创建一个scheduleId列,将某人的所有不同工作日时间表连接到一个提供商

一些注意事项:

  • 而不是在"Monday"列中添加字符"Sunday"weekDay,而是插入0..6,其中0是星期日6是一个星期六,使其与其他语言更兼容
  • 您可以随时在此表中保留scheduleId,并创建另一个包含各个计划日期的表格,并将其与外键相关联,但这可能会导致更多问题,而不是它的价值
  • 保持lunchLength只是一个整数,因为这将使一切变得更容易

尽可能分割数据背后的原因是因为如果您使用其他语言进行查询,则可能需要完成分割MondayTuesday列的所有额外工作只想要startTime例如。

希望以上是解决方案或允许您考虑另一种方法。

答案 1 :(得分:0)

这是一个Java Android库,您可以将其转换为JavaScript:https://bitbucket.org/warwick/schedule_utils_demo/src/master/

以客户端语言运行代码可以节省服务器的负担,因为调度代码效率很低。

希望这会有所帮助。