数据库管理系统规范化

Normalization in database management system

我在数据库中有一个关系:

Emp_project(SSN,PNum,Hours,Ename,PName,Plocs)

有人要求我规范化关系 Emp_project

如何规范化它?

一个关系有一个关联的集合任何类型和一个关联的集合的行。每行每列有 一个值

有时“规范化”用于表示 (1)“将每个关系分解为更小的关系,这些关系是它的投影并重新连接到它”。这是比 1NF 更高的 NF(正常形式)的标准化。这涉及到 FD(功能依赖)和 JD(连接依赖)。有时意思需要输入一些“NF”。有时含义包括在分解之前放入“1NF”。但是分解只需要关系.

有时“规范化”用于表示 (2)“从具有关系值列的关系转换为不具有关系值的列的关系”。 (这是它的原始含义。)在 (1) 开发之后,“规范化”的这种用法变成了“放入 1NF”。

Ubiquitolyly "normalize" is (wrongly and vaguely) used to mean (3) "convert from a relation with columns with some types that have multiple parts to relations with ". The undesired columns are called "non-atomic", "composite", etc. 含义可能涉及相同类型的部分 and/or 不同类型. (这是对(2)的误解)

有时候“关系”就是关系。有时它(可以原谅)意味着没有关系值列的关系。有时它(错误地和模糊地)意味着没有“非原子”列的关系。有时“在 0NF 中”或“在 UNF 中”意味着某种非关系。有时“in 0NF”或“in UNF”或“in 1NF”表示“是一种关系”。

有时“规范化”(错误地)用于表示(4)“从非关系转换为关系”,其中关系也可能是“0NF”或“UNF”或“1NF”。 (并且通常没有解释非关系数据结构在关系方面的含义,因此实际上没有定义“规范化”。)有时(3)的介绍写得好像每个列都有多个值行,但这不可能,因为根据定义,关系每行每列都有一个值,因此他们对它们是在 (3) 还是 (4) 中感到困惑。

有时“规范化”是(错误地)用来表示(5)“从与某些列的关系加上一个范围内每个值的一个附加列转换为与只有一个额外的列,但是原始的每一行都被每个删除的列替换为一行”。 (这是对(2)的误解。)

有时 (2)、(3) 或 (5) 被(错误地)称为“摆脱重复组”。 (但是“重复组”是一个模糊的前关系非关系概念。)

有时“规范化”(错误地)用于表示(6)“从与具有特定值的列的关系转换为与具有 id 的列的关系替换值加将 id 与这些值相关联的一些关系。

“规范化”还有其他通用和特定用途,既适用于数据库设计,也适用于数据库设计之外。


那么,“正常化”是什么意思?在这个问题中,其中一列 Plocs 似乎是“项目位置”。因此,也许在第 3 种意义上使用了“规范化”,也许还有其他一些。你必须看看你教过什么,参考你得到了什么。