一、数据库技术术语
(一)术语
1、数据
- 数据描述事物的符号
- 描述一个对象所用的标识,可以文字、图形、图像、语言等等
2、信息
- 现实世界对事物状态变化的反馈。
- 可感知、可存储、可加工、可再生。
- 数据是信息的表现形式和载体,信息是加载于数据之上,对数据作具有含义的解释。
3、数据库
- 按照数据结构来组织、存储和管理数据的仓库。
- 数据库时按照一定的数据模型组织、存储和应用的数据的集合。
- 数据间联系紧密、数据冗余度小、数据独立性高、容易扩展、便于共享。
(二)相关术语
1、关系(单一数据结构、表文件)
- 关系模型的逻辑结构是一张二维表,这个二维表就是关系。
- 一个关系对应一张表。
- 关系数据库的表采用二维表格存储数据,按行与列排列的具有一些信息的逻辑组。
2、属性(字段)
- 每一列称为一个字段,每个字段描述所含有的数据的意义。
- 数据表的设计实际上是对字段的设计。
- 字段可以包含各种字符、数字甚至图形
- 为每个字段分配一个数据类型
3、元组(记录)
- 表中的一行称为一个元组或一条记录。
4、分量
- 给定一个元组后,这个元组的第一个属性就是该元组的第一个分量
- 元组中的一个属性就是一个分量,一系列元组同一分量的集合就是关系属性(二维表中的列)。
5、关系模式
- 对关系的描述,记为R(A1, A2, ···, An),关系名(属性1,属性2,……,属性n)
6、候选码/候选键
- 能够唯一标识关系中某一元组的一个属性或属性集
- 需要满足:唯一性、最小性(构成候选码的属性个数最少)
7、主码/主键/关系键/关键字
- 从候选码中选一个作为查询、插入、删除元组操作的操作变量
- 最具代表性
- 用实线标识
8、外码/外键
- 涉及两个关系
- 在一个关系中的属性,在另一个关系中作主键,为外键。
- 用虚下划线标识
9、主属性/非主属性
- 主属性:包含在任何一个候选码的各个属性称为主属性
- 非主属性:不包含在任何候选码中的属性
10、全码
- 一个关系中把所有属性放在一起组成一个属性组才能唯一标识关系中的每一元组,这样的属性组叫做全码(ALL KEY)。
二、三级模式/两级映像
(一)三级模式
有效组织、管理数据,提高数据库的逻辑独立性和物理独立性。
1、外模式(子模式/用户模式,对应于用户级 用户观)
- 可以有多个
- 从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据,数据库中局部数据的逻辑结构和特性的描述。
- 用户通过外模式描述语言来描述、定义对应于用户的数据记录,也可使用DML对这些数据记录进行操作。
- 对应关系数据库中的视图。
2、模式(概念模式/逻辑模式,对应于概念级 整体观)
- 数据库中全体数据的全局逻辑结构和特性的描述。
- 由DDL(数据模式描述语言,Data Description Language)描述、定义的
- 对应关系数据库中的基本表。
3、内模式(存储模式/物理模式,对应于物理级 存储观)
- 只有一个
- 数据在数据库系统内部物理结构和存储结构的描述。
- 对应关系数据库中的文件。
(二)两级映像
对象关系映射(ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。
1、外模式/模式的映像
- 保证数据与应用程序间的逻辑独立性:
应用程序更改时,可不改模式。
模式更改时,不影响数据库的程序。 - 实现外模式到模式的相互转换。
2、模式/内模式的映像
- 保证数据与应用程序间的物理独立性:
应用程序、外模式、模式更改,不改内模式。
内模式更改时,不用改应用程序、外模式、模式。 - 实现模式到内模式的相互转换
(三)数据库管理系统
1、数据库的安全性
- 防止不合法、非法用户去使用数据库对数据造成破坏泄露等
2、数据库的完整性
- 数据库的正确性和相容性,防止合法用户使用数据库时,向数据库里加入不符合语义的数据。
3、并发控制
- 多用户访问时,并发控制负责协调事务的执行能力,保证数据库完整性和一致性不被破坏。
4、故障恢复
- 数据库发生故障,将其恢复到发生故障前的一致性的状态的情况。
三、完整性约束
防止的是对数据的意外破坏。
(一)实体完整性
- 在关系R中,主属性不能为空。
- 主键是已经作为约束的候选键。
(二)用户自定义完整性
- 针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。
- 比如年龄必须为大于0小于150的整数。
(三)参照完整性/引用完整性
- 当前关系外键的取值必须等于另一个关系中的一个主键值、或者为空(null)。
- 规定,若F是基本关系R的外码,它与基本关系S的主码K,相对应(基本关系R和S不一定是不同的关系),则R中每个元组在F上的值必须为:或者取空值;或者等于S中某个元组的主码值。
四、数据库设计
(一)分布式数据库
1、透明性
用户只用关心业务,不用关系数据库相关问题。
2、透明性分类
- 分片透明
用户不用关心数据在数据库中如何被分割成片,但会通过应用程序从数据库取到后完整呈现给用户。 - 复制透明
分布式数据库分布到网络中不同节点,节点间的数据需要复制同步,用户不需要关心如何复制同步。 - 位置透明
用户不需要关注所操作的数据存放在哪个位置。 - 局部映像透明性(逻辑透明)
最低层次的透明
局部数据模型透明,即用户或应用程序无需知道局部使用是哪种数据模型
(二)DBA(数据库管理员)
职责
(三)数据库设计的阶段
1、用户需求分析
2、概念结构设计
- 主要工具是E-R模型,生成E-R图。
3、逻辑结构设计
- 将E-R图转成对应关系数据库支持的数据库表、表之间的关系情况等。
- 逻辑结构设计是在概念结构设计的基础上进行的数据模型设计,可以是层次、网状模型和关系模型。由于当前的绝大多数DBMS都是基于关系模型的,E-R方法又是概念结构设计的主要方法,如何在全局E-R图基础上进行关系模型的逻辑结构设计成为这一阶段的主要内容。
- 在数据库逻辑结构设计阶段,需要需求分析阶段形成的需求说明文档、数据字典和数据流图作为设计依据。
4、物理结构设计
- 涉及数据存储结构及存储结构控制等
五、E-R模型
E-R图:实体关系图。
(一)3要素
1、实体(E)
- 客观存在的对象,对象间相互区分
2、联系(R)
- 对象与对象间的关系。
3、属性
- 实体具体的一个特征,通过一系列特征反映实体状态。
- 有多种类型。
(二)图例
(三)实体的属性
属性是一个实体具体的一个特征,一系列特征能描述一个对应的实体。
1、简单属性
- 一个不可分割的属性,是原子的。
2、复合属性
- 一个可细分为一系列简单属性构成的属性。
3、单值属性
- 针对一个元组来讲,某一个分量的取值是单一的。
- 二进制的表示,要么取值0,要么取值1。
4、多值属性
- 针对一个元组来讲,某一个分量的取值是多个的。
5、NULL属性
- 表示空,数据库中没有输入数据的对象。
6、派生属性
- 根据其他属性的值计算出值的属性。
(四)E-R模型的联系
1、一对一(1:1)
2、一对多(1:n)/(1:*)
3、多对多(m:n)/(:)
六、函数依赖公理系统
(一)函数依赖
1、函数依赖
- 大的决定小的
2、完全函数依赖
- 右侧被决定的一方完全只依赖于左侧。
3、部分函数依赖
- 右侧被决定的一方只依赖于部分左侧。
4、传递函数依赖
- A决定B,B决定C===A决定C(C依赖于A)
(二)函数依赖的公理系统
七、规范化
(一)确定候选码
- 首先应该找出F中所有的决定因素,即找出出现在函数依赖规则中“→”左边的所有属性,组成集合U1
- 再从U1中找出一个属性或属性组K,运用Armstrong公理系统及推论,使得K→U,而K真子集K’→U不成立
- 这样就得到了关系模式R的一个候选码,找遍U1属性的所有组合,重复过程(2),最终得到关系模式R的所有候选码
- 注意:如果已经找到了一个候选码K,K是U1的一个子集,那么找下一个候选码时,就不需要考虑 K与U1中其他属性的组合
(二)判定1~4NF的主要依据
-
1NF
每个分量是不可再分割的数据项 -
2NF
在1NF的基础上,非主属性对码不存在部分依赖 -
3NF
在2NF的基础上,非主属性对码不存在传递依赖 -
BCNF
在1NF基础上,主属性对码不存在部分和传递依赖 -
4NF
在全键表中,键的一部分可以确定至多一个其他字段的多个值若关系模式R属于1NF,R的每个非平凡多值依赖X→→Y且Y不属于X时,X必含有码,则关系模式R(U,F)属于4NF。如:若实体中存在多值属性,那么将E-R图转为关系模式时将实体的码分别和每个多值属性独立构成一个关系模式得到的关系模式属于4NF
八、SQL语句
(一)创建视图
1、概念
- 视图相当于一个虚拟表,本身不存储数据,本质是存储起来的select语句
- 视图本身的删除,不会导致基表中数据的删除。
- 大型项目考虑使用视图。
2、作用
- 对机密数据提供安全保护,屏蔽后台数据复杂性;
- 根据用户需求,定制特别的数据;
- 以多种角度看待同一数据;
- 对重构数据库提供一定逻辑独立性。
3、语法
CREATE VIEW 视图名
AS SELECT 子句
WITH CHECK OPTION
建立计算机系CS学生的视图
CREATE VIEW vwCS
AS SELECT Sno, Sname, Sage FROM student
WHERE Sdept= 'cs'
WITH CHECK OPTION
(二)select语法
SELECT <列名>[···n]
FROM <表名|视图名> [,···n]
[WHERE <条件表达式>]
1、简单查询
- 查询员工号为2的员工的姓名和工龄
SELECT 姓名, 工龄
FROM 员工表
WHERE 员工号=2
2、连接查询
- 查询部门名为“企业信息部”,且在2022年2月2日后入职的员工工号、姓名和性别
SELECT 员工号, 姓名, 性别
FROM 员工表, 部门表
WHERE 员工表.部门号=部门表.部门号
AND 部门.名称='企业信息部'
AND 参加工作时间>'2022-02-02'
- 字符类型,日期类型的数据需要使用单引号
(三)聚集函数
1、函数
函数名(列名)
- 平均值AVG
- 最小值MIN
- 最大值MAX
- 求和SUM
- 计数COUNT
2、查询员工总数
SELECT COUNT (*) AS 雇员总数
FROM 员工表
3、查询部门人员少于5个的部门号
SELECT 部门号, COUNT (部门号)
FROM 员工表
GROUP BY 部门号
HAVING COUNT (部门号)<5
(四)授权语句
1、语法
GRANT <权限>[,··· n]
ON <对象类型><对象名>
TO <用户>[,··· n]
WITH GRANT OPTION
2、将员工表查询、更新的权利赋予给用户U1
GRANT SELECT, UPDATE
ON TABLE 员工 TO U1
3、将对供应商S的插入权限赋给用户U1,并允许将此权限赋给其他用户
GRANT INSERT ON TABLE S
TO U1
WITH GRANT OPTION
九、关系代数运算
(一)关系代数运算符
(二)笛卡尔积
- 将笛卡尔积转换成关系数据库的二维表