数据库简介
- 🌾第一章 数据库简介
- 🕊️1.1 简介
- 🕊️1.2 常见数据库管理系统
- 🕊️1.3 三大范式(规范)
- 🍵第一范式:
- 🍵第二范式:
- 🍵第三范式
🌾第一章 数据库简介
🕊️1.1 简介
数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。
数据库软件应该为数据库管理系统,数据库是通过数据库管理系统创建和操作的。
数据库:存储、维护和管理数据的集合。
🕊️1.2 常见数据库管理系统
- Oracle
Oracle数据库被认为是业界目前比较成功的关系型数据库管理系统。Oracle数据库可以运行
在UNIX、Windows等主流操作系统平台,完全支持所有的工业标准,并获得最高级别的ISO标准安全性
认证。
- MySQL
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle旗下
产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS
(Relational Database Management System,关系数据库管理系统) 应用软件。
- DB2
DB2是IBM公司的产品,DB2数据库系统采用多进程多线索体系结构,其功能足以满足大中公司
的需要,并可灵活地服务于中小型电子商务解决方案。
- Microsoft SQL Server
SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便
可伸缩性好与相关软件集成程度高等优点。
🕊️1.3 三大范式(规范)
范式
Normal Form范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”。简单来说可以把它粗略地理解为一张数据表的表结构所符合的某种设计标准的级别。就像英语的四级和六级,相对代表了英语的水平的高低。
满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入( insert )、删除( delete )和更新( update)操作
异常。
🍵第一范式:
第一范式的定义为:
-
符合1NF的关系中的每个属性都不可再分(无重复的列)
-
在使用数据库管理系统的时候比如mysql , sqlserver等创建的数据表都满足1NF,如果不满足这个范式,是不能创建成功数据表的。属性不可再分的意思是每一个字段都是最小的,不包含其他字段。不重复,原子性。
第一范式存在的问题:数据冗余,插入异常,删除异常,修改异常的问题。
- 插入异常:如果需要新建一个系,并且有系主任。但是因为还没有学生开始学习,所以主键是空的,肯定是不能插入的。
- 删除异常:如果需要把某个系下面学生信息都清空,那么这个系也就不存在了。
- 修改异常∶如果需要把学生的系进行更换,就需要把三条数据里面的系名和系主任都修改才可以。
🍵第二范式:
- 第二范式定义:
在1NF的基础上,消除了非主属性对于码的部分函数依赖,属性完全依赖于主键 [ 消除部分子函数依赖 ]
- 码:
一个表中,可以唯一决定一个元组的属性“集合”。假设K为表中的某个属性,如果在K确定了的情况下,这个表里面其他的属性都可以确定,那么K就叫做候选码,也叫码。
比如通过id可以获取到姓名,系名,系主任名,但是不能确定课名和分数。课名可以获取分数。i学号d -------姓名,系名,系主任课名-----分数
( 学号id,课名)
这个属性组就叫做码。
- 非主属性:
上面说到的码里面的属性就是主属性,包括id,课名。不是主属性的就是非主属性,包括姓名,系名,系主
任,分数。
- 函数依赖:
函数y=f(x)代表了给定一个x的值,y的值也是确定的。在数据表中,在属性X确定的情况下,必定能确定Y的值,那就说Y函数依赖与X写作X—Y。
比如:在表中,给定一个学号,必定能得到唯一的一个姓名。那就说姓名函数依
赖于学号。写作:学号—姓名
在表中的函数依赖还有
- 学号-----系名
- 学号-----系主任
- (学号,课名)-----成绩
- 完全函数依赖:
在一张表中,若×→Y,且对于X的任何一个真子集(假如属性组×包含超过一个属性的话),x’→Y不成立,那么我们称Y对于X完全函数依赖,记作XF→Y。比如(学号,课名)-----成绩
学号和课名都是X的真子集,但是如果只有学号,或者只有课名,是不能得到一个唯一的成绩。满足完全函数依赖的要求,所以Y完全函数依赖于X
- 部分函数依赖:
如果Y函数依赖于X,但是Y不完全函数依赖于X,那就叫做部分函数依赖。比如(学号,课名)------姓名。
由学号可以得到唯一的姓名,但是由课名不能得到唯一的姓名。所以称为Y部分函数依赖X。
- 判断是否符合2NF
就是看数据表中是否存在非主属性对于码的部分函数依赖。若存在,则数据表最高只符合1NF的要求,若不存在,则符合2NF的要求。
步骤:
-
第一步:找出数据表中所有的码。( id,课名)
-
第二步:根据第一步所得到的码,找出所有的主属性。id和课名
-
第三步∶数据表中,除去所有的主属性,剩下的就都是非主属性了。姓名,系名,系主任,分数。
-
第四步:查看是否存在非主属性对码的部分函数依赖。
对于(学号,课名)→姓名,有学号→姓名,存在非主属姓名部分依赖课名。
- 解决的问题:数据冗余
- 数据冗余:减少了冗余。
- 还存在的问题:插入异常,删除异常,修改异常的问题。
- 插入异常∶如果需要新建一个系,并且有系主任。但是因为还没有学生开始学习,所以主键是空的,肯定是不能插入的。
- 删除异常∶如果需要把某个系下面学生信息都清空,那么这个系也就不存在了。
- 修改异常(解决一范式的问题):如果需要把学生的系进行更换,就需要把三条数据里面的系名和系主任都修改才可以。2NF可以只修改一个字段就可以实现。
🍵第三范式
- 定义
3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。也就是说,如果存在非主属性对于码的传递函数依赖,则不符合3NF的要求。
- 传递函数依赖:
如果Y依赖于X,Z又依赖于Y,那就说Z依赖于X。
比如:系名依赖于学号,系主任依赖于系名,那么系主任传递函数依赖于学号。不满足3NF
- 解决问题:
- 插入异常:如果需要新建一个系,并且有系主任但是因为还没有学生开始学习,所以主键是空的,肯定是不能插入的。现在需要新建一个系是不会出问题的。
- 删除异常∶如果需要把某个系下面学生信息都清空,那么这个系也就不存在了。这时候清空只需要清空第二个表,不会影响其他表。不会出现异常。I
【数据库基础】数据库介绍和三大范式
【数据库基础】MySQL增删改查基础操作命令
【数据库高级】数据完整性和多表查询
【数据库】事务
【数据库高级】Mysql窗口函数的使用和练习