Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 范式-第四范式_Database Design_Database Normalization_Third Normal Form - Fatal编程技术网

Database design 范式-第四范式

Database design 范式-第四范式,database-design,database-normalization,third-normal-form,Database Design,Database Normalization,Third Normal Form,我有这个数据,我需要把它转换成第三和第四范式 我了解范式的基本知识,但我对第三范式和第四范式感到困惑,我在网上查过了,但仍然不明白 我正在创建一个由我的系统使用的数据库 4NF中的关系也存在于BCNF、3NF和下部NFs中 发件人: 超级键是唯一标识行的一组列 候选键是唯一标识行和列的一组列 不包含更小的(“正确的”)列子集的 标识行 那么 候选键是不包含较小的超键的超键 (MVD)X->>Y在属性集为R的表(即一个表具有该MVD)中保持不变,此时该表可以表示为两个表的连接,这两个表是其在属性集

我有这个数据,我需要把它转换成第三和第四范式

我了解范式的基本知识,但我对第三范式和第四范式感到困惑,我在网上查过了,但仍然不明白

我正在创建一个由我的系统使用的数据库


4NF中的关系也存在于BCNF、3NF和下部NFs中

发件人:

超级键是唯一标识行的一组列

候选键是唯一标识行和列的一组列 不包含更小的(“正确的”)列子集的 标识行

那么 候选键是不包含较小的超键的超键

(MVD)X->>Y在属性集为R的表(即一个表具有该MVD)中保持不变,此时该表可以表示为两个表的连接,这两个表是其在属性集xuy和xu(R-Y)上的投影。(因为MVD是二进制(JD))

发件人:

一个平凡的多值依赖项X->>Y是 要么Y是X的子集,要么X和Y一起构成X的整个集合 关系的属性

一个表在4NF中当且仅当,对于它的每一个非平凡的 多值依赖项X->>Y,X是一个 即,X是候选键或其超集

每个表都有一个谓词,即由表的属性名称参数化的语句模板,其中表中的行是通过将谓词中的属性名称替换为行中相应的属性值而生成真正语句的行。MVD X->>Y在一个表中保持不变,因为它的谓词P可以重新表述为:
         对于不在X U Y中的属性的某些值,P
     对于xu(R-Y)以外的属性的某些值,P


因此,让您的表的意义成为您了解CKs、SuperKey和MVD的指南。将BCNF规范化为4NF:如果一个非平凡的MVD X->>Y不在一个超键中,则用它在xuy和xu(R-Y)上的投影替换该表;在新的表格上重复。

你无法根据一段数据判断如何将某些内容放入3NF(或4NF)中;它们基于属性之间的关系,您没有解释这些关系;因此,例如,如果某些字段仅基于用户(如姓名、电子邮件和邮寄地址),而不是特定的预订,您可以通过创建一个仅关于客户的表,以及一个包含预订的单独表(通常带有客户id)来避免客户信息中的冗余。在这些NFs之间是重要的BCNF。没有提到这一点吗?也许这是你真正需要的,而不是3NF?处于4NF意味着处于BCNF和3NF。你的任务到底是什么?