数据库表规范化问题

来源:这里教程网 时间:2026-03-03 17:35:42 作者:

我正在制作一个在线日历。

一个人将能够创建en事件,然后可以选择添加“无限”或“从”到“结束”日期时间。如果您选择添加“从”到“结束”,您可以选择每周或每个月的每天都没有重复或重复。

我想知道创造这些关系的最佳方式是什么。

这是我现在有我的桌子:

Table: EventsColumns: name, description, date_time (foreign key)Table: Date_timeColumns: from, to, repeat (foreign key)Table: RepeatColumns: mode, days1: "daily", "every 2nd day"2: "weekly", "Monday, Wednesday"3: "monthly", "1st, 12th, 19th"

有了这个,我遇到了一些问题。

在这里,我必须指定events.date_time,因为它具有外键约束。如何让用户选择未指定任何DateTime,只需将其设置为无限“。

重复也是如此。如果用户设置了DateTime,我希望能够设置重复到无的可能性。

有人可以指向正确的方向。

谢谢

看答案

我建议重新考虑模式,我的提案是这样的:

编辑: 由于事件可能没有超过一个时期,因此使用更好   和   作为列,如果它们为null,则事件无限有效。

Table: EventsColumns: id, name, description, from (nullable), to (nullable)Table: RepeatColumns: mode, days, event_id (foreign key to Event)1: "daily", "every 2nd day"

相关推荐