数据库表结构设计时,遵从一定的范式(NF,Noraml Form)可以减少数据冗余和操作异常。
第一范式(1NF)
1NF指的是每个属性值都是不可再分的。
满足1NF的关系被称为规范化的关系,1NF也是关系模式应具备的最起码的条件。
比如有这样一张表user的两列:
- name
- phone_number
phone_number这一列只存储一个电话号码,如果一条数据同时存储了住宅电话和手机号码,比如:“010-65576558,13765556765”,那么这个属性是可以再分的,违背了1NF。
第二范式(2NF)
2NF要求去除局部依赖。
也就是说,表中的属性完全依赖于全部主键,而不是部分主键。
比方说user表包含下面几列:
- user_id
- name
- phone_number
- job_id
- job_description
其中job_description依赖于job_id,而不是全部主键(user_id,job_id),所以违背了2NF。这时可以把job部分单独抽取成一张job表,去除冗余。
第三范式(3NF)
3NF要求消除非主属性对候选键的传递依赖。
比如user表现在组成如下:
- user_id
- name
- classification
仅有user_id是主键,用户姓名依赖于主键user_id,根据姓名name来给用户分类,而用户可能重名,因此name是允许重复的,再有用户分类classification依赖于用户姓名。这张表已经满足了2NF,即属性依赖于全部主键user_id,但是形成了从classification到非候选键name再到主键user_id的传递依赖,不符合3NF。
BC范式(BCNF)
3NF中只是排除了非主属性对候选键的传递依赖,于是更进一步,BCNF还要求消除主属性对候选键在内的传递依赖。
user表现在变成这样:
- user_id
- card_id
- passport_id
其中护照号passport_id是主键,身份证号card_id和用户号user_id都是候选键,存在主属性passport_id到card_id再到候选键user_id的传递依赖。
第四范式(4NF)
4NF是要消除多值依赖。
在关系模式中,函数依赖不能表示属性值之间的一对多联系,这些属性之间有些虽然没有直接关系,但存在间接的关系,把没有直接联系、但有间接的联系称为多值依赖的数据依赖。
比如user表:
- user_id
- position
- salary_level
user_id是主键,薪水等级salary_level看似被用户id直接确定,但其实薪水等级是根据职位position来确定的,和用户本身无直接关系,这就是多值依赖。
第五范式(5NF)、DK范式(DKNF)和第六范式(6NF)
5NF要求消除连接依赖,并且必须保证数据完整。多值依赖是连接依赖的特殊情况,定义稍复杂。这几种范式已经很少涉及。
在保证数据完整性基础上,通常达到3NF,有时达到2NF已经足够了,追求过高的NF级别会导致混乱的库表,大量的多表连接查询,性能低下。
文章系本人原创,转载请保持完整性并注明出自《四火的唠叨》
相关推荐
### 数据库范式详解 #### 一、范式的概念与作用 在数据库设计过程中,为了减少数据冗余、避免更新异常等问题,引入了**数据库范式**的概念。范式是衡量关系模式优劣的标准,其核心目的是通过规范化过程来简化...
### 数据库范式详解 #### 一、基础知识 在深入探讨数据库范式之前,我们需要先了解几个基础概念。 ##### 实体(Entity) 实体是指现实世界中客观存在的、可以被区别的事物。例如:“一个学生”、“一本书”、...
数据库范式是关系数据库设计中的核心理论,它们是用来衡量数据依赖规范化的程度,确保数据库的结构合理、数据冗余最小,从而减少数据异常。本文将深入解析数据库的几个主要范式,包括第一范式(1NF)、第二范式(2NF...
关于数据库范式,时常有听说过,一直没有详细去了解。一般数据库书籍或数据库课程会介绍范式相关内容,范式也经常出现在数据库考试题目中。不清楚你是否对范式有比较清晰的了解呢?本篇文章我们一起来学习下数据库...
### 关系型数据库范式详解 #### 范式的概念与意义 关系型数据库的设计遵循一系列规范化原则,称为“范式”。范式是确保数据库结构合理、数据冗余最小化和数据完整性的一种方法论。通过规范化,数据库可以避免数据...
1. 数据库范式:遵循特定的范式规则(第一范式至第五范式),可以避免数据冗余和异常,提高数据的一致性和完整性。 2. 实体关系模型(ER模型):用于数据库设计的概念模型,通过实体、属性和关系来描述现实世界的...
本文将对数据库考试题进行整理和总结,帮助读者更好地理解数据库的相关知识点。 模式分解是数据库设计中的一个重要步骤,它将复杂的数据结构分解成简单的模式,以便更好地存储和管理数据。 范式规范化是数据库设计...
总结来说,理解数据库范式有助于构建高效、可靠且易于维护的数据库系统。通过对实体、属性以及各种类型的码进行合理的规划和设计,可以有效地减少数据冗余,提高数据完整性和一致性。此外,适当降低范式标准可以在...
### 数据库范式详解 #### 一、基础知识 在深入探讨数据库范式之前,我们首先需要了解几个基本概念,这些概念对于理解范式至关重要。 **实体**:在现实中存在的并且可以区分的事物,例如学生、书籍等。值得注意的...
下述十四个技巧,是许多人在大量的数据库分析与设计实践中,逐步总结出来的。对于这些经验的运用,读者不能生帮硬套,死记硬背,而要消化理解,实事求是,灵活掌握。并逐步做到:在应用中发展,在发展中应用。
总结来说,理解并应用数据库范式对于构建高效、稳定、易于维护的数据库系统至关重要。通过正确设计数据库模式,遵循这些范式,可以显著减少数据冗余,提高查询效率,避免插入、更新和删除操作时可能出现的问题。在...
总结来说,数据库范式设计是确保数据结构有效性和效率的关键。1NF保证了列的原子性,2NF确保了行的唯一性,而3NF则防止了属性间的不必要依赖。通过这三个范式的应用,可以构建出更稳定、更易于维护的数据库系统。在...
总结来说,数据库设计三范式中的第一范式和第二范式是构建高效、稳定数据库结构的基础。它们帮助我们避免数据冗余,减少更新异常,提高数据一致性,并使得数据库设计更加规范。在实际的数据库设计过程中,理解和应用...
### 数据库范式详解 #### 一、第一范式(1NF) 第一范式强调的是数据库表中的每一列都是不可分割的基本数据项,也就是说,在一个表中,每一列都应该是原子性的,不能再细分。例如,如果一个表中有一个字段表示地址...
### 关系范式总结 #### 一、引言 在数据库设计中,关系范式是用于减少数据冗余和提高数据一致性的关键概念之一。范式可以被看作是一组规则,通过这些规则来组织数据库表,使得它们尽可能地保持数据的完整性和一致...
### 数据库学习总结——小白篇 #### 数据库基础概念 - **关系**:关系是指一个二维表,由行和列组成。在数学上,关系定义为笛卡尔积D1×D2×…×Dn的有限子集。这里的每一个元素(如 (d1, d2, …, dn))构成了一条...
数据库设计实践总结 数据库设计实践总结是软件开发和应用最有效的关心设计工具。数据库设计的优劣和表达性能对整个系统软件的生命周期长短具有重要的影响意义。以下是数据库设计实践总结的知识点: 1. 尽量使用...
### 数据库设计范式详解 #### 一、引言 在关系数据库的设计过程中,遵循一定的设计规范至关重要。这些规范能够确保数据库的结构合理、数据冗余最小化,并且避免数据异常的发生。其中最重要的规范之一便是“数据库...
5. **关系数据库规范理论**:讲述了第一范式(1NF)、第二范式(2NF)、第三范式(3NF)和BCNF(巴斯-科德范式),以及消除冗余和提高数据一致性的重要性。 6. **数据库安全性**:这部分内容包括用户权限管理、访问...