【数据库基础】数据库介绍和三大范式

🌾第一章 数据库简介

🕊️1.1 简介

       数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。

      数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。

      数据库软件应该为数据库管理系统,数据库是通过数据库管理系统创建和操作的。
      数据库:存储、维护和管理数据的集合。

🕊️1.2 常见数据库管理系统

  1. Oracle

      Oracle数据库被认为是业界目前比较成功的关系型数据库管理系统。Oracle数据库可以运行

在UNIX、Windows等主流操作系统平台,完全支持所有的工业标准,并获得最高级别的ISO标准安全性

认证。

在这里插入图片描述

  1. MySQL

      MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle旗下

产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS

(Relational Database Management System,关系数据库管理系统) 应用软件。

在这里插入图片描述

  1. DB2

      DB2是IBM公司的产品,DB2数据库系统采用多进程多线索体系结构,其功能足以满足大中公司

的需要,并可灵活地服务于中小型电子商务解决方案。

  1. Microsoft SQL Server

      SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便

可伸缩性好与相关软件集成程度高等优点。

在这里插入图片描述

🕊️1.3 三大范式(规范)

范式

      Normal Form范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”。简单来说可以把它粗略地理解为一张数据表的表结构所符合的某种设计标准的级别。就像英语的四级和六级,相对代表了英语的水平的高低。
满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入( insert )、删除( delete )和更新( update)操作
异常。

🍵第一范式:

在这里插入图片描述

第一范式的定义为:

  • 符合1NF的关系中的每个属性都不可再分无重复的列

  • 在使用数据库管理系统的时候比如mysql , sqlserver等创建的数据表都满足1NF,如果不满足这个范式,是不能创建成功数据表的。属性不可再分的意思是每一个字段都是最小的,不包含其他字段。不重复,原子性

第一范式存在的问题:数据冗余,插入异常,删除异常,修改异常的问题。

  • 插入异常:如果需要新建一个系,并且有系主任。但是因为还没有学生开始学习,所以主键是空的,肯定是不能插入的。
  • 删除异常:如果需要把某个系下面学生信息都清空,那么这个系也就不存在了。
  • 修改异常∶如果需要把学生的系进行更换,就需要把三条数据里面的系名和系主任都修改才可以。

🍵第二范式:

在这里插入图片描述

  1. 第二范式定义:

      在1NF的基础上,消除了非主属性对于码的部分函数依赖,属性完全依赖于主键 [ 消除部分子函数依赖 ]

  1. 码:

      一个表中,可以唯一决定一个元组的属性“集合”。假设K为表中的某个属性,如果在K确定了的情况下,这个表里面其他的属性都可以确定,那么K就叫做候选码,也叫码。

      比如通过id可以获取到姓名,系名,系主任名,但是不能确定课名和分数。课名可以获取分数。i学号d -------姓名,系名,系主任课名-----分数

( 学号id,课名)这个属性组就叫做码。

  1. 非主属性:

      上面说到的码里面的属性就是主属性,包括id,课名。不是主属性的就是非主属性,包括姓名,系名,系主
任,分数。

  1. 函数依赖:

      函数y=f(x)代表了给定一个x的值,y的值也是确定的。在数据表中,在属性X确定的情况下,必定能确定Y的值,那就说Y函数依赖与X写作X—Y。

      比如:在表中,给定一个学号,必定能得到唯一的一个姓名。那就说姓名函数依
赖于学号。写作:学号—姓名
在表中的函数依赖还有

  • 学号-----系名
  • 学号-----系主任
  • (学号,课名)-----成绩
  1. 完全函数依赖:

      在一张表中,若×→Y,且对于X的任何一个真子集(假如属性组×包含超过一个属性的话),x’→Y不成立,那么我们称Y对于X完全函数依赖,记作XF→Y。比如(学号,课名)-----成绩
      学号和课名都是X的真子集,但是如果只有学号,或者只有课名,是不能得到一个唯一的成绩。满足完全函数依赖的要求,所以Y完全函数依赖于X

  1. 部分函数依赖:

      如果Y函数依赖于X,但是Y不完全函数依赖于X,那就叫做部分函数依赖。比如(学号,课名)------姓名。
由学号可以得到唯一的姓名,但是由课名不能得到唯一的姓名。所以称为Y部分函数依赖X。

  1. 判断是否符合2NF

      就是看数据表中是否存在非主属性对于码的部分函数依赖。若存在,则数据表最高只符合1NF的要求,若不存在,则符合2NF的要求。
