[TOC]
是有数据库、数据库管理系统、应用程序、数据库管理员组成的储存,管理,处理,维护数据的系统。
数据库系统的特点:
- 数据结构化
- 数据的共享性高
- 冗余度低且易扩充
- 独立性、数据有数据库管理系统统一管理控制
物理独立性:
指用户的应用程序和数据库中的数据的物理存储是相互独立的
逻辑独立性:
指用户的应用程序对数据库的逻辑结构是独立的。
提供 数据的安全性保护、完整性检查、并发控制、数据库恢复
实体集
同一类型实体的集合成为实体集
数据库系统采用关系模型作为数据的组织方式。
关系:一个关系对应通常说就是一张表
关系模式:关系名(table_name)(属性1,属性2,属性3。。。。)
属性:表中的一列即为一个属性
域:属性的取值范围;
元组:表中的一行即为一个元组;
主码:表中的某个属性组,它可以惟一确定一个元组;
分量:元组中的一个属性值;
实体完整性
属性A是基本关系R的主属性,则A不能取空值。
参照完整性
若F是R的外码,它与关系S的主码相对应,则对于R中的每个元组在F上的值必须为:空值,或者S中某个元组的主码值。
用户定义的完整性
- 域:
是一组具有相同数据类型的集合- 笛卡尔积:
是域上的一种集合运算- 元组:
笛卡尔积的每一个元素
***- 全码:
所有属性都是候选码,称为全码- 候选码:
能唯一标识一个元组的某一个属性组,学生(姓名, 学号, 成绩) 则姓名和学号都是候选码- 主属性:
候选码的各属性- 主码:
候选码中选定一个作为主码
等值连接
从两个关系的广义笛卡尔积中选取A,B属性值相等的那些元组出来。
自然连接
两个关系中比较的分量必须是相同的属性值,
就是把 R 和 S中相同的部分保留下来,并要在结果总把重复的一列去掉。
外连接
把在自然连接中舍弃了的元组也保存到结果关系中,而其他的属性值填NULL
左/右外连接:
把自然连接中 左/右关系 R / S 舍弃的元组保留下来
把限制词放在语句的后面
cascade (级联) 表示在删除模式的同时,把模式下定义的对象也一并删除
restrict (限制) 表示只有当没有下属对象时才可以执行删除语句,否则拒绝
模式的基本对象有:表、视图、索引
也称逻辑模式,是数据库中去啊你数据的逻辑饥饿哦股和特征的描述,是所有用户的公共数据视图。
外模式:模式与外模式映射保证逻辑独立性
它是数据用户能看到和使用的局部数据和逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑关系。
内模式:模式与内模式映射保证物理独立性
一个数据库只有一个内模式,是数据物理结构和存储方式的描述,是数据在数据库的组织方式。
create schema <模式名> authorization <用户名>;
unique () 每一个索引值只对应唯一的数据记录
cluster ()
create unique index Stusname on Student(Sname);
LOWER(Sdept)
select sname,2004-sage from Student;
select sname,'Year of Birh:',2004 - sage,LOWER(Sdept) from Student;
通过制定别名来改变查询结果的列标题。
select sname NAME,'Year of Birh:'BIRTH,2004 - sage BIRTHDAY,LOWER(Sdept) DEPARTMENT from Student;
消除取值重复的行
select distinct sno from SC;
确定范围between and
select sname,sdept,sage from student where sage (not) between 20 and 23;
确定范围in
select sname,ssex from student where sdept in('cs','ma','is');
like
通配符:
% 代表任意长度
_ 代表单个字符 一个汉字两个字符
/ 是转义字符
select * from student where sname like '刘%';
空值查询IS NULL
select sno,cno from sc where grade is (not) null;
对查询结果进行升序、降序排列
升序: asc
降序:desc
select sno,grade from sc where cno = '3' order by grade desc;
将查询结果分组
````
select cno,count(sno) as 数量 from sc group by cno;
select 图书分类,count(图书编号) as 图书数量 from 图书采购表 group by 图书分类') ;
###having
对分组结果进行筛选
/查询修了2门以上课程的学生/
select sno from sc group by sno having count(*)>2;
##连接查询
① 查询编号为300的客户通过的代理商的姓名和地址。
select 代理商.姓名,代理商.地址 from 代理商,客户
where 客户.客户编号=300 and 客户.代理商编号=代理商.代理商编号;
##嵌套查询
2.嵌套查询
/
① 查询与“刘晨”在同一个系学习的学生。
select from 学生信息
where 专业 in(
select 专业 from 学生信息 where 姓名 = '刘晨')
② 查询选修了课程名为“操作系统”的学生。
select 学生信息.* from 学生信息,课程信息
where 学生信息.学号
in(select 成绩信息.学号 from 成绩信息 where 成绩信息.课程序号
in(select 课程信息.课程序号 from 课程信息 where 课程信息.课程名称 = '操作系统'));
```
三类安全性问题:
技术安全,管理安全,政策法律安全
定义用户权限,并将用户权限登记到数据字典中
合法权限检查
定义各个用户对不同数据的存取权限,当用户访问数据时,首先检查用户的存取权限,防止不合法的用户对数据库的存取
每个数据对象被强制地标以一定的密级,每个用户也被强制地授予某一个级别的许可证,系统规定只有某一许可证级别的用户才能存取某一级别的数据对象。
审计功能把用户对数据库的所有操作自动记录下载放入审计日志中。DBA可以利用审计跟踪的信息,重现导致数据库先有状况的一系列事件,找出非法存取数据的人、事件和内容等。
替换法:把明文字符换位密文字符
置换发:把明文字符重新排序
DES (数据加密标准) 秘钥加密技术 = 替换法 + 置换法
- 是
一对一的关系
X 中有属性值相同的元组,则对应的 Y 中的属性值也要相等,则称:X 函数决定 Y ,Y 函数依赖于X。
X称为决定属性组,或决定因素。- 如果 Y 是X 的子集,则 X -> Y 为平凡函数依赖。
- 如果 X -> Y,但对于X的任何一个真子集 都不能函数确定Y,则对X完全函数依赖
- X->Y,但是Y不函数决定于X,则为部分函数依赖。
传递函数依赖
- X ->Y, Y->Z . X->Z
多值依赖
- X -> -> Y
三范式是为了避免数据冗余。
就是每一个列(属性)只有一个,没有重复。
每个非主属性完全依赖于主键
反例: A -> C, B -> C ,存在部分函数依赖
满足第一范式的前提下,消除部分函数依赖
(拆分为两个表)。
每个非主属性不依赖于其它非主属性
消除部分和传递函数依赖
- BC范式:关系模式R属于第一范式,且每个属性都不传递依赖于键码。
- BC范式是第三范式的增强版,不过也有人说是直接从1NF发展过来的,
即每个属性,包括主属性或非主属性,都完全依赖于候选键,并且不存在传递依赖情况。
传递性
求属性集 X (X是U的真子集) 关于U 上的函数依赖 F 的壁报X(F)+;
*** 例子:
U = {A,B,C,D,E},F = {AB-->C,B-->D,C-->E,EC-->B,AC-->B}求(AB)f+;
解**:
设:X(0) = AB;
X(1):找到左边A,B或AB的函数依赖,得到AB-->C,B-->D。于是X(1) = AB U CD = ABCD;
......比较上下两次迭代(如:X(0),X(1))是否相等,如果不等则并进来
继续,直到 上下两次迭代相等为止。
A --> B ,B --> C ,A --> C
则最小函数依赖集为:A --> B,B --> C;
三分技术,七分管理,十二分基础数据
I/O 代价
+ CPU代价 + 内存代价 + 通信代价事务的特性
可以联想一下印象笔记的笔记同步
ACID特性(原子性、一致性、隔离性、持续性)
- 原子性:事务是最小的逻辑工作单位,要么做完一个事务,要么不进行事务
- 一致性:事务执行后数据库必须是从一个一致性的状态变为另一个一致性的状态的
- 隔离性:一个事务的执行不能被其他事务干扰,事务之间隔离。
- 持续性(永久性) :事务提交后对数据库中数据的影响是永久性的。
可以联想一下印象笔记的多人协作
就是多人协作,对同一份笔记进项修改。
可以联想一下印象笔记的