数据库系统概论

绪论

数据,数据库,数据库管理系统,数据库系统

ER图 实体,属性,关系

外模式(用户模式),模式(逻辑模式),内模式(存储模式)

  • 关系模型
    • 关系
    • 元组:表中一行
    • 属性:表中一列
    • 分量

关系型数据库

运算符号

(4条消息) 数据库关系运算_公众号Java3y的博客-CSDN博客_数据库运算

SQL

语法

MySQL 入门教程-慕课网 (imooc.com)

DDL DQL DML DCL

数据类型

image-20221024134921686

模式定义&删除

CREAT SCHEMA <> AUTHORIZATION

数据库的安全性

  • 概述:
    • 不安全因素
      1. ⾮授权对数据库的恶意存取和破坏
      2. 数据库中重要的数据泄露
      3. 安全环境的脆弱性
    • 因此我们需要对数据库进行安全性控制

静态⼝令鉴别

动态⼝令鉴别

⽣物特征鉴别

智能卡鉴别

授权

Great <权限> on 表名[(列名)] to 用户 [WITH GRANT OPTIONE]

revoke 回收,用法同上

WITH GRANT OPTIONE加上之后,该用户也可以将该权限给别人

角色

create role <角色名>

授权

grant <权限> on <对象类型> 对象名 to <角色1>,<角色2>...

给人添加角色

grant <角色>to 角色或者用户名字 [with admin option]

with admin option用法同上

回收

revoke <权限> on <数据对象> from 角色名字 [cascade]

cascade表示会将该用户给别人的权限一同收回,反with admin option

试图

  • 为不同的用户定义不同的视图,把不需要的数据给隐藏起来,这样用户就不会进行误操作

审计

  • 把对数据库的所有操作都记录到审计日志中,然后就可以通过日志审查这个里面是否有一些非法行为

数据加密

  • 通过一些加密算法,把明文变成密文,这样别人就无法查看

数据库的完整性

  • 正确性
    • 符合现实世界的描述
  • 相容性
    • 同⼀对象在不同表⾥⾯是符合逻辑的
  • 维护完整性
    • 提供定义完整性约束条件的机制
    • 提供完整性检查的⽅法
    • 进⾏违约处理

三大完整性

实体完整性

  • 主码唯⼀,且非空

参照完整性

  • 外码的要么没有,要么只有⼀个(外码就是外键)

用户定义完整性

  1. 非空
  2. 列值唯⼀
  3. 满足某⼀个条件表达式 check来写

例如:

create table student(
no char(9) primary key,
sex char(2) check (sex in ('男','⼥')),
age int not null
);

断言

create assertion <断言名> <check⼦句> 其中check字句 与where⼦句的表达式类似
删除断言
drop assertion 断⾔名字;

触发器

  • 触发器也叫做 事件->条件->动作 规则.

  • 当对⼀个表增 删 改时候, 对触发器里面的条件进行检查,

  • 如果成立,就执行触发器里面的动作.否则不执行里面的动作.

  • 添加触发器

create trigger <触发器名>				/*每当触发事件发生时,该触发器被激活*/
{before |after} <触发事件> on <表名>		/*指明触发器激活时间是在执行触发事件前或后*/	
referencing new|old row as<变量> 		/*referencing指出引用的变量*/
for each{row|statement}					/*定义触发器的类型,指明动作体执行的频率*/
[where <触发条件>]<触发动作体>			/*仅当触发条件为真时才执行触发动作体*/
  • 删除触发器
drop trigger <触发器名> on <表名> 

关系数据库理论

依赖

X→Y,但Y⊈X,则称X→Y是非平凡的函数依赖

X→Y,但Y⊆X,则称X→Y是平凡的函数依赖

候选码

  • 概念:可以推出所有属性

  • 如何选出候选码?

    • 只出现在左边的一定是候选码
    • 只出现在右边的一定不是候选码
    • 左右都出现的不一定
    • 左右都不出现的一定是候选码
    • 再求确定的候选码的闭包,如果可以推出全部,那么当前确定的就是候选码
    • 否则你要吧每一个可能的值放进当前确定的候选码里面进行求闭包

三大范式

  • 1NF

    • 所有字段值都是不可分解的原子值
  • 2NF

    • 不包含非主属性对码的部分函数依赖,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中
  • 3NF

    • 不包含非主属性对码的传递函数依赖,确保数据表中的每一列数据都和主键直接相关,而不能间接相关
  • BCNF

    • 消除每一属性对候选键的传递依赖,BCNF是修正的第三范式

公理系统

image-20221028181727432

最小依赖集

image-20221028181911519

模式分解

  • 准则: 无损连接 和 保持函数依赖
  • 无损: 就是分解后再次连接,和分解之前⼀样
  • 依赖: 依赖不变

数据库的设计

  • 数据库设计的基本步骤

    • 需求分析
    • 概念结构设计 ER
    • 逻辑结构设计 ER转逻辑模型
    • 物理结构设计 逻辑转物理
    • 数据库实施 写SQL
    • 数据库运行维护 性能检测

数据库编程

  • 嵌入式SQL

    • 就是把SQL语句嵌⼊到 其他编程语⾔⾥⾯ ⽐如java
  • 嵌入式SQL的处理过程:

    1. 预编译转换为函数调⽤
    2. 主语⾔编译
    3. 变成主语⾔所编译的类型
  • SQL与主语言的通信

    • SQL给主语⾔传递状态
    • 主语⾔给SQL提供参数
    • SQL把查询结果交给主语⾔处理(游标,和主变量实现)

数据恢复技术

  • 事务的四大特性:
    • ACID
  • A:原子性 autom
    • 要么全做,要么全不做
  • C:一致性 consistent
    • 一致性与原子性密切相关,要么全做要么全不做,否则就会造成数据不一致。比如说︰银行汇钱,两边都要有操作才行
  • I∶隔离性 isolate
    • 一个事务的执行不能被其他事务所干扰
  • D︰持久性duration
    • 数据库的改变是永久的。比如要落入磁盘

故障

  1. 事物内部故障
    • 采取REDO重做和UNDO撤销技术
  2. 系统故障DBMS
    • 系统突然停转,系统要重启
  3. 介质故障
    • 硬件损坏
  4. 计算机病毒

恢复

  1. 数据转储
  2. 对失败的事务重新执行
  3. 日志文件
  4. 记录事务对数据的更新操作的文件

策略

  • 事务故障的恢复
    • 事务异常终⽌,那么就撤销之前的所有操作
  • 系统故障的恢复
    • 还没执⾏完的事务UNDO、丢失的事务REDO。
  • 介质故障的恢复
    • 重装数据库,重做已经完成的事务

image-20221028182823699

并发

排他锁 写锁 X锁

共享锁 读锁 S锁

image-20221024150917097

可串行性

image-20221024151112801

同时运行T1和T2,结果符合两个结果中任意一个就是可串行性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值