`

数据库设计之三范式(通俗解释)

阅读更多
数据库设计之三范式(通俗解释)

一范式就是属性不可分割。属性是什么?就是表中的字段。
不可分割的意思就按字面理解就是最小单位,不能再分成更小单位了。
这个字段只能是一个值,不能被拆分成多个字段,否则的话,它就是可分割的,就不符合一范式。
不过能不能分割并没有绝对的答案,看需求,也就是看你的设计目标而定。
举例:
学生信息组成学生信息表,有姓名、年龄、性别、学号等信息组成。
姓名不可拆分吧?所以可以作为该表的一个字段。
但我要说这个表要在国外使用呢?人家姓和名要分开,都有特别的意义,所以姓名字段是可拆分的,分为姓字段和名字段。
简单来说,一范式是关系数据库的基础,但字段是否真的不可拆分,根据你的设计目标而定。

二范式就是要有主键,要求其他字段都依赖于主键。
为什么要有主键?没有主键就没有唯一性,没有唯一性在集合中就定位不到这行记录,所以要主键。
其他字段为什么要依赖于主键?因为不依赖于主键,就找不到他们。更重要的是,其他字段组成的这行记录和主键表示的是同一个东西,而主键是唯一的,它们只需要依赖于主键,也就成了唯一的。
如果有同学不理解依赖这个词,可以勉强用“相关”这个词代替,也就是说其他字段必须和它们的主键相关。因为不相关的东西不应该放在一行记录里。
举例:
学生信息组成学生表,姓名可以做主键么?
不能!因为同名的话,就不唯一了,所以需要学号这样的唯一编码才行。
那么其他字段依赖于主键是什么意思?
就是“张三”同学的年龄和性别等字段,不能存储别人的年龄性别,必须是他自己的,因为张三的学号信息就决定了,这行记录归张三所有,不能给无关人员使用。

三范式就是要消除传递依赖,方便理解,可以看做是“消除冗余”。
消除冗余应该比较好理解一些,就是各种信息只在一个地方存储,不出现在多张表中。
比如说大学分了很多系(中文系、英语系、计算机系……),这个系别管理表信息有以下字段组成:
系编号,系主任,系简介,系架构。
那么再回到学生信息表,张三同学的年龄、性别、学号都有了,我能不能把他的系编号,系主任、系简介也一起存着?
如果你问三范式,当然不行,因为三范式不同意。
因为系编号,系主任、系简介已经存在系别管理表中,你再存入学生信息表,就是冗余了。
三范式中说的传递依赖,就出现了。
这个时候学生信息表中,系主任信息是不是依赖于系编号了?而这个表的主键可是学号啊!
所以按照三范式,处理这个问题的时候,学生表就只能增加一个系编号字段。
这样既能根据系编号找到系别信息,又避免了冗余存储的问题。

所谓的范式,是用来学习参考的,设计的时候根据情况,未必一定要遵守,切记。

三范式都能码这么多字,我果然越来越水了:)





作者:王红波
链接:https://www.zhihu.com/question/24696366/answer/29049568
来源:知乎














https://www.zhihu.com/question/24696366






-

分享到:
评论

相关推荐

    通俗易懂,实例讲解数据库范式,三范式,六范式

    ### 数据库范式详解 #### 一、基础知识 在深入探讨数据库范式之前,我们需要先了解几个基础概念。 ##### 实体(Entity) 实体是指现实世界中客观存在的、可以被区别的事物。例如:“一个学生”、“一本书”、...

    学案之数据库三范式.pdf

    本文将对数据库设计三范式进行通俗的解释,并以实例来讲解怎样将这些范式应用于实际工程。数据库设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入、删除和更新...

    精讲数据库范式1NF,2NF,3NF,BCNF

    精讲数据库范式1NF,2NF,3NF,BCNF

    通俗易懂的数据库设计技巧

    "通俗易懂的数据库设计技巧"这一主题旨在帮助初学者和经验不足的开发者掌握数据库设计的核心概念,通过实用的方法和清晰的解释,使复杂的理论变得简单易懂。 一、关系型数据库基础 1. 关系模型:数据库设计的基础是...

    常用数据库设计技巧总结

    4. **范式标准**:数据库设计通常追求第三范式,以减少数据冗余。但在实际操作中,为了性能考虑,可能会牺牲部分范式,引入冗余数据以提高查询效率。例如,商品表中直接存储“金额”字段虽然违反第三范式,但可以...

    MySQL三大范式详解.docx

    MySQL 三大范式是关系型数据库设计的基础,它们分别是第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。下面我们将详细介绍 MySQL 三大范式的定义、特点和应用。 第一范式(1NF) 第一范式(1NF)是指数据库表...

    数据库设计技巧.docx

    4. **范式标准**:数据库设计通常遵循范式理论,如第三范式,以减少数据冗余和提高数据一致性。然而,实际应用中可能需要牺牲部分范式标准,引入冗余以提升查询效率。例如,商品表中添加“金额”字段虽违反第三范式...

    数据库系统概论(第三版)

    作为一本针对中文读者的教材,它用通俗易懂的语言解释了复杂的数据库理论,并通过实例来帮助读者掌握实际操作技巧。 在数据库领域,有几个关键知识点是本书可能涉及的: 1. **数据库系统基础**:首先,书中会介绍...

    数据库设计的14条技巧

    4. **范式标准**:数据库设计通常追求第三范式以减少冗余,但实际操作中,为了性能优化,可能需要降低范式,引入冗余数据。例如,添加“金额”字段虽然违反第三范式,但可以提高查询速度。 5. **范式的通俗理解**:...

    数据库设计技巧.pdf

    以下是对标题和描述中涉及的数据库设计技巧的详细解释: 1. **实体与原始单据的关系**: - 实体通常代表数据库中的基本表,而原始单据可以视为业务过程中的记录。一对一关系意味着每个原始单据对应一个实体,比如...

    数据库设计14个技巧

    数据库设计是信息系统开发的核心环节,涉及到数据的组织、存储和访问策略。以下是对标题和描述中提到的知识点的详细解释: 1. **原始单据与实体关系**: 数据库设计中,原始单据通常对应于业务过程中的数据源,它...

    数据库涉及到14个技巧

    4. **范式标准**:数据库设计通常遵循范式理论,如第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。3NF强调无冗余,但在实际应用中,为了性能优化,可能会适当引入冗余,如在商品表中添加“金额”字段以提高...

    数据库原理及应用(Access 2007)-教学实训案例.rar

    - **范式理论**:遵循第一范式(1NF)、第二范式(2NF)和第三范式(3NF),减少数据冗余,提高数据一致性。 3. **Access 2007核心功能**: - **表设计**:创建和编辑表结构,设置主键,定义数据验证规则。 - **...

    Effective SQL-原版PDF

    - 强调了规范化的重要性,包括第一、第二和第三范式,以及BCNF(Boyce-Codd范式)等高级概念。 - **实现技巧**: - 如何通过优化表结构来提高查询效率。 - 介绍索引的选择与创建策略,以加速数据检索过程。 - ...

    Beginning SQL

    - 解释标准化的概念及其重要性,包括第一范式到第三范式的具体定义和实现方法。 - 展示如何通过规范化减少数据冗余,提高数据完整性和一致性。 6. **高级数据库设计**: - 探讨复杂数据库架构的设计原则和技术,...

    算法设计和分析,王晓东

    书中王晓东教授可能详细讲解了常见的设计范式,如分治策略、动态规划、贪心算法、回溯法以及分支限界法等。这些方法在解决不同复杂度的问题时各有优势,通过实例解析,可以帮助读者灵活运用到实际编程中。 二、算法...

    C++程序设计原理与实践

    本书《C++程序设计原理与实践》是由C++语言的创始人所著,旨在为编程初学者提供一本深入浅出、通俗易懂的编程学习资料。作者在书中突出C++编程的基本原则和思想,避免让初学者在学习过程中纠缠于复杂的编程细节,...

    学习mysql资料非常齐全

    同时,本书还可能涵盖数据库设计原则,如范式理论,以及如何通过SQL进行数据库设计。 `全面接触SQL语法.chm`这份资料则是对SQL语法的全面解析,除了涵盖基础的DML(数据操作语言)和DDL(数据定义语言)外,还可能...

Global site tag (gtag.js) - Google Analytics