Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 具有不同属性的实体的数据库规范化_Mysql_Database Design_Database Normalization - Fatal编程技术网

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

Mysql 具有不同属性的实体的数据库规范化,mysql,database-design,database-normalization,Mysql,Database Design,Database Normalization,在我的应用程序中,我有一个名为actions的实体table,它具有不同的属性。为了澄清这一情况,以下是表操作结构: 身份证 状态标识(非空) 节号(非空) 作业id(不为空) 设备id(null) 原因id(null) 解决方案id(null) 创建于 于 动作类型(非空)字符(3) 其中所有后缀为\u id的字段都是外键,操作类型是非常有限和定义的操作类型列表,因此我在配置文件中定义了它,即操作类型没有数据库实体 我的问题比这个更一般:我问的关于规范化原则的问题在哪里 在我的例子中,一些动作

在我的应用程序中,我有一个名为
actions
的实体table,它具有不同的属性。为了澄清这一情况,以下是表
操作
结构:

  • 身份证
  • 状态标识(非空)
  • 节号(非空)
  • 作业id(不为空)
  • 设备id(null
  • 原因id(null
  • 解决方案id(null
  • 创建于
  • 动作类型(非空)字符(3)
  • 其中所有后缀为
    \u id
    的字段都是外键,
    操作类型
    是非常有限和定义的操作类型列表,因此我在配置文件中定义了它,即
    操作类型
    没有数据库实体

    我的问题比这个更一般:我问的关于规范化原则的问题在哪里

    在我的例子中,一些动作类型不需要,例如,对于
    设备id
    ,其他动作类型需要
    设备id
    ,但不同时需要
    原因id
    解决方案id
    ,等等

    在我的数据库设计中,
    actions
    表看起来像是多对多共轭表

    上述设计允许轻松地获得有关节和作业的许多统计数据,而无需执行复杂的联接查询


    我的问题是:我的规范化和设计正确吗?

    是,如果这些id不太重要,那么在规范化中可以将它们设置为null或删除:)

    是,如果这些id不太重要,那么在规范化中可以将它们设置为null或删除:)

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


    在您的情况下,可能存在一些条目,其中根本没有相应的设备,因此设备id保留为空。当连接到引用表时,外键中带有NULL的行将直接退出。

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


    在您的情况下,可能存在一些条目,其中根本没有相应的设备,因此设备id保留为空。当对引用表进行连接时,外键中带有NULL的行将直接退出。

    您所说的“规范化”是什么意思?这个词被用来表示许多不同的东西。请不要用这个词,而是解释一下你想要实现什么以及为什么。如果你提到它的一个特殊用途,请提供一个参考。此外,请重新表述不清楚的“某些操作类型不需要,例如,对于设备id,其他操作类型需要设备id,但不需要原因id和解决方案id,等等”。@philipxy它的工作原理与操作日志表类似。该日志将记录有关操作的一些数据,包括其类型、使用的设备、缺陷、原因、解决方案(如果适用)。您没有回答我的问题。我所说的“解释你想要实现什么以及为什么”的意思是,使用“标准化”。你所说的“标准化”是什么意思?这个词被用来表示许多不同的东西。请不要用这个词,而是解释一下你想要实现什么以及为什么。如果你提到它的一个特殊用途,请提供一个参考。此外,请重新表述不清楚的“某些操作类型不需要,例如,对于设备id,其他操作类型需要设备id,但不需要原因id和解决方案id,等等”。@philipxy它的工作原理与操作日志表类似。该日志将记录有关操作的一些数据,包括其类型、使用的设备、缺陷、原因、解决方案(如果适用)。您没有回答我的问题。我所说的“解释你想要实现什么以及为什么”是指使用“规范化”。