【数据库】数据库三大范式解析

数据库三大范式

第一范式是满足了原子性

第二范式是消除了部分依赖

第三范式是消除了传递依赖

第一范式

第一范式是满足了原子性

比如下面的表:

学生ID姓名课程
1张三数学, 英语
2李四物理, 化学

课程里面只能有一个数据,不能两个混杂,所以改成下面的表:

学生ID姓名课程
1张三数学
1张三英语
2李四物理
2李四化学

这样就满足了原子性,实现了第一范式

第二范式

第二范式是消除了部分依赖

什么是部分依赖呢?部分依赖就是C依赖AB,那么缺了A不行,缺了B也不行。

给出下面的销售情况表

OrderIDCustomerIDCustomerNameProductIDProductNameQuantityPrice
1101Alice001Product A210.00
2102Bob002Product B520.00
  • CustomerIDCustomerName 依赖于 OrderID,但它们实际上是属于客户信息。
  • ProductIDProductName 依赖于 OrderID,但它们实际上是属于产品信息。

我们可以这样拆分:

订单表

OrderIDCustomerIDProductIDQuantityPrice
1101001210.00
2102002520.00

这里,OrderID 是主键,CustomerIDProductID 是外键,完全依赖于 OrderID

客户表

CustomerIDCustomerName
101Alice
102Bob

这里,CustomerID 是主键,CustomerName 完全依赖于 CustomerID

产品表

ProductIDProductName
001Product A
002Product B

这里,ProductID 是主键,ProductName 完全依赖于 ProductID

这样就消除了部分依赖

第三范式

第三范式是消除了传递依赖

什么是传递依赖呢?A依赖于B,B最终还得依赖于C,其中C是表的主键,那么这就是一个传递依赖

给出原始课程表:

StudentIDStudentNameCourseIDCourseNameTeacherIDTeacherName
1Alice101Math1Mr. Smith
1Alice102Science2Ms. Johnson
2Bob101Math1Mr. Smith
  • StudentName 依赖于 StudentID,这是一个部分依赖,因为它只依赖于主键的一部分。
  • CourseNameTeacherName 依赖于 CourseIDTeacherID,这也是部分依赖。
  • TeacherName 依赖于 CourseID,这是一个传递依赖,因为它通过 CourseID 间接依赖于 StudentID

对于这个表,我们这样拆分:

学生表

StudentIDStudentName
1Alice
2Bob

课程表

CourseIDCourseName
101Math
102Science

教师表

TeacherIDTeacherName
1Mr. Smith
2Ms. Johnson

选课表

StudentIDCourseIDTeacherID
11011
11022
21011

从而实现:

  • 学生表只包含学生编号和姓名,消除了对课程编号的依赖。
  • 课程表只包含课程编号和课程名称,消除了对教师编号的依赖。
  • 教师表只包含教师编号和教师姓名。
  • 选课表将学生、课程和教师的关系连接起来,消除了传递依赖。
  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
战德臣数据库MOOC模拟练习题解析主要是对数据库相关知识的应用和理解进行考察和分析。这些题目旨在帮助学生巩固和加强对数据库概念、操作和优化的认识和应用能力。 解析这些练习题,首先需要对题目进行仔细阅读和理解。了解题意后,根据问题的要求,运用数据库知识进行建模、查询或优化等方面的操作。 对于涉及数据库建模的题目,需要根据题目描述,设计合适的数据库结构,包括表的数量、字段及其数据类型,以及表与表之间的关系。同时,要注意保证数据库范式,避免冗余数据和数据一致性问题的出现。 对于查询题目,需根据题目描述,编写合适的SQL语句进行查询。要注意查询条件和字段选择的准确性,以及查询结果的正确性。相关知识点包括:SELECT语句的使用、连接操作、条件筛选、排序、分组、聚合函数等。 对于性能优化题目,需根据题目描述,分析数据库操作的瓶颈,提出相应的优化方案。可以从索引优化、查询语句优化、表结构优化等方面进行思考和答题。 在解析这些练习题时,需要熟悉数据库的相关概念和操作技巧,如关系型数据库管理系统(例如MySQL、Oracle等)的使用,SQL语言的基本语法和常用操作等。同时,还需了解数据库的设计原则、范式理论、查询优化技巧、索引设计等内容。 通过解析这些练习题,可以提高对数据库知识的理解和应用能力,进一步夯实数据库相关的基础知识,为后续的数据库开发和管理工作打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值