Par*_*Deb -4 database rdbms database-normalization
我如何使这种关系正常化?
Emp_project(SSN,PNum,Hours,Ename,PName,Plocs)
Run Code Online (Sandbox Code Playgroud)
关系具有任何类型的关联列集和关联行集。每行每列有一个值。
有时“标准化”的意思是(1)“将每个关系分解为更小的关系,这些关系是它的投影并连接回它”。这是比 1NF 更高的 NF(正常形式)的标准化。这涉及到FD(功能依赖)和JD(连接依赖)。有时需要输入一些“NF”来表达含义。有时含义包括在分解之前放入“1NF”。但分解只需要关系。
有时“规范化”用于表示 (2)“从具有关系值列的关系转换为不具有关系值列的关系”。(这是它的原始含义。)在(1)被开发出来之后,“标准化”的这种用法变成了“放入1NF”。
普遍存在的“规范化” (错误且含糊地)用于表示(3)“从与具有多个部分的某些类型的列的关系转换为与具有部分类型的列的关系”。不需要的列被称为“非原子”、“复合”等。其含义可能涉及相同类型和/或不同类型的部分。(这是对(2)的误解。)
有时“关系”意味着关系。有时它(可以原谅)意味着没有关系值列的关系。有时它(错误且含糊地)意味着没有“非原子”列的关系。有时“in 0NF”或“in UNF”意味着某种非关系。有时“in 0NF”或“in UNF”或“in 1NF”意味着“是一种关系”。
有时“标准化”(错误地)被用来表示(4)“从非关系转换为关系”,其中关系也可能是“0NF”或“UNF”或“1NF”。(通常,非关系数据结构在关系方面的含义没有得到解释,因此“规范化”实际上没有得到定义。)有时,(3)的表示形式写得好像每列有多个值行,但这不可能,因为根据定义,关系每行每列都有一个值,因此他们对自己是在 (3) 还是 (4) 中感到困惑。
有时“标准化”(错误地)被用来表示(5)“从具有某些列的关系加上范围内每个值一个附加列的关系转换为仅具有一个附加列但原始的每一行都被一行替换的关系对于每个删除的列”。(这是对(2)的误解。)
有时(2)、(3)或(5)被(错误地)称为“摆脱重复组”。(但是“重复组”是一个模糊的前关系非关系概念。)
有时“标准化”(错误地)被用来表示(6)“从与具有某些值的列的关系转换为与用 id 替换值的列的关系加上一些将 id 与这些值关联的关系”。
“标准化”还有其他通用和特定用途,适用于数据库设计内外。
那么,“正常化”是什么意思?在这个问题中,其中一列Plocs似乎是“项目位置”。因此,“标准化”可能用于第 3 种含义,也可能用于其他含义。你必须看看你所学的内容以及给你的参考资料。