gpt4 book ai didi

mysql - 具有不同属性的实体的数据库规范化

转载 作者:行者123 更新时间:2023-11-29 06:59:49 24 4
gpt4 key购买 nike

在我的应用程序中,我有一个名为 actions 的实体表,具有各种属性。为了澄清这种情况,下面是表 actions 结构:

  1. ID,
  2. status_id(不为空),
  3. section_id(不为空),
  4. job_id(不为空)
  5. equipment_id (),
  6. cause_id (),
  7. solution_id (),
  8. 创建时间,
  9. 已关闭,
  10. action_type(不为空)char(3)

其中以 _id 为后缀的所有字段都是外键,而 action_type 是非常有限且已定义的操作类型列表,因此我在配置文件中定义了它,即action_type 没有数据库实体。

我的问题比这个更笼统:Can a foreign key be NULL and/or duplicate?我在其中询问标准化原理。

就我而言,某些操作类型不需要,例如 equipment_id,而其他操作类型则需要 equipment_id,但不需要同时使用 cause_idsolution_id

在我的数据库设计中,actions 表看起来像多对多结合表。

上述设计允许轻松获取有关部分和作业的许多统计数据,而无需执行复杂的连接查询。

我的问题是:我的标准化和设计正确吗?

最佳答案

是的。包含 NULL 的外键表示关系是可选的情况,并且该关系在此实例中不存在。

在您的情况下,可能有一些条目根本没有相应的设备,因此,equipment_id 被保留为 NULL。当对引用表进行联接时,外键中带有 NULL 的行将被删除。

关于mysql - 具有不同属性的实体的数据库规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43918969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com