【发布时间】:2017-10-10 15:59:10
【问题描述】:
在我的应用程序中,我有一个名为actions 的实体表,具有不同的属性。为澄清情况,下表为actions结构:
- 身份证,
- status_id(非空),
- section_id(非空),
- job_id(非空)
- equipment_id (null),
- cause_id (null),
- solution_id (null),
- created_at,
- close_at,
- action_type (not null) char(3)
所有以_id 为后缀的字段都是外键,action_type 是非常有限且已定义的操作类型列表,因此我在配置文件中定义了它,即action_type 没有数据库实体。
我的问题比这个更笼统:Can a foreign key be NULL and/or duplicate? 我问的是规范化原则。
在我的情况下,某些操作类型不需要,例如equipment_id,其他需要equipment_id但不需要cause_id和solution_id等
在我的数据库设计中,actions 表看起来像多对多共轭表。
上述设计允许轻松获取有关部分和作业的许多统计数据,而无需执行复杂的连接查询。
我的问题是:我的规范化和设计是否正确?
【问题讨论】:
-
“标准化”是什么意思?这个词用来表示很多不同的东西。请解释您要达到的目标以及原因,而不是那个词。如果您指的是它的特定用途,请提供参考。另外,请改写不明确的“某些动作类型不需要,例如设备ID,其他需要设备ID但不需要同时需要原因ID和解决方案ID等”。
-
@philipxy 很好,它就像操作日志表一样工作。该日志将记录有关操作的一些数据,包括其类型、使用的设备、缺陷、原因、解决方案(如果适用)。
-
你没有回答我的问题。我所说的“解释你想要实现的目标和原因”是指使用“规范化”。
标签: mysql database-design database-normalization