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,它具有不同的属性。为了澄清这一情况,以下是表操作
结构:
\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它的工作原理与操作日志表类似。该日志将记录有关操作的一些数据,包括其类型、使用的设备、缺陷、原因、解决方案(如果适用)。您没有回答我的问题。我所说的“解释你想要实现什么以及为什么”是指使用“规范化”。