第一节:数据库原理
1.1 数据库管理系统
(1)数据库是数据的汇集,它以一定形式存于存储介质上
(2)DBMS是管理数据库的系统软件,它实现数据库系统的各种功能,是数据库系统的核心
(3)DBA(数据库管理员)负责数据库的规划、设计、协调、维护、管理和性能优化等工作
(4)应用程序指以数据库为基础的应用程序
1.2 数据库管理系统的优点
(1)相互关联的数据的集合
(2)较少的数据冗余
(3)程序与数据相互独立
(4)保证数据的安全、可靠
(5)最大限度地保证数据的正确性
(6)数据可以并发使用并能同时保证一致性
1.3 数据库管理系统的基本功能
(1)数据定义
定义数据类型等
(2)数据处理
增删改查等
(3)数据安全
权限控制等
(4)数据备份
备份还原等
1.4 数据库系统架构
(1)单机架构
(2)大型主机/终端架构
(3)主从架构(C/S)
目前主流,用户访问量成为瓶颈
(4)分布式架构
解决用户访问量瓶颈
1.5 关系型数据库
(1)关系:关系就是二维表,满足如下性质:
表中的行、列次序并不重要
(2)行 row:表中的每一行,又称为一条记录(record)
(3)列 column:表中的每一列,成为属性,字段
(4)主键(Primary key):用于唯一确定一个记录的字段,避免出现一样的字段
(5)域 domain:属性的取值范围,如,性别:男、女
(6)主流的关系型数据库:
MYSQL(MySQL,MariaDB,Percona Server)、PostgreSQL、Oracle、MSSQL、DB2
(7)支持事务 transaction:多个操作被当作一个整体对待
ACID:
A:原子性
所有动作要么都做,要么都不做
C:一致性
数据时时刻刻要保证一致性
I:隔离性
执行多个事务,不能相互影响,各个事务看到的是开始时的数据,而不是dirty data
D:持久性
事务完成,数据永远更改,拥有持久性
1.6 基本概念
(1)实体 Entity
客观存在并可以相互区分的客观事务或抽象事件称为实体。在 E-R 图中用矩形框表示实体,把实体名写在框内。
(2)属性
实体所具有的特征或性质
(3)联系:联系是数据之间的关联集合,是客观存在的应用语义链
实体内部的联系:指组成实体的各属性之间的联系,如职工实体中,职工号和部门经理号之间有一种关联关系
实体之间的联系:指不同实体之间联系,如学生选课实体和学生基本信息实体之间
实体之间的联系用菱形框表示
(4)联系类型
一对一联系(1:1)
一对多联系(1:n)
多对多联系(n:n)
多构建第三张表实现多对多联系
(5)约束: constraint,表中的数据要遵守的限制
主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,即 NOT NULL,一个表只能有一个
唯一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为 NULL,一个表可以存在多个
外键:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据
检查:字段值在一定范围内
(6)索引
将表中的一个或多个字段中的数据复制一份另存,并且此些需要按特定次序排序存储
(7)关系运算:
选择:挑选出符合条件的行
投影:挑选出需要的字段(列)
连接:表间字段的关联
(8)数据三要素
数据结构:包括两类
一类是与数据类型、内容、性质有关的对象,比如关系模型中的域、属性和关系等;
另一类是与数据之间联系有关的对象,它从数据组织层表达数据记录与字段的结构。
数据的操作:
数据提取:在数据集合中提取感兴趣的内容 SELECT
数据更新:变更数据库中的数据 INSERT、DELETE、UPDATE
数据的约束条件:是一组完整性规则的集合
实体(行)完整性 Entity integrity
主键 PK:一张表只能有一个,不能为空
唯一键 UK:一张表允许有多个,允许为空 null
域(列)完整性 Domain Integrity
参考完整性 Referential Integrity
外键 FK:构建表与表之间的联系(第三张表),实现多对多联系
(9)数据模型
数据抽象:
物理层:数据存储格式,即 RDBMS 在磁盘上如何组织文件
逻辑层:DBA 角度,描述存储什么数据,以及数据间存在什么样的关系
视图层:用户角度,描述 DB 中的部分数据
关系模型的分类:
关系模型
基于对象的关系模型
半结构化的关系模型:XML 数据
1.7 简易数据规划流程
(1)第一阶段:收集数据,得到字段
收集必要且完整的数据项;转换成数据表的字段。
(2)第二阶段:把字段分类,归入表,建立表的关联
关联:表和表间的关系
分割数据表并建立关联的优点:
节省空间
减少输入错误
方便数据修改
(3)第三阶段:
规范化数据库
1.8 数据库的正规化分析
范式:不同的规范要求
1NF:无重复的列,每一列都是不可分隔的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,除去同类型的字段,就是无重复的列
说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式的数据库就不是关系数据库
2NF:属性完全依赖于主键,第二范式必须先满足第一范式,要求表中的每个行必须可以被唯一地区分。通常为表加上一个列,以存储各个实例的唯一标识 PK,非 PK 的字段需要与整个 PK 有直接相关性
3NF:属性不依赖于其它非主属性,满足第三范式必须先满足第二范式。第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息,非PK的字段间不能有从属关系
总结:范式就是用来打破的,为了追求高性能将属性列于同一张表,但是利用的磁盘空间比较高。
1.9 SQL概念
结构化查询语言,国际标准语言
SQL解释器:
数据存储协议:应用层协议,C/S
S:server,监听于套接字,接收并处理客户端的应用请求
C:Client,客户端程序接口:
CLI
GUI
应用编程接口:
ODBC:Open Database Connectivity
JDBC:Java Data Base Connectivity