关系数据库
关系的基本概念
域
具有想同数据类型的值的集合
域的基数:域中所包含的值的关系
笛卡尔积
D1D2D3={(d1,d2,d3)}
不能重复
元组
笛卡尔积中的每一个元素叫做一个元组
分量
代表元组中的每一个分量
基数
域中元素或者笛卡尔积中的所有元素的数量
笛卡尔积的表示方法
二维表
关系
笛卡尔积的子集叫做众多域上的关系
关系中的元组
关系中的每个元素
属性:n元关系有n个属性
码
- 候选码:唯一确定一个元组的属性值或者属性值组称为候选码
- 全码:极端情况,所有属性组是这个关系模式的候选码,称为全码
- 主码
- 主属性与非主属性,包含在候选码中的属性叫做主属性,不包含在任何候选码中的属性称为非主属性
- 外码,加强两个关系之间链接的一列或者多列
关系的类型和性质
类型:
- 基本表
- 查询表
- 视图表
关系的特性
- 关系中不允许出现相同的元组
- 关系中元组的顺序是无关紧要的,在一个关系中可以任意交换两行的顺序
- 列顺序可换
- 属性必须有不同名字
- 关系的每一分量必须是不可分的数据项,满足此条件的称为规范化关系,不满足的称为非规范化关系
- 属性值必须来自相同域
关系模式
形象化的表示:R(U,D,dom,F)
R: 关系名
U: 组成该关系的属性名集合
D:U中属性所来自的域
dom:属性向域的映像集合
F:属性间的数据依赖关系集合
简记为R(U)
关系数据库
有型值之分
关系的完整性
实体完整性:主码不能取空值
参照完整性:外码必须等于空值或者一个存在于某个元组的主码值
用户定义的完整性:满足具体语义要求
关系代数
四类运算符
集合运算符:并(U)差(-)交(n)广义笛卡尔乘积(x)
专门的关系运算符:o选择,Π投影,∞连接,÷除(不仅涉及行,还涉及列)
- 关于连接运算符,等值连接,自然连接(属性相同的值把重复的去掉)
- 除操作是从行和列的角度进行运算
算数比较符
逻辑运算符
关系数据库标准语言SQL
SQL的数据类型
- 数值型:整数型INT,小数numeric,和钱数MONEY
- 字符串型:varchar和char
- 日期时间型:DATETIME
SQL基本操作
定义基本表
create table <表名>
(
<列名><数据类型>[<列级完整性约束条件>]
<列名><数据类型>[<列级完整性约束条件>]
<列名><数据类型>[<列级完整性约束条件>]//涉及相应属性列的完整性约束条件
…
[,<表级完整性约束条件>]//一个或者多个属性列的完整性约束条件
)
常用约束:
- 主码约束:primary key
- 唯一性约束:unique
- 非空值约束:not null
删除基本表
drop table<表名>
修改基本表
alter table<表名>
[add<新列名><数据类型>[完整性约束]]//新增加一列均为空值
[drop[完整性约束]]//可以删除一列或者删除约束
[modify<列名><数据类型>]//修改列名或者数据类型
建立与删除索引
建立索引
create unique index <列名> on <表名(属性)>
删除索引
drop index<索引名>
查询
select 属性名 from 表名 where 查询条件 group by 列名1 having 条件表达式 order by <列名2>
单表查询
选择若干元组(distinct短语,查询满足条件的元组)
模糊查询
涉及空值的查询
对查询结果排序
多表查询
集函数
分组查询
连接查询
嵌套查询
相关子查询
不相关子查询
带有any和all谓词的子查询
带有exists谓词的子查询
数据更新
插入数据
- 插入单个元组
- 插入子查询结果
修改数据
update<表名>
set<列名>=<表达式>【,<列名>=<表达式>】…
[where <条件>];
- 修改某一个元组的值
- 修改多个元组的值
- 带子查询的修改语句
删除数据
delete from<表名>[where<条件>];
- 删除某一个元组的值
- 删除多个元组的值
- 带子查询的删除语句
视图
建立视图
create view <视图名> 【(<列名>【,<列名>】…)】
as <子查询>
【with check option】
删除视图
drop view<视图名>;
查询视图
同表
DBMS实现数据安全性保护的过程(SQL)
权限
- 操作权限
- 用户权限
- with grant option 实现授权权限
授权权限
- grant<权限>【,<权限>】【on <对象类型><对象名>】to<用户>【,<用户>】[with grant option]
SQL收回权限
revoke 后面语法和授予权限相同没有with grant option 子句
数据库设计
需求分析
用户需求的表达
数据流图(DFD):表达和描述处理需求数据流程图
数据字典(DD):各类数据描述的集合
概念结构设计
逻辑结构设计
一个实体型转化成一个关系模式
数据库物理设计
DBMS常用存取方法
- 索引方法,B+索引树方法
- 聚簇方法
- hash方法
关系数据库设计理论
函数依赖
平凡函数依赖
- 平凡函数依赖,X依赖Y,但是Y属于Y
- 非平凡函数依赖,X依赖Y,但是Y不属于X
完全函数依赖和部分函数依赖
传递函数依赖和直接依赖
范式
第一范式(1NF)
第二范式(2NF)
第三范式(3NF)
BC范式(BCNF)
第四范式(4NF)
第五范式(5NF)