图范式扩展了关系范式
Posted: Wed Feb 19, 2025 9:13 am
为什么范式是必要的
基于关系规范化的分解。因此,让我们首先通过一个著名的例子快速回顾一下所谓的“正统规范化”。(如果您是一位经验丰富的关系规范化者,您可能希望跳过本节。)
该示例是虚构的狗窝小狗把戏,它作为免 哥伦比亚电话号码数据 费海报出现在 于 年出版的《数据库编程与设计杂志》上。知识产权归 所有,他现在就职于 。经他的许可,本文收录了该图片,参见本文末尾的低分辨率图片(包括高分辨率版本的链接)。
以下解释忠实于海报上的文字,但经过压缩(由我本人压缩)。
规则 :消除重复组
为每组相关属性创建一个单独的表,并为每个表指定一个主键。
在原始数据列表中,每只小狗的描述后面都跟着小狗学会的技巧列表。有些小狗可能知道 个技巧,有些可能一个都不会。要回答“菲菲会翻身吗?”这个问题,我们需要先找到菲菲的小狗记录,然后扫描该记录末尾的技巧列表。这很尴尬、低效且杂乱。
将这些技巧移到单独的表中会有很大帮助:
将重复的技巧组与小狗信息分开,可以得到第一范式。技巧表中的小狗编号与小狗表中的主键相匹配,从而提供两者之间的关系。
规则:消除冗余数据
如果某个属性仅依赖于多值键的一部分,则将其移至单独的表。
在第一范式中的技巧表中,主键由小狗编号和技巧 组成。这对于“在哪里学习”和“技能水平”属性是有意义的,因为它们对于每个小狗技巧组合都会有所不同。但技巧名称仅取决于技巧 。每次其关联的 出现在技巧表中时,相同的名称都会重复出现。
基于关系规范化的分解。因此,让我们首先通过一个著名的例子快速回顾一下所谓的“正统规范化”。(如果您是一位经验丰富的关系规范化者,您可能希望跳过本节。)
该示例是虚构的狗窝小狗把戏,它作为免 哥伦比亚电话号码数据 费海报出现在 于 年出版的《数据库编程与设计杂志》上。知识产权归 所有,他现在就职于 。经他的许可,本文收录了该图片,参见本文末尾的低分辨率图片(包括高分辨率版本的链接)。
以下解释忠实于海报上的文字,但经过压缩(由我本人压缩)。
规则 :消除重复组
为每组相关属性创建一个单独的表,并为每个表指定一个主键。
在原始数据列表中,每只小狗的描述后面都跟着小狗学会的技巧列表。有些小狗可能知道 个技巧,有些可能一个都不会。要回答“菲菲会翻身吗?”这个问题,我们需要先找到菲菲的小狗记录,然后扫描该记录末尾的技巧列表。这很尴尬、低效且杂乱。
将这些技巧移到单独的表中会有很大帮助:
将重复的技巧组与小狗信息分开,可以得到第一范式。技巧表中的小狗编号与小狗表中的主键相匹配,从而提供两者之间的关系。
规则:消除冗余数据
如果某个属性仅依赖于多值键的一部分,则将其移至单独的表。
在第一范式中的技巧表中,主键由小狗编号和技巧 组成。这对于“在哪里学习”和“技能水平”属性是有意义的,因为它们对于每个小狗技巧组合都会有所不同。但技巧名称仅取决于技巧 。每次其关联的 出现在技巧表中时,相同的名称都会重复出现。