第三范式 (3NF) 是什么意思?
第三范式 - 或 3NF - 是一组数据库规范化概念的一部分,其中还包括第一范式 (1NF) 和第二范式 (2NF)。
这些想法可以追溯到数据科学家 Edgar Codd 和他在 1970 年代的工作——为 IBM 工作,Codd 提出了这些概念来处理关系数据库工作。
这三种“规范形式”或规范化往往会使非专业数据库管理员或数学家的人感到困惑。
然而,这里有一个简单的方法来考虑第三范式,以及它之前的两个范式。
正如您可能想象的那样,与维度复杂性非常相似,第一范式与其后面的形式相比非常基本。对于第二范式也是如此。
以下是这三个连续概念中每一个的基本定义。
第一范式 (1NF)
第一个范式只是确保每个数据字段包含一个值,而不是一个复合值或多个值。
这相当容易理解,查看一个图表,例如,其中的数据表可能具有表内容的以下标识符 — 姓名、电话号码、州和国家/地区,以及标识记录编号的主键。
为了符合第一个范式,您需要浏览整个表格并确保这些表格都没有多个值。
第二范式 (2NF)
第二范式的想法并不那么直接或简单。
专家将第二范式定义为“消除重复组”和“消除数据库关系之间的任何部分依赖关系”。
如果这听起来令人困惑,您也可以将 2NF 视为“减少存储在内存中的冗余数据”的尝试。
例如,如果表中有一条记录标识了表上用户的给定状态,并且它被 100 个不同的用户引用了 100 次,那么您不希望单独存储所有这些冗余值。
您想要引用一次状态,并将其添加到这 100 个用户帐户中。您不希望将“管理员”一词存储在包含 100 个不同管理员的表中。这只是不好的数据卫生。
因此,当您遵循第二范式时,您正在重组表关系以确保它们相当独立,以实现此目标。
第三范式 (3NF)
现在,这是第三范式的定义:
“如果非素数属性没有传递依赖,则关系是第三范式的(并且也是第二范式......)”
这是重要的部分:非主要属性没有传递依赖。
此外,在符合 3NF 的表中,没有非主键属性与主键具有传递依赖关系。
同样,这与数据库表中项目之间的关系有关,但它更复杂。这是考虑第三范式的一种简单方法——它确保这些字段不会有基于更改的异常——管理插入、更新和删除。
可以说它保留了无损数据库转换,并且消除了功能依赖性。
所以总的来说,这是以正确的方式设计数据表的过程,以便每个值都具有独立性,并且您的程序更改不会在您执行它们时损坏数据表的其他部分。
当您考虑使用候选键和主键以这种方式设计数据库时,这很容易理解。
您还可以理解相互关联的三个级联范式——规范化按照这些步骤进行。
也许一个系统符合第一范式,但不符合其他两个。
但是,由于集合的先决条件性质,它不会仅符合第二或第三范式。
简而言之就是这样——同样,3NF 意味着记录的各个部分是独立的,因此更改不会导致意外后果。
这意味着在关系数据库设计中以不同的方式对数据进行排序。 |
|