在哈德利·韦翰的"Tidy Data“论文一书中,他说
在整理数据中:
这是Codd的第三种范式(Codd 1990),但它的约束是用统计语言构造的,重点放在单个数据集上,而不是关系数据库中常见的许多连接数据集。
Codd的第三种范式可以描述为:
我想弄清楚这两套规则是如何等同的。
我相信,第一次数据规则映射为第一范式。具体来说,“每个变量形成一个列”映射到“每个列都包含原子值,并且没有重复的列组”。
我相信Tidy数据规则“每个观察形成一行”映射到“所有非键列依赖于表的主键”,并且“它只包含非传递依赖于主键的列”。
我怀疑“每种类型的观察单元形成一个表”映射到“表将信息存储在行和列中,其中一个或多个列(称为主键)唯一地标识每一行”,但我对这种映射最不确定。
我相信我的上述分析是不正确的,所以我希望有人能澄清这两套规则之间的联系。
我的问题是:上述三条Tidy数据规则如何等同于第三范式?
发布于 2019-03-10 11:52:28
我相信它是这样的,基于我自己的思考:
Hadley的规则1&2(称为TR1 & TR2)等价于1NF,但Hadley的规则1允许重复列。我们在TR1 & TR2中所要说的是,我们在表中的每个单元格中都有一个值,尽管我认为这取决于您如何解释观察。如果一个观察是一个特定对象的实例,那么这是一个更强的语句,尽管TR3认为情况并非如此。
Hadley规则1、2和3的组合等价于3NF。使用此链接也可以解释传递依赖:
带有UnitCode、UnitName、CourseCode、CourseName的表在2NF中,但违反TR3,因为过程和单元是不同的对象。3NF中以外键分隔和连接的3NF表符合TR1、TR2和TR3的要求。
假设我们要证明蕴涵,并假设我们有TR1、TR2和TR3。由于这些都不涉及重复列,所以我认为我们要么假设不重复列,要么接受它们不是等价的。让我们假设不重复列。从定义TR1 & TR2 => 1NF。如果我们有一个不在2NF中的表,那么使用上面例子中的逻辑就违反了TR3。因此,我们有2NF。类似地,如果我们有一个不在3NF中的表,那么TR3就会被违反,再次使用上面的逻辑。因此,TR1 & TR2 & TR3 => 3NF。
我想也许有人能用更多的时间做一个更彻底的证明。
HTH
https://datascience.stackexchange.com/questions/43184
复制相似问题