我必须存储可以每周、每天或每月组织的预定活动(例如上课时间)。例如,事件可以在每周一和周三或每月的第二个周四发生。有没有办法将这些信息存储在遵循 3NF 的 RDBMS 中?
编辑:这不是家庭作业;我正在和一个朋友一起构建一些东西来启发我们自己,我们希望它在 3NF 中。
具体来说,我正在尝试存储 RC 教区的弥撒和忏悔时间时间表。这些可以通过多种方式安排,例如每个星期日的 x 时间或每个星期二/星期四的不同时间。有时仅在该月的第三个星期五提供,而另一些则仅在每年的特定时间提供一次。我不仅需要存储这些信息,还需要查询它,以便我可以快速获得第二天或一周或其他时间的可用时间的完整列表。
我认为严格来说 3NF 不是必需的,但如果是的话,对我们来说会更容易,而且最好立即纠正它,而不是稍后更改我们的架构。
要记录“周期性重复”的规则,您可以从以下内容中获得灵感:crontab http://www.manpagez.com/man/5/crontab/的格式,当然,您不需要限制分钟和小时,而是需要星期、月份等。由于时间表中可能有多个(例如)工作日,出于 NF 的目的,您需要使用典型的中间表来表示多对多关系,即每行只有两个外键(一个到事件主表) ,一个工作日的表)——当然对于一个月中的几天等也是类似的。
据推测,每个预定的事件也将具有持续时间、类别、也许是位置、名称或描述。
这种形式的“正常程度”(一旦您处理了上述多对多关系的“集合”)主要取决于这些不同的属性是否以及如何相互依赖 - 例如,如果某个事件中的每个事件类别具有相同的持续时间,您需要有一个单独的辅助表,其中包含 id、类别和持续时间,并在该表中使用外键而不是重复配对信息。但是从你所说的来看,我没有看到任何本质上违反正常形式规则的情况,除了这种依赖可能性(这不是你对事件调度所指定的少量内容所固有的)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)