一、结构数据模型
- 结构数据模型是直接面向数据库的逻辑结构
- 包括:
- 层次模型、网状模型、关系模型(主要学习)、面向对象模型
- 层次模型:
- 是一个树结构
- 一对多
- 网状模型:
- 是图结构
- 多对多
- 关系模型
- 是一种二维表格结构
- 例如:Excel
- 每个二维表由行、列组成(称为关系)
- 关系模型是对关系的描述
- 关系模型是由多个关系模型组成的集合
二、三级模式结构
背
- 包括:
- 概念模式
- 外模式
- 内模式
- 概念模式:
- 别名:模式
- 对应:基本表
- 外模式:
- 别名:用户模式、子模式
- 对应:视图
- 内模式:
- 别名:存储模式
- 对应:存储文件
三、二级映像
/表示为到
- 包括:
- 模式/内模式映像
- 外模式/模式映像
- 模式/内模式映像:
- 物理独立性
- 实现了模式到内模式映像之间的转换
- 外模式/模式:
- 逻辑独立性
- 实现了外模式到模式映像之间的转换
三、关系模型中的基本术语
注意:码=键
四、关系模型中的关系完整性
- 三个规则
- 实体完整性:主键不能为空
- 参照完整性:
- 例如:表a中有主键和外键,a中的外键对应b表中的主键,
- 这样的话,a表中的外键的值,只能是b表中的主键,或空,不能为其他
- 用户定义完整性:用户对某一具体的数据制定某种约束检测。
五、笛卡尔积
- 符号:✖
- 例如:
六、关系代数
1. 符号大全
2. 差解释:
- 删除B中和A一样的,剩下的就是差
3. 投影
- 符号:Π
- 解释:在关系R中选出若干属性列A组成新的关系
4. 选择
- 符号:
- 含义:从关系R中选择满足条件的元组
- 注意:在关系代数中a=1和a=‘1’的含义是不一样的
- a=1是比较a列和第一列的数据是否一致
- a='1'是比较a列的元素是否等于字符‘1’
5. 连接(join)
- 符号:
- 分类:
- 等值连接
- 自然连接
- 注意:笛卡尔积是无条件产生的
- 如果使用自然连接,但是列于列之间没有相同属性的话,会触发笛卡尔积现象。
- 例如:
5.1. θ连接
5.2. 等值连接
- 等值连接和自然连接的区别:
- 等值连接 》》》只需要找到同名列的相同属性元素元组即可
- 自然连接》》》需要再删除重复的列
5.3. 自然连接
- 含义:是去除重复属性列的等值连接(常考)
- 记作:
- 注意:如果R和S有多个属性同名,那需要R和S的多个属性值都相同。
6. 外连接
- 包含:
- 左外连接
- 右外连接
- 全外连接
6.1.1. 左外连接
- 符号:
- 含义:取出左侧关系与右侧不匹配的元组,用null填充左侧
6.1.2. 右外连接
- 符号:
- 含义:取出右侧关系与左侧比匹配的元组,用null填充左侧
6.1.3. 全外连接
- 符号:
7. 除(了解)
- 符号:➗
- 含义:R➗S,删除R中和S相同的元组
七、以上知识点例题
- 例题一
- 例题二
- 例题三
- 例题四
- 例题五
八、关系代数转SQL
- 投影
select * from 表名
- 选择
select * from 表明 where 属性 (符号) 属性
- 笛卡尔积现象
select a.name,b.name from a,b
- 自然连接
select * from a,b where a.name = b.name
- 例题1
九、SQL语言
简介:SQL Service 数据库的体系结构是由视图、基本表和存储文件之间结构组成。
SQL的数据定义语言
- 创建数据库
create database 数据库名称
- 创建表结构
create table 表名称 ( # 属性 name char, age char(2) )
- 增加表的列
alert table test add f3 int
- 修改test表的f3类型为float
alert table test modify f3 float
- 删除f3列
alert table test drop f3
- 删除test表
drop table test
- 列级完整性约束
- not null
- unique
- default
- not null unique
# 创建test表,其中a属性不能为空,且值唯一,b属性默认值为'1' create table test ( a int unique not null, b char(11) default '1' )
- 表级完整性约束(掌握)
- 主键约束
- 外键约束
- 用户自定义约束
create table ( id int , age char(11), imgId int, primary key(id), # 主键 foreign key(imgId) references img # 外键 , check(name <=120) # 用户自定义 )
SQL的数据操作语言
# 插入 insert into 表名称 (列名) values(元组值) # 删除 delect from 表名称 where 条件 # 修改 update 表名称 set 列名称=想要修改的值 where 条件
SQL的数据查询语言
- 完整语法
- 投影查询
select * from 表名称
- 查询去重复的列
select distinct 列1 from 表名称
- 选择查询
#范围查询 select * from test where between 条件1 and 条件1 #like关键字 _表示一个字符,%表示一个或多个字符 select * from test where like '王_' # 查询成绩为31,32,33的人 select * from test where cj in (32,31,33) # 条件逻辑 and or not is # 排序查询 默认升序 asc 降序为:desc order by 列名称 desc # 查询一学号为降序的S表 select * from s order by 学号 desc
- 聚合函数
查询s表中年龄最大的人 select max(age) from s
- 分组
# group by 列名称 # 解释:把列中值相同的分为一组
- 聚合和分组
- 因为聚合函数一般只有一个分组,但是如果要显示多列的话加上分组
- 执行顺序
- 连接查询
# 一般格式 select * from a,b where 条件 # 在sql service中连接分成了内连接(inner join)和外连接(outer join),mysql默认为内连接 # 内连接分为:等值连接、非等值连接、自连接 # 外连接分类:左外连接、右外连接、全外连接 left outer join right outer join full outer join
- 子查询
- 解释 :一个查询中的条件为一个查询
# 例如:在A表中学生编号为105和该同学同岁的人 select * from where age = (select age from A where no ='105')
注意:
all(全部大于)
any(大于最小的)
- 带EXISTS测试的子查询
- 查询结果的并、交、差计算
- 并(union)
- 例如A和B表的列1
select 列1 from A union select 列1 from B
- 交(intersect)
- 例如:查A表和B表列1值都相同的
select 列1 from A intersect select 列1 from B
- 差(except)
- 例如:把A表中属于B的删除
select 列1 from A except select 列1 from B
例题
SQL控制语句
- 数据控制师用户对数据的存储权力
- 授权的语句格式
- 说明(记):wtth grant option表示了,若指定了此子句,获得的权限用户还可以赋给其他人
grant <权限> [on 对象属性] <对象名> to <用户> [wtth grant optino] # 例如:将对供应商s,零件p项目j的所有操作权力给用户u1,u2 grant all privileges on table s,p,j to u1,u2 # 将表s的插入权限给u3 grant inster on table s to u3 # 数据库s创建表的权力给u4 grant createtab on database S to u4
- 回收权限语句(了解)
# 格式: revoke xxx from 用户 # 例如:将u1、u2在s1,s2表中的所有权限回收 revoke all privileges on table s1,s2 to u1,u2 #例如 将所有用户对表s1的查询权限回收 rovoke select on table s1 from public # public指全体用户
视图
- 视图是一张虚拟表
- 注意:在视图中,子查询不能使用 ordeer by和distinct(去重)
- 创建视图
create view 视图名 as select 查询子查询
- 删除
drop 视图表
- 例题
- 答案:BC
索引(index)
重点记:内模式是定义所有的记录类型、索引、和文件的组织方式。
例题
十、关系模式
一个关系模式应当为一个五元组(含关系名):R(U,D,dom,F)
含义解释
- R:关系名
- U:一组属性
- F:U的一组函数依赖
- D和dom(不做了解)
常常把关系模式看作:R(U,F)
关系数据库的规范化
扩展知识:
函数依赖
- x函数决定y或y函数依赖于x
- 记作:x—>y
- 平凡函数依赖和非平凡函数依赖
- 完全函数依赖
- 例如:(学号,课程号)—>成绩
- 解释:需要学号和课程号两个主属性才能推出成绩
- 部分函数依赖
- 例如:(学号,课程号)—>成绩 ,学号->姓名
- 解释:在候选码中,其中一个真子集就推出了姓名
- 传递依赖
- 例如:x->y,y-z 所以可以得到:x->z
- 伪传递依赖(x,y)->z, zx->b,b->c 可以得出:(x,y)->c
码和推理规则
- 码:k为R(u,f)中属性的组合
- 候选码:k的任意子集不可能推出u
- 全码:主属性(候选码的一个属性)+非主属性
- 关系R中的所有属性组合在一起
- 推理规则:
- 传递率:a->y,y->z 则a->y
- 合并原则:a->b,a->x,则 a->bx
- 分解规则:a->b,c包含b 则a->c
属性闭包计算
目的:找出可以完全推到出U的元素
技巧:整个右侧,并找到右侧 没有出现的元素
可以找到两个候选码(a1a3)和(a1a2)
注意:当有多个候选码的时候,可以任意选一个作为主键
十一、关系模式的范式
扩展
第一范式(1NF)
要求:第一范式不可再分
问题:不能排除数据冗余和更新(包括删除、修改、插入)异常问题
第二范式(1NF)
要求:满足第一范式,且每个非属性都完全函数依赖候选码
存在问题:可能存在传递函数依赖
分解过程:
第三范式(1NF)
解决第二范式存在的非主属性函数依赖我问题
存在问题:可能存在主属性对码的部分依赖和传递依赖
BC范式(BCNF)
消除主属性对候选码的部分函数依赖和传递依赖
第四范式(1NF)(了解)
总结
- 判断部分函数依赖技巧:
- 先找到候选码
- 判断传递依赖函数技巧
例题
十二、无损连接
- 含义:对关系模式分解时,原关系模式下一任合法的关系实例可通过自然连接恢复
- 例如:
- 保持函数依赖的分解
例题
答案:D
十三、E-R图
别名:概念模型
1. 实体
- 形状:矩形
2. 联系
- 形状:菱形
- 分类:
- 一对一:1:1
- 一对多: 1:n
- 多对多 : n:m
3. 属性
- 形状:椭圆
- 分类:
- 原子属性和复合属性(可再分)
- 单值属性和多值属性
- 多值案例:一个职员多个亲戚
- null属性
- 派生属性
- 可以从其他属性得来
- 例如:A可以通过计算得到B
4. 例题
5. 弱实体
十四、数据库分析与设计(重要)
- 数据库设计的策略:自顶向下、自底向上
- 设计步骤:
需求分析
主要收集用户的需求,确定系统边界
产生的成果物:数据流程、数据字典、数据字典、系统需求说明书
概念结构设计
通过需求分析成果物,生成对应的E-R图
E-R图之间的冲突
- 命名冲突:
- 相同含义的属性在不同的E-R图中名称不同(异名同义)
- 例如:学生编号和学号
- 结构冲突
- 同一实体在不同的E-R图中有 不同的属性
例题:
逻辑结构设计
E-R图到关系模式的转换
- 一对一关系转换
- 方法一:创建一新的关系模式,存放两张表的主键
- 方法二(常用):任意选一张表把另一张表的主键加入,作为该表的外键
- 一对多关系转换:
- 方法一:创建一新的关系模式,存放两张表的主键
- 方法二(常用):选关系为多的表把另一张表的主键加入,作为该表的外键
- 多对多关系转换:
- 创建一新的关系模式,存放两张表的主键
- 例题
物理结构设计
数据库实施阶段
数据库运行、维护阶段
例题
十五、事务管理
背4个特性:原子性、一致性、隔离性、持久性
例题:
十六、数据库的备份和恢复
- 备份方法
- 恢复
- 例题
十七、并发控制技术
- 分类:
- 排它锁,简称:X锁或写锁
- 共享锁,简称:S锁或读锁
- 排它锁:事务如果加入它,其他事务都不能再给给事务加锁
- 共享锁:只能读事务,不能修改事务,其他只能再给它加共享锁
- 例题:
十八、分布式数据库
背
十九:杂题