Mysql 如何设计一个既可以引用另一个表也可以作为自定义项的表

Mysql 如何设计一个既可以引用另一个表也可以作为自定义项的表,mysql,sql,database-design,Mysql,Sql,Database Design,我有一个网站,有许多不同的实体企业作为客户 我需要一张表格,上面有每家公司的“截止日期” 我最初的设计是将所有通常的美国联邦假日都列在一个表中,然后通过外键从“关闭日”主表中引用该表。这使得在UI中设置复选框非常容易,这样他们就可以轻松地勾选联邦假日 但我还需要支持自定义截止日期 我的初步设计如下: +-------------+ | close_dts | +-------------+ +--------------+ --------------+ | holi

我有一个网站,有许多不同的实体企业作为客户

我需要一张表格,上面有每家公司的“截止日期”

我最初的设计是将所有通常的美国联邦假日都列在一个表中,然后通过外键从“关闭日”主表中引用该表。这使得在UI中设置复选框非常容易,这样他们就可以轻松地勾选联邦假日

但我还需要支持自定义截止日期

我的初步设计如下:

+-------------+
| close_dts   |     +-------------+     +--------------+
--------------+     | holidays    |     | holiday_tags |
| id          |     +-------------+     +--------------+
| holiday_id  | --> | id          |     | id           |
| custom_date |     | holiday_tag | --> | tag          |
+-------------+     | date        |     | name         |
                    +-------------+     +--------------+
在哪里

  • 假日标签只是每年发生的主要假日的列表
  • 假日是每年每个假日的实际日期
  • close_dts具有指向假日表的链接或自定义日期
我在这里问的基本问题是如何处理我通常会遇到的情况 喜欢链接到另一个标准项表,但偶尔也会定义自定义项 未链接到任何内容的项目

这是MySQL,如果有关系的话


谢谢。

您的设计还可以。您可以添加一个约束,以便始终只填充假日id或自定义日期

但是,您可以使模型更简单:

+----------------+ | close_dts | +--------------+ -----------------+ | holiday_tags | | id | +--------------+ | holiday_tag_id | --> | id | | close_date | | tag | +----------------+ | name | +--------------+ +----------------+ |关闭dts|+--------------+ -----------------+|假日标签| |id|+--------------+ |假日标签id-->id| |关闭日期标签| +----------------+|姓名| +--------------+
假日标记id可为空。

这是一个很好的约束点。你能给我一个暗示,那样的事情会是什么样子吗?我不知道你可以做异或约束。没错,MySQL不支持检查约束。但您可以在插入/更新触发器之前签入数据,并使它们在无效数据上引发错误。然而,有了我建议的模型,你就不需要它们了。您只需存储所有结束日期,并将其中一些日期标记为假日,仅此而已。而且访问也很容易:您总是在close_dts中查找日期。这意味着更简单的查询。