一. 数据库原理
概念
- 数据库:database (DB) ,是一种存储数据的仓库
- 数据库能够长期,高效的管理和存储数据
- 数据库的目的就是能够存储(写)和提供(读)数据
数据分类
- 结构化的数据:即有固定格式和有限长度的数据。例如填的表格就是结构化的数据,国籍:中华人 民共和国,民族:汉,性别:男,这都叫结构化数据
- 非结构化的数据:非结构化的数据越来越多,就是不定长、无固定格式的数据,例如网页,有时候 非常长,有时候几句话就没了;例如语音,视频都是非结构化的数据
- 半结构化数据:比如:XML或者HTML的格式的数据
文件管理系统的缺陷
- 编写应用程序不方便
- 数据冗余不可避免
- 应用程序依赖性
- 不支持对文件的并发访问
- 数据间联系弱
- 难以按用户视图表示数据
- 无安全控制功能
DBMS 数据管理系统
- Database :数据库是数据汇集,它以一定的组织形式存于存储介质上
- DBMS :是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心
- DBA:负责数据库的规划、设计、协调、维护和管理等工作
- 应用程序:指以数据库为基础的应用程序
数据库管理系统的基本功能
- 数据定义
- 数据处理
- 数据安全
- 数据备份
数据库系统的架构
- 单机架构
- 大型主机/终端架构
- 主从式架构(C/S)
数据库分类
概念:
数据库分类:根据数据库的架构和数据组织原理进行分类
- 早期根据数据库的组织数据的存储模型分类
- 层次数据库:基于层次的数据结构(数据分层)
- 网状数据库:基于网状的数据结构(数据网络)
- 关系数据库:基于关系模型的数据结构(二维表)
- 现在较多根据实际实际数据管理模型分类(存储介质)
- 关系型数据库:基于关系模型的数据结构(二维表)通常存储在磁盘
- 非关系型数据库
关系型数据库
概念 关系型数据库:是一种建立在关系模型上的数据库
-
关系模型
- 关系数据结构(存储)
- 关系操作集合(操作)
- 关系完整性约束(约束)
-
关系型数据库存储在磁盘中(永久性存储)
-
关系型数据系统(DBS) 模型有四层结构
- 数据库管理系统(DBMS) :管理系统运行(DataBase Management System )
- 数据库 (DB) :数据存储的管理者(小管理,受DBMS管理)
- 数据表 (Table) :数据关系管理者
- 数据字段(Field): 依赖于数据表,实际数据存储者
-
关系型数据库产品
- 大型:Oracle,DB2
- 中型:MySQL ,SqlServer
- 小型:Sybase ,Access
非关系型数据库
概念非关系型数据库 :NoSQL (Not only SQL) 不仅仅是关系型数据库
- 所有不是关系型数据库的统称
- 数据存储模型不是二维表,而是键值对 (key->value)
- 存储的位置通常是内存(效率高)
- 不能永久性存储(需要定时存到关系型数据库中)
- 常见的关系型数据产品
- MongoDB
- Redis
- Memcached
对比:
No SQL 通常是与关系型数据库配合使用的 ,他们彼此是一种互补关系
- NoSQL 运行在内存,解决效率问题
- l/O 问题
- 效率问题
- MySQL 运行在磁盘,解决稳定问题
- 安全问题(永久存储)
- 稳定
结论
1 . NoSQL 是对非关系型数据库的一类统称
NoSQL 是不仅仅只是关系型数据库的意思
2 . NoSQL 通常运行在内存
- 读取效率高
- 并发访问高
- 稳定性不高(断电即丢失)
- NoSQL通常是键值对存储数据,访问简单
三种数据模型
层次数据模型
定义:层次数据模型是用于树状<层次> 结构来组织数据的数据模型
满足下面两个条件的基本层次联系的集合为层次模型
1.有且只有一个结点没有双亲结点,这个结点称为根结点
2.根以外的其它结点有且只有一个双亲结点
其实层次数据模型就是的图形表示就是一个倒立生长的树,由基本数据结构中的树(或者二叉树)的定义可知,每棵树都有且仅有一个根节点,其余的节点都是非根节点。每个节点表示一个记录类型对应与实体的概念,记录类型的各个字段对应实体的各个属性。各个记录类型及其字段都必须记录。
网状数据库
网状数据模型可以看做是放松层次数据模型的约束性的一种扩展。网状数据模型中所有的节点允许脱离父节点而存在,也就是说说在整个模型中允许存在两个或多个没有根节点的节点,同时也允许一个节点存在一个或者多个的父节点,成为一种网状的有向图。因此节点之间的对应关系不再是1:n,而是一种m:n的关系,从而克服了层次状数据模型的缺点。
特征:
1. 可以存在两个或者多个节点没有父节点;
2. 允许单个节点存在多于一个父节点;
网状数据模型中的,每个节点表示一个实体,节点之间的有向线段表示实体之间的联系。网状数据模型中需要为每个联系指定对应的名称。
优点:
- 网状数据模型可以很方便的表示现实世界中的很多复杂的关系;
- 修改网状数据模型时,没有层次状数据模型的那么多的严格限制,可以删除一个节点的父节点而依旧保留该节点;也允许插入一个没有任何父节点的节点,这样的插入在层次状数据模型中是不被允许的,除非是首先插入的是根节点;
- 实体之间的关系在底层中可以借由指针指针实现,因此在这种数据库中的执行操作的效率较高;
缺点:
- 网状数据模型的结构复杂,使用不易,随着应用环境的扩大,数据结构越来越复杂,数据的插入、删除牵动的相关数据太多,不利于数据库的维护和重建。
- 网状数据模型数据之间的彼此关联比较大,该模型其实一种导航式的数据模型结构,不仅要说明要对数据做些什么,还说明操作的记录的路径;
- DDL、DML语言复杂,用户不容易使用
- 记录之间联系是通过存取路径实现的,用户必须了解系统结构的细节
RDBMS 关系型数据库
- 关系Relational: 关系就是二维表,其中;表中的行,列次序并不重要
- 行row: 表中的每一行,又称为一条记录record
- 列column:表中的每一列,称为属性,字段,域field
- 主键Primary key: PK,用于唯一确定一个记录的字段,一张表只有一个主键
- 域domain:属性的取值范围,如,性别只能是’男’和’女’两个值,人类的年龄只能0-150
关系必须是规范化的,满足一定规范条件
- 最基本的规范条件:关系的每一个分量必须是一个不可分的数据项, 不允许表中还有表
常用关系数据库
- MySQL: MySQL, MariaDB, Percona Server
- PostgreSQL: 简称为pgsql,EnterpriseDB
- Oracle
- MSSQL
- DB2
查看数据库排名网址
https://db-engines.com/en/ranking
关系型数据库理论
实体-联系模型E-R
-
实体Entity : 客观存在并可以相互区分的客观事物或抽像事件称为实体,在E-R图中用矩形框表示实 体,把实体名写在框内
-
属性:实体所具有的特征或性质
-
联系:联系时数据之间的关联集合.是客观存在的应用语义链
- 实体内部的联系:指组成实体的各属性之间的联系。如职工实体中,职工号和部门经理号之间 有一种关联关系
-
实体之间的联系:指不同实体之间联系,例:学生选课实体和学生基本信息实体之间
-
实体之间的联系用菱形框表示
联系类型
- 一对一联系(1:1)
- 一对多联系(1:n) 外键
- 多对多联系(m:n)增加地三张表
数据操作
- 数据提取: 在数据集合中提取感兴趣的内容。SELECT
- 数据更新数据库中的数据,insert ,delete,update
数据库规划流程
-
收集数据,得到字段
收集必要且完整的数据项
转换成数据表的字段
-
把字段分类,归入表,建立表的关联
关联:表和表间的关系分割数据表并建立关联的优点
节省空间
减少输入错误
方便数据修改
数据库正规化分析
数据库规范化,又称数据库或资料库的正规化、标准化,是数据库设计中的一系列原理和技术,以减少 数据库中数据冗余,增进数据的一致性。关系模型的发明者埃德加·科德最早提出这一概念,并于1970 年代初定义了第一范式、第二范式和第三范式的概念 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,不同的规范要求被称为不同范 式,各种范式呈递次规范,越高的范式数据库冗余越小 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范 式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式 (1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类 推。一般数据库只需满足第三范式(3NF)即可
第一范式: 1NF
无重复的列,每一列都是不可分割的基础数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,确保每一列的原子性,除去同类型的字段,就是无重复的列
说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据 库
第二范式:2NF
第二范式必须先满足第一范式,属性完全依赖于主键,要求表中的每个行必须可以被唯一地区分,通常为表加上每行行的唯一标识PK,非PK的字段需要与整个PK有直接相关性
第三范式:3NF
满足第三范式必须先满足第二范式属性,非主属性不依赖于其他非主属性,第三范式要求一个数据中不包含已在其它表中已包含的非关键字信息,非PK的字段间不能有从属关系
SQL结构化查询语言
SQL解析器
数据存储协议:应用层协议,C/S
S: server ,监听于套接字,接收并处理客户端应用请求
C:Client
客户端程序接口
CLI
CUI
应用程序接口
ODBC:Open Database Connectivity
JDBC:Java Data Base Connectivity
基本概念
- 约束:constraint,表中的数据要遵守的限制
- 主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,即NOT NULL,一个表只能有一个
- 唯一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为NULL,一个 表可以存在多个
- 外键:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据
- 检查:字段值在一定范围内
- 索引:将表中的一个或多个字段中的数据复制一份另存,并且按特定次序排序存储
关系运算
- 选择 :挑选出符合条件的行
- 投影: 挑选出需要的字段
- 连接: 表间字段的关系
数据抽像
- 物理层:数据存储格式,即RDBMS在磁盘上如何组织文件
- 逻辑层:DBA角度,描述存储什么数据,以及数据间存在什么样的关系
- 视图层:用户角度,描述DB中的部分数据
关系模型的分类
- 关系模型
- 基于对象的关系模型
- 半结构化的关系模型:XML数据