范式3NF简解

本文简要介绍了数据库的3NF范式,强调了3NF在软件系统工程设计中的核心地位。3NF要求消除属性数据冗余,确保每个表的非键值属性在整个数据库中是唯一的。同时,文章提及了数据库设计的其他范式,以及数据库表间的一对一、一对多和多对多关系,并指出在实际设计中,99%遵循范式但允许适当的“反范式”设计。
摘要由CSDN通过智能技术生成

范式3NF简解
(作者:张承睿,撰写时间:2019年4月3日)
关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯克范式(BCNF)、第四范式(4NF)和第五范式(5NF)

 界面层(显示/操作数据)
 逻辑层(处理数据,分布式)
 数据层(传输数据)
 数据库存储(数据库的逻辑设计和物理设计)

设计一个软件的过程:需求分析、原型设计、数据库设计、编码(界面层、逻辑层、数据层、数据库编码)、测试、实施。

N01:架构师(技术总监):需求分析、原型设计、数据库的逻辑设计
N02:项目组长:数据库的逻辑设计 (3个以上完整项目的经验)
N03:高级软件工程师(干活,悲催的码农)

计算机的单元时间是 千分之一毫秒
完成替换 3 5
如果是传统的excel:无法保证数据的完整性

数据库设计(5NF+1)
三范式原则:3NF——软件系统工程设计的核心!!!
3NF设计原则”和“表关系”
1、第一范式(1NF)字段(列、属性):字段原子性。最小的实际意义的文字单元
指数据库表的每一列都是不可分割的基本数据项,属性不可分割,不可二义!
2、第二范式(

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库范式分解是一种将关系数据库设计规范化的过程,其中3NF(第三范式)是最常用的范式之一。下面是一个例题的介绍: 假设我们有一个关系数据库表格,存储了学生的信息,包括学生ID、姓名、年龄、性别、课程和成绩。表格结构如下: 学生表(Student): - 学生ID(StudentID) - 姓名(Name) - 年龄(Age) - 性别(Gender) 课程表(Course): - 课程ID(CourseID) - 课程名称(CourseName) 成绩表(Grade): - 学生ID(StudentID) - 课程ID(CourseID) - 成绩(Score) 现在我们需要对这个数据库进行范式分解,使其符合3NF。 首先,我们可以将学生表和课程表分别设计为两个独立的表格,以消除冗余数据。这样,学生表和课程表的结构如下: 学生表(Student): - 学生ID(StudentID) - 姓名(Name) - 年龄(Age) - 性别(Gender) 课程表(Course): - 课程ID(CourseID) - 课程名称(CourseName) 然后,我们需要将成绩表与学生表和课程表进行关联。为了符合3NF,我们需要将成绩表中的非主属性(即非关键字)移至其他表格中。在这个例子中,成绩表中的非主属性是成绩(Score)。我们可以将成绩表分解为两个表格,分别与学生表和课程表进行关联,结构如下: 学生成绩表(StudentGrade): - 学生ID(StudentID) - 课程ID(CourseID) 成绩表(Grade): - 学生ID(StudentID) - 课程ID(CourseID) - 成绩(Score) 通过这样的范式分解,我们可以消除冗余数据,并且保持数据的一致性和完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值