数据库规范化首先是正常形式的混乱 - 什么时候应该把表分开

时间:2015-04-26 10:45:58

标签: database normalization

请从学术观点考虑非实际工程观点。这仅约1NF和1NF。

考虑下面的非标准化形式,主键是{trainingDateTime,employeeNumber},你将如何将它变成第一个普通形式?

如果我们将课程,教师和员工表分开作为单独的表,它将自动变为3NF。

UNF

如果我分成不同的行,那就像是:

enter image description here

但问题显而易见 - 主键不再有效。

现在将主键更改为{trainingDateTime,employeeNumber,employeeSkill}似乎不是一个明智的解决方案。

2 个答案:

答案 0 :(得分:0)

为了使其满足1NF,您需要为各个教学技能分别设置行。但是你应该确保通过拆分表来满足更高的法线形式。 因此,一行应具有高级PHP的教学技能,第二行应为高级Java,第三行应为高级SQL,以此类推。对于同一名员工。

答案 1 :(得分:0)

与您的其他问题一起 database normalization - merge/combine tables看来你正在寻找一个你没有问过的问题的答案。

关于你的评论“在实践中我无法想象任何人会从一个完整的非规范形式开始。”我认为你的问题更多,为什么我们需要制定这些规范化规则,以便有效地产生规范化。这样的事情。我猜你的真正动机/问题在这里起作用。

归一化通常被视为一个过程或方法。对此没有任何伤害。然而,这些规范化规则的制定也允许使用清单。因此,您可以根据规范化规则对任意大小的任意一组表进行双重检查,并确认或拒绝规范化合规性。因此,即使您可以找到数千个示例,其中任何规范化规则都会从第一个自然模式版本确认规范化合规性,您还可以找到数千个其他示例,这些示例将无法在这些规则上遵循规范化。

事实上,试图在历史上增加的MS Excel表格集合中以多种方式在多个表格中插入多个耦合信息通常是冲突任何一组规范化规则的特殊来源。 (例如,渲染业务案例并将其与计划方面和资源规划相关联)......