【发布时间】:2011-04-29 22:04:44
【问题描述】:
对于我的网络应用,我需要处理访问请求。输入周一至周日时间表的请求,指定每天的小时数。本周计划最多可重复 52 次。一个用户在一周内可以有多个日程安排(周一 8-9 和周一 10-11)有以下要求:
- 可搜索/可过滤
- 检测重叠请求
我希望数据库能够处理尽可能多的提升。现在我能想到的唯一设计是将每天的访问存储为单独的记录。这样做我会拉取用户的所有访问并循环以确定新请求是否重叠。这需要代码或存储过程。
有没有人有更好的数据库模型想法或处理代码重叠的简洁方法?
【问题讨论】:
-
单日的“记录”非常原始,未标准化。重复事件和 52 周呢?重复事件(没有人会对手动重复的整体感到高兴)和 52 周呢?跨越一天边界的预订(23:00 到 01:00)呢?跨越一周的界限?你真的必须先自己做一些工作。期望人们为此提供完整的数据模型是不合理的。是的,我有一个完整的 DM,在生产部门工作,但不,它是商业的。
-
我不想要完整的数据模型。我不是 DBA,我希望朝着正确的方向迈出一步。缺少序列化数据,我现在不知道如何准确地规范化。粒度只需要到分钟,但你提到的所有事情都是非常好的问题。谢谢,我会考虑的
-
好的。我不使用 Colin 的方法(BETWEEN 等会导致工作表变慢),但我可以向您保证,使用存储 MeetingStartTime 和 MeetingDuration 的标准化(零重复)表对 SQL 代码或性能没有问题。 IE。不存储“跨度”;每次实际会议只有一行;可以轻松识别空块或冲突块。 “跨度”和重复事件是预测。
-
您如何记录会议重复的次数和间隔?会议可以每年/每月/双月/每周/双周/每天重复吗?这个重复间隔可以混合吗?对于我的应用程序,它目前是每周唯一的间隔,但我很好奇除了为每个可能的间隔添加一列并从那里投影之外,如何处理不同的间隔率
标签: c# database entity-framework database-design data-modeling