MySQL 每日约会计划架构
MySQL Daily Appointment Scheduling Schema
我想创建一个预订系统。一方面,您有一个客户想要预约,另一方面,您有一个提供者有一个时间表,客户可以根据
注册为提供者时,他们可以选择工作日和时间。他们有 html 复选框,表示他们可以 select 的日子,一旦他们 select 一天,就会显示小时数(angular 中的下拉列表)见下文
在 MySQL 方面,我想我可以有一个 table ,其中每一天都有一个列,并在其中有一个以逗号分隔的列表,用于开始时间、结束时间、午餐时间和午餐长度
即提供者 select 周一和周二的工作时间如下
供应商'Schedule'Table
|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 | | | | | |
|----------|----------|--------|--------|---------|--------|------|--------|------|
table 将有一个计划 ID 和一个提供商 ID,它们 link 返回到 "provider" table 到 link 他的提供商时间表
还是这样更好?
|-------------|-------------|----------|-----------|----------|------------|--------------|
| 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 |
|-------------|-------------|----------|-----------|----------|------------|--------------|
如果不是post是
在我讨论我认为你应该如何构建你的 Provider 'Schedule' Table
之前,请确保 将来 去除绒毛。
更多关于绒毛的信息here。
进行以下更改可能会更好地为您服务:
- 将所有列 headers 设为小写,因为如果您尝试以其他方式查询数据库,这可能会防止出错
- 将
scheduleId
更改为id
- 您可以简单地放置一个
weekDay
列来存储该工作日的值,而不是有七列,一列代表一周中的每一天
- 然后为
startTime
、endTime
、lunchTime
和 lunchLength
创建列
- 最后,创建一个
scheduleId
列,将某人日程表的所有不同工作日行关联到一个提供商
一些注意事项:
- 您可以插入
0..6
,而不是在 weekDay
列中包含字符串 "Monday"
或 "Sunday"
,其中 0
是星期日,6
是星期六以使其与其他语言更兼容
- 您始终可以只将
scheduleId
保留在此 table 中,然后使用单独的计划日期创建另一个 table,并使用外键 link,但这可能证明造成的问题多于它的价值
- 将
lunchLength
保持为整数,因为这将使一切变得更容易
尽可能多地拆分数据的原因是,如果您使用另一种语言进行查询,则可能需要完成所有拆分 Monday
和 Tuesday
列的额外工作例如,如果您只想要 startTime
。
希望以上是一个解决方案或允许您考虑另一种方法。
这是一个 Java Android 库,您可以将其转换为 Java 脚本:https://bitbucket.org/warwick/schedule_utils_demo/src/master/
运行客户端语言的代码将减轻服务器的负担,因为调度代码效率非常低。
希望对您有所帮助。
我想创建一个预订系统。一方面,您有一个客户想要预约,另一方面,您有一个提供者有一个时间表,客户可以根据
注册为提供者时,他们可以选择工作日和时间。他们有 html 复选框,表示他们可以 select 的日子,一旦他们 select 一天,就会显示小时数(angular 中的下拉列表)见下文
在 MySQL 方面,我想我可以有一个 table ,其中每一天都有一个列,并在其中有一个以逗号分隔的列表,用于开始时间、结束时间、午餐时间和午餐长度
即提供者 select 周一和周二的工作时间如下
供应商'Schedule'Table
|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 | | | | | | |----------|----------|--------|--------|---------|--------|------|--------|------|
table 将有一个计划 ID 和一个提供商 ID,它们 link 返回到 "provider" table 到 link 他的提供商时间表
还是这样更好?
|-------------|-------------|----------|-----------|----------|------------|--------------| | 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 | |-------------|-------------|----------|-----------|----------|------------|--------------|
如果不是post是
在我讨论我认为你应该如何构建你的 Provider 'Schedule' Table
之前,请确保 将来 去除绒毛。
更多关于绒毛的信息here。
进行以下更改可能会更好地为您服务:
- 将所有列 headers 设为小写,因为如果您尝试以其他方式查询数据库,这可能会防止出错
- 将
scheduleId
更改为id
- 您可以简单地放置一个
weekDay
列来存储该工作日的值,而不是有七列,一列代表一周中的每一天 - 然后为
startTime
、endTime
、lunchTime
和lunchLength
创建列
- 最后,创建一个
scheduleId
列,将某人日程表的所有不同工作日行关联到一个提供商
一些注意事项:
- 您可以插入
0..6
,而不是在weekDay
列中包含字符串"Monday"
或"Sunday"
,其中0
是星期日,6
是星期六以使其与其他语言更兼容 - 您始终可以只将
scheduleId
保留在此 table 中,然后使用单独的计划日期创建另一个 table,并使用外键 link,但这可能证明造成的问题多于它的价值 - 将
lunchLength
保持为整数,因为这将使一切变得更容易
尽可能多地拆分数据的原因是,如果您使用另一种语言进行查询,则可能需要完成所有拆分 Monday
和 Tuesday
列的额外工作例如,如果您只想要 startTime
。
希望以上是一个解决方案或允许您考虑另一种方法。
这是一个 Java Android 库,您可以将其转换为 Java 脚本:https://bitbucket.org/warwick/schedule_utils_demo/src/master/
运行客户端语言的代码将减轻服务器的负担,因为调度代码效率非常低。
希望对您有所帮助。