管理三阶段:1.人工管理,2.文件管理,3.数据库
三级模式两级映射:消除冗余,提升共享性,增强独立性(逻辑独立性,物理独立性)
三级模式是:内模式(物理),模式,外模式(视图)
数据模型包括
- 概念模型---现实抽象
- 逻辑模型
- 物理模型
数据模型三要素:数据结构,数据操作,数据完整性约束
数字模型有:层次模型,网状模型,关系模型,面向对象模型,对象关系模型,半结构化模型
关系的完整性:实体完整性,参照完整性,用户自定义完整性
关系->表,元组->行,属性->列,域->取值范围
基本操作关系:选择σ,投影П,并U,差-,笛卡尔积X
操作的对象和结果都是集合
关系代数
传统关系代数:
并 RUS={t|t∈R∪t∈S} 行相并
差 R-S={t|t∈R∩t∉S} 减去R中包含S的属性
交 R∩S={t|t∈R∩t∈S } 取t在R,S中的共同值
笛卡尔积RXS={tr^ts|tr∈R∩ts∈S} R中的每一组数据与S中的每一组数据组合
专门关系代数:
选择 σ条件(表)={t|t∈R∩F(t)=1} 等同于select * from表 where 条件
投影 π列(表)={t[列]|t∈R} 等同于select 列 from 表
连接(选择性笛卡尔积)
即A=B为等值连接,A>B或A<B等为非等值连接,自然连接为去重复的等值连接
除 R➗S={tr[x]|tr∈R∩πy(s)∈Yx} 取满足S相同列的所有属性的R
创建表
Create table 表名字(
列名 类型 约束,
Sno int(8) primary key
)
删除表
Drop table 表名字
修改表
Alter table 表名字
ADD 列名 类型 约束
ADD Sname char(8) unique
DROP 列名
Drop Sept
ALTER column 列名 类型
ALTER column Sno int(9)
建立索引
Create index 索引名
On 表名(列名【次序】,列名【次序】...)
删除索引
Drop index 索引名
索引可以增加查询的速度,但对于增删改频繁的表格,会因为系统操作过多降低查询效率
查询操作
Select (distinct) 列//唯一
From 表
Where 条件//不可以使用函数
Group by 列 having 条件//可以使用函数
Order by 列 asc/desc//(升序/降序)
部分函数列举:max最大值,min最小值,count计数,avg平均数,sum和
Where的部分解释
可用于比较大小,例:where A>1
可用于框定范围,例:where grade between 0 and 100
例:where Cno in(’001’,’003’)
可用于模糊查询,例:where Sname like ‘_尔盖%’//_为单个字符,%为多个
多个条件用and, 例:where grade>80 and Cno in(’001’,’003’)
多表连接 例:where A.C=B.C
嵌套查询 例:where Cno in(select ...)
Existe(存在)返回值为True或者为FALSE
插入操作
Insert into 表名(列名)//如果全部列都要添加可以不写列名
Values(值)
更新操作 删除操作
Update 表名 Delect
Set 列名=表达式 From表名
Where 条件 Where 条件
创建视图 删除视图
Create view 视图名 Drop view 视图名
AS
Select...
修改视图 查询
Update 视图 select 列
Set 列=表达式 From 视图
Where 条件 where 条件
修改视图本质上是修改原表数据,不是所有的数据都能被修改,例如函数
数据安全性
数据库的本质是防止不合法的使用造成的数据泄露,更改和破坏
2个重要等级:
C1等级:自主存取控制 (实现逻辑独立,将用户与数据分离,实例为视图)
B1等级:审计和强制存取控制 (实现对数据和访问者都标记机密等级 进行区分)
创建用户操作 用户写入的数据不能低于自身密级
Create user 用户名 用户读取的数据不能高于自身密级
创建角色操作 绝密TS>机密S>可信C>公开P
Create role 角色名
授权用户或角色
Grant 权限//select,update,delect,insert,*
On 对象//表名字 例如:student
To 用户//或角色
With grant option//该语句为授权对象可授权其他对象
收回授权
Revoke 权限
On 对象
From 用户//与授权不同,这边用户用from而授权用to
授权另一个角色权限
Grant 角色1
To 角色2
With distinct option
审计用于监视操作(但会浪费大量资源)
开启审计 关闭审计
Audit 权限 Noaudit 权限
On 表 On 表
完整性
本质是确保数据的正确性与相容性
共有3个完整性:参照完整性,实体完整性,用户自定义完整性
可定义出错时系统给与的反应
拒绝 no action
级联 cascade[on 权限 cascade] //级联插入,级联删除,级联修改
设空 set null
使用例:
Foreign key(sno)references student(sno)
On delete cascade
On update cascade
关于约束的设定格式
主键:
单个
Create table student(
Sno int(8) primary key
)
多个
Create table sc(
Cno int(8),
Sno int(8),
Primary key(Cno,Sno)
)
外键
Create table sc(
Cno int(8),
Sno int(8),
Primary key(Cno,Sno)
Foreign key(Sno)references Student(Sno)
)
非空,唯一
Create table sc(
Cno int(8) unique,
Sno int(8) not null
)
约束
Create table student(
Sno int(8) check(Sno>2021420510 and Sno<2021421999)
)
触发器
创建触发器
Create trigger 触发器名字
Before|after 事件
On 表名
For each row
触发器语句
创建多事件触发器
Create trigger 触发器名字
Before|after 事件
On 表名 For each row
Begin
触发语句
End
范式 *必考
1NF 不可再分
2NF 消除非主属性的部分函数依赖
3NF 消除非主属性的传递函数依赖
BCNF 消除主属性的部分函数依赖和传递函数依赖
4NF 消除多值依赖
数据库设计
共有六个阶段
- 需求分析
是最重要也是花费时间,精力的阶段
- 概念模型设计
将现实中的数据抽象成E-R图
- 逻辑模型设计
将E-R图转换成选用的数据库管理系统产品支持的数据模型相符合的逻辑结构
- 物理模型设计
给逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理设计
- 数据库的实施和维护(可以分为2个阶段)
- R
实体为矩形,属性为椭圆,联系为菱形
E-R图冲突
属性冲突,命名冲突,结构冲突
E-R图需要注意
1.属性不可在需要描述
2.属性不能域其他实体具有联系
ProcessOn软件可以进行E-R图设计