- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在为一个简单的议程应用程序寻找一个数据库模型,但找不到。 StackOverflow 有很多关于这个问题的问题,但没有一个提供具体的答案。所以我进一步研究并提出了我自己的模型,我将其呈现给您,以便您可以帮助我评估和改进它。也可以作为以后找这个的人的引用。
此模型的灵感来自 Outlook 提供的功能,尽管它已被大幅削减。它旨在得到大量应用程序代码的支持。
CREATE TABLE dbo.Users (
UserId UNIQUEIDENTIFIER NOT NULL,
CONSTRAINT PK_Users PRIMARY KEY (UserId))
CREATE TABLE dbo.Appointments (
-- Keys.
AppointmentId INT IDENTITY NOT NULL,
ParentAppointmentId INT NULL,
UserId UNIQUEIDENTIFIER NOT NULL,
-- General fields.
EventDescription VARCHAR(500) NULL,
EventName VARCHAR(50) NOT NULL,
-- Schedule fields.
IsCancelled BIT NOT NULL, /* To cancel only one appointment in a series of recurring appointments. */
AppointmentDate DATE NOT NULL,
IsAllDayEvent BIT NOT NULL,
StartTime TIME NULL, /* This field is required in case IsAllDayEvent = false */
DurationInMinutes INT NULL, /* This field is required in case IsAllDayEvent = false */
RecurrenceCount SMALLINT NULL,
RecurrenceEndDate DATE NULL,
RecurrenceType TINYINT NULL, /* 1 = Daily, 2 = Weekly (other recurrence types are not supported by design) */
WeeklyRecurrenceDays VARCHAR(13), /* 1,2,3,4,5,6,7 (each number represents a day of the week, where 1 = sunday) */
-- Constraints.
CONSTRAINT PK_Appointments PRIMARY KEY (AppointmentId),
CONSTRAINT PK_Appointments_Appointments FOREIGN KEY (ParentAppointmentId) REFERENCES dbo.Appointments(AppointmentId),
CONSTRAINT FK_Appointments_Users FOREIGN KEY (UserId) REFERENCES dbo.Users(UserId))
亮点:
DurationInMinutes
的值添加到StartTime
来获得约会结束时间。IsAllDayEvent = 1
时,约会可以持续一整天。在这种情况下,不需要字段 StartTime 和 DurationInMinutes。RecurrenceCount
或 RecurrenceEndDate
字段确定重复约会的次数。一次只有其中一个包含一个值。ParentAppointmentId
的用途。假设有一个名为“Example appointment”的定期约会,配置为每天重复 5 次。然后假设用户选择仅编辑系列中的第三个约会,将其名称更改为“更新约会”。这将导致应用程序复制数据库中的原始约会记录,但使用新名称并使其引用原始约会(父)。应用程序有责任检测系列中有一个具有不同属性的约会,并在计算要在日历中显示的重复时考虑到这一点,正如我之前提到的。ParentAppointmentId
功能:用户可以取消一系列中的一个或多个约会。例如。 “我希望这个事件发生在所有星期四,但不是在那个特定的星期四”。这将再次使复制过程如上,但将子约会 IsCancelled
字段设置为 1
(true)。然后,应用程序应在日历中显示该系列时“隐藏”此特定约会。ParentAppointmentId
功能:简化应用程序逻辑,并遵循 Outlook 模型,当用户更改原始约会的重复设置,从而导致重新计算整个系列时,子约会迷路了。嗯,我想就是这样。如果您同意这种方法,请告诉我,如果您不同意,如果不采用完全不同的方法,您会改变什么。
提前致谢。
最佳答案
我不确定你在这里做了什么可怕的事情......
一个想法是完全分解 parentAppointmentId 并构建一个新的关联表,该关联表仅链接两个任意约会。然后您可能会放置一些角色或类型列来确定正在定义的关系类型。
通过这种方式,您可以灵活地在系列中允许更复杂的关联(例如跳过 - 重命名等),并允许一个约会可能是许多其他约会的结果或后续 - 不是只有一个。
当只是考虑规范化时 - 重复信息严格来说也不是约会本身的一部分。或许考虑将重复信息提取到新表中并仅与相关约会相关联。
关于database-design - 具有循环特征的议程应用数据库模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14526691/
我有一个包含用户及其每周日历的 mysql 表。 每个用户都可以设置自己一周的空闲时间(早上、下午、晚上/周一到周六),并且不会经常更改,几乎永远不会更改。 想象一下,这些用户是健身房的私有(priv
我无法动态更改选定的日期。例如,我想在离开屏幕时将选定的日期更改为今天;我不想在今天以外的其他日期离开...我该怎么做?我正在使用议程。另外,我想在用户单击该屏幕中的某个按钮时更改选定的日期。如果我只
如何添加操作监听器,以便在单击议程上的约会时打开一个新窗口,其中包含有关该特定单击约会的更多详细信息。 最佳答案 Agenda 似乎没有相应的 api。您可以看到议程的来源:AbstractAppoi
我在使用带有议程 View 的全日历时遇到了一些问题。在周 View 中,网格内没有垂直边框,如您在这张图片中所见: http://cjoint.com/14av/DDlkmc7Kjgp.htm在基本
议程/cron 支持这种情况的重复吗?示例:在周一和周二每两周重复一次工作,我可以每两周重复一次工作,但不能在特定日期重复一次工作,如果是,时间间隔的表达式是什么。周和日都可以是动态的。谢谢 最佳答案
我想在每天 8:30 到 17:00 的日程 View 中只显示营业时间, 像下面这样: 最佳答案 您是在问如何隐藏营业时间以外的时间吗?如果是这样,请使用 minTime 和 maxTime 选项:
从议程 View 中,我想按一个键并从该 TODO 条目中删除 SCHEDULED: 行。 最佳答案 按 C-u C-c C-s 要重建议程缓冲区,请按 r 请参阅 The manual 中的议程命
使用 Agenda ,是否可以设置作业在失败后多次重试? 最佳答案 不直接支持重试作为选项,但通过将失败的作业 nextRunAt 设置为 future 时间,它有一个简单的解决方法。 引用这篇文章:
我已将 FullCalendar 版本从 v. 2.3.1 更新到 2.4.0,之前一切正常,但现在在 周 View 和 议程 View 中 我无法添加该事件。这件事很奇怪,因为在月 View 中我看
我希望 Org-mode 议程在我打开 Emacs 时自动显示我今天必须做的事情。 org-agenda 命令是交互式的,因此它似乎不适用于此目的。 有没有办法在 Emacs 启动时显示 Org-mo
最近,我开始使用来自以下 repo 的日历控件:https://github.com/wix/react-native-calendars最初日历控件正确对齐所有项目,但似乎有些东西完全破坏了对齐。
我通过表单从用户那里收集了 Activity 日期、标题、地点、参加者、开始和结束时间、位置和其他元数据,然后存储在 mysql 数据库表中。我想从数据库中检索事件并以 Google 日历样式列出它们
我正在使用来自 http://jfxtras.org/ 的 FXtras(版本 8.0-r5)议程,我在其中定义了两种类型的约会:个人(group1)和共享(group2)。用户可以编辑个人约会的时间
我想安排这样的任务: 安排 11 月 1 日开始的任务 之后每个月重复该任务 我不想在任务安排在 11 月 1 日才开始的那一刻运行它。 我正在使用 Agenda.js我需要确保我正确地执行了此操作,
我尝试使用以下 CSS 隐藏 kendo 调度程序议程 View 中的时间列。 .k-scheduler-timecolumn{ visibility:collapse !important;
我是一名优秀的程序员,十分优秀!