步骤:

  • 第一步:找出数据表中所有的码。( id,课名)

  • 第二步:根据第一步所得到的码,找出所有的主属性。id和课名

  • 第三步∶数据表中,除去所有的主属性,剩下的就都是非主属性了。姓名,系名,系主任,分数。

  • 第四步:查看是否存在非主属性对码的部分函数依赖。

    对于(学号,课名)→姓名,有学号→姓名,存在非主属姓名部分依赖课名。

  1. 解决的问题:数据冗余
  • 数据冗余:减少了冗余。
  1. 还存在的问题:插入异常,删除异常,修改异常的问题。
  • 插入异常∶如果需要新建一个系,并且有系主任。但是因为还没有学生开始学习,所以主键是空的,肯定是不能插入的。
  • 删除异常∶如果需要把某个系下面学生信息都清空,那么这个系也就不存在了。
  • 修改异常(解决一范式的问题):如果需要把学生的系进行更换,就需要把三条数据里面的系名和系主任都修改才可以。2NF可以只修改一个字段就可以实现。

🍵第三范式

在这里插入图片描述

  1. 定义

3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。也就是说,如果存在非主属性对于码的传递函数依赖,则不符合3NF的要求。

  1. 传递函数依赖:

如果Y依赖于X,Z又依赖于Y,那就说Z依赖于X。

比如:系名依赖于学号,系主任依赖于系名,那么系主任传递函数依赖于学号。不满足3NF

在这里插入图片描述

  1. 解决问题:
  • 插入异常:如果需要新建一个系,并且有系主任但是因为还没有学生开始学习,所以主键是空的,肯定是不能插入的。现在需要新建一个系是不会出问题的。
  • 删除异常∶如果需要把某个系下面学生信息都清空,那么这个系也就不存在了。这时候清空只需要清空第二个表,不会影响其他表。不会出现异常。I

在这里插入图片描述

【数据库基础】数据库介绍和三大范式

【数据库基础】MySQL增删改查基础操作命令

【数据库高级】数据完整性和多表查询

【数据库】事务

【数据库高级】Mysql窗口函数的使用和练习

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
数据库范式范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式 的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系 数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式 :第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范 式(5NF)和第六范式(6NF)。满足最低要求的范式是第一范式(1NF)。在第一范式基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数 据库只需满足第三范式(3NF)就行了。下面我们举例介绍第一范式(1NF)、第二范式 (2NF)和第三范式(3NF)。 在创建一个数据库的过程中,范化是将其转化为一些表的过程,这种方法可以使从数据 库得到的结果更加明确。这样可能使数据库产生重复数据,从而导致创建多余的表。范 化是在识别数据库中的数据元素、关系,以及定义所需的表和各表中的项目这些初始工 作之后的一个细化的过程。 下面是范化的一个例子 Customer Item purchased Purchase price Thomas Shirt $40 Maria Tennis shoes $35 Evelyn Shirt $40 Pajaro Trousers $25 如果上面这个表用于保存物品的价格,而你想要删除其中的一个顾客,这时你就必须同 时删除一个价格。范化就是要解决这个问题,你可以将这个表化为两个表,一个用于存 储每个顾客和他所买物品的信息,另一个用于存储每件产品和其价格的信息,这样对其 中一个表做添加或删除操作就不会影响另一个表。 关系数据库的几种设计范式介绍 1 第一范式(1NF) 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式 (1NF)的数据库就不是关系数据库。 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能 有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的 属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之 间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。例如,对于 图3-2 中的员工信息表,不能将员工信息都放在一列中显示,也不能将其中的两列或多列在一 列中显示;员工信息表的每一行只表示一个员工的信息,一个员工的信息在表中只出现 一次。简而言之,第一范式就是无重复的列。 2 第二范式(2NF) 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必 须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以 被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。如 图3-2 员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是惟一的,因此 每个员工可以被惟一区分。这个惟一属性列被称为主关键字或主键、主码。 第二范式(2NF)要求实体的属性完全依赖于主关键字。(即主关键字就代表了所有属性 ,决定 了所有属性)所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那 么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之 间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识 。简而言之,第二范式就是非主属性非部分依赖于主关键字。 3 第三范式(3NF) 满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一 个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息 表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在图3- 2的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再 加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否 则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。 数据库设计三大范式应用实例剖析 数据库的设计范式数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、 结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作 异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存 储了大量不需要的冗余信息。   设计范式是不是很难懂呢?非也,大学教材上给我们一堆数学公式我们当然看不懂 ,也记不住。所以我们很多人就根本不按照范式来设计数据库。   实质上,设计范式用很形象、很简洁的话语就能说清楚,道明白。本文将对范式进 行通俗地说明,并以笔者曾经设计的一个

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虎哥@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值