数据库系统概论(王珊,萨师煊版)范式之前要点

  • 第一章要点——数据库系统
  • 第二章要点——关系数据库
  • 第三章要点——SQL:对模式和外模式的DDL,DQL,DML
  • 第四章要点——SQL:DCL之数据库安全性
  • 第五章要点——SQL:DCL之数据库完整性
  • 第六章要点——设计开发:关系数据理论(仅范式部分)
  • 思维导图——暂无,回头补

声明一下:本文章所有的图都是实在是不想写了,要么MOOC截的,要么百度随便找的图,找我就删~

第一章要点——数据库系统

分辨一个概念:数据库系统(DBS),常简称数据库(但是与DB不同),由DB,DBMS(及其应用开发工具),DBA和应用程序组成的存储、管理、处理和维护数据data的系统。

1.数据库系统核心与基础——数据模型
- 图画的比较丑emmm。

抽象
机器实现
现实世界
信息世界
机器世界
信息世界机器世界机器世界

概念模型
用户设计
逻辑模型
数学建模
物理模型
底层抽象

举“栗”理解——表示方法,例:

  • 概念模型—E-R图(E-R模型)…;
  • 逻辑模型—层次模型、网状··、关系··、面向对象数据··、对象关系数据··、半结构化数据··,… ;
  • 物理模型—系统、磁盘内部存取方式… ;

2.关系模型的数据结构与术语(其实属于1.,单独拎出来讲一下)
关系模型的数据结构,都懂哈,一张规范化的二维表。

关系术语 一般表格的术语 描述
关系名 表名
关系模式 表头
关系 (一张)二维表
元组 记录或行
属性
属性名 列名
分量 一条记录的一个列值 元组的一个属性值
key,某个属性组,可唯一确定元组
相同数据类型的值的集合
关系模式 关系名(属性1,属性2,…,属性n) 对关系的描述

优点:概念单一,数学概念严格,对用户透明。缺点:查询效率比格式化差。

3.数据库系统的结构——三级模式结构两级映像功能

外模式/模式映像
外模式/模式映像
外模式/模式映像
内模式/模式映像
application 1
external schema 1
application 2
application 3
external schema 2
application n
external schema n
schema
internal schema
Database

理解:

  • 模式—逻辑级视图(基本表);
  • 外模式—用户级视图(视图);
  • 内模式—数据库内部组织方式(理解成存储策略或者存储文件) ;
  • 映像—对应关系 ;
  • SQL下(对应第三章内容)

第二章要点——关系数据库

关系有三种类型:基本表,查询表,视图表(虚表)。
关系操作有关系代数和关系演算。
关系数据语言:关系代数语言(ISBL…);关系演算语言(元组ALPHA…,域QBE…);两重特点都有的SQL…
【这一部分内容在第6章还有介绍】

1.关系的完整性
实体 完整性
参照 完整性
用户定义 的 完整性
(我之所以打上空格是为方便理解,理解为完整性针对于实体,针对于参照关系,针对于用户做的定义的三种情况)。

一句话概括:

  • 实体完整性
    针对主码,唯一性标识(默认unique),非空(默认not null)。
  • 参照完整性
    针对外码,可以为null表示未分配,非空值时必须是原表(即被参照表S)主码KS有的数据,不可以创造一个对应主码KS中没有的值。
  • 用户定义的完整性
    用户自己加的条件不可违约,比如not null ,unique,值域。

2.关系代数
要不直接看离散吧…(上考场前看一眼效果更佳)

第三章要点——SQL:对模式和外模式的DDL,DQL,DML

1.SQL介绍

  • 特点:综合统一,高度非过程化(透明),面向集合,独立又嵌入,多种使用方式,简洁易学。
  • 功能及其动词:
功能 动词
数据查询(DQL) SELECT(选择)
数据定义(DDL) CREATE(创建),DROP(删除),ALTER(更改)----->针对属性
数据操纵(DML) INSERT(插入),DELETE(删除),UPDATE(更新)------>针对元组
数据控制(DCL) GRANT(授权),REVOKE(收回)
  • 概念:支持SQL的数据库管理系统同样支持关系数据库三级模式结构,如图3。

以下2,3,4在模式,索引在内模式,视图在外模式:

2.数据定义DDL

  • 模式
    在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。
    即CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]

    • 定义: CREATE SCHEMA 模式名 AUTHORIZATION 用户名
    • 删除: DROP SCHEMA 模式名 CASCADE/RESTRICT(级联/限制)
  • 基本表

    • 定义: CREATE TABLE 表名 (
      列名 数据类型 列级完整性约束条件, …(多个)…,表级完整性约束条件);
    • 删除: DROP TABLE 表名 CASCADE/RESTRICT(级联/限制)
    • 修改:ALTER TABLE 表名
      [ADD [COLUMN] 新列名 数据类型 完整性约束]
      [ADD 表级完整性约束]
      [DROP [COLUMN] 列名 CASCADE/RESTRICT]
      [DROP CONSTRAINT 完整性约束 CASCADE/RESTRICT]
      [ALTER COLUMN 列名 数据类型]
    • 数据类型:自己找一下哈,网上的图太糊啦,等有空再改改。
  • 索引(其实属于内模式的范畴)
    相当于建了一个指针,查询更快。

    • 定义: CREATE (UNIQUE/CLUSTER)INDEX 索引名
    • 删除: DROP INDEX 索引名
    • 修改:ALTER INDEX 旧索引名 RENAME TO 新索引名
  • 数据字典
    一组系统表,记录了数据库中所有的定义信息,包括关系模式定义,视图定义,索引定义,完整性约束定义,各类用户对数据库的操作权限,统计信息等。执行数据定义就是在更新数据字典,是查询优化和查询处理的重要依据

3.数据查询DQL
SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]…
FROM <表名或视图名>[,<表名或视图名> ]…| (SELECT语句)
[AS]<别名>
[ WHERE <条件表达式> ]
[ GROUPBY <列名1> [ HAVING <条件表达式> ]]
[ ORDER BY <列名2> [ ASC|DESC] ];

这部分内容太多啦,有下面几种情况,看看例子就好。
单表,连接,嵌套,集合,基于派生表
格式总结


目标列表达式格式
(1)*
(2) <表名>.*
(3) COUNT([DISTINCT|ALL]* )
(4) [<表名>.]<属性列名表达式>[,<表名>.]<属性列名表达式>…
其中<属性列名表达式>可以是由属性列、作用于属性列的
聚集函数和常量的任意算术运算(+,-,*,1)组成的运算公式

4.数据更新DML

INSERT
INTO <表名> [(<属性列1>[,<属性列2 >…)]
VALUES (<常量1> [,<常量2>]… );


DELETE FROM
<表名>
[WHERE <条件>];


UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]…
[WHERE <条件>];
5.空值的处理
判断 IS NULL 或者 IS NOT NULL
约束:完整性约束条件。主码和not null的属性不能为null。
运算:真值表
6.视图:对外模式DDL,DQL,DML.
DDL:
CREATE VIEW
<视图名> [(<列名> [,<列名>…)]
AS <子查询>
[WITH CHECK OPTION];

DROP VIEW <视图名>[CASCADE];

DQL:视图消解。查询select发现from某视图后,找到视图的定义(又包含select)转化为一个新的select对基本表的查询,然后去查基本表。
DML:有些视图不能更新,通常只要认为仅行列子集视图可更新,不建议通过视图更新。

第四章要点——SQL:DCL之数据库安全性

(先只整理一部分)

1.自主存取控制——授权的授予与收回
用户可以自主地决定将数据的存取权限授予何人,决定是否也将授权的权限授予给别人,称这样的存取控制为自主存取控制。

  • 权限:数据库对象与操作类型

  • GRANT(不可循环授权)

    • 格式
      GRANT 权限 …
      ON 对象类型 对象名 …
      TO 用户/角色 …
  • REVOKE

    • 格式
      REVOKE 权限 …
      ON 对象类型 对象名 …
      FROM 用户/角色 …CASCADE/RESTRICT
  • 用户user权限:DBA>RESOURCE>CONNECT
    CREATE USER usename WITH [DBA/RESOURCE/CONNECT] (非sql标准)

  • 角色role:定义某一组权限为一个role以便授予权限
    2.强制存取控制
    主体:实际用户,代表用户的各进程。敏感度标记:许可证级别。
    客体:文件,基本表,索引,视图等。敏感度标记:密级(TS>=S>=C>=P)。

第五章要点——SQL:DCL之数据库完整性

1.实体完整性
实体完整性针对增改主码为Null或不唯一。

  • 定义
    在create table 时,PRIMARY KEY ( K ),

  • 检查时机(检查方法):增,改后
    实体完整性检查方法,全表扫描,DBMS自动建立unique索引

  • 违约处理:全拒绝

2.参数完整性
参照完整性针对增删改后外码没有原表(被参照表)的依靠(在原表中不存在该码值)
(方便记忆,原表(为主码的那个)就是被参照表,现表(为外码的)为参照表,别搞混)

  • 定义
    在create table 时,FOREIGN KEY ( F ) REFERENCES 被参照表S(KS),

  • 检查时机
    参照完整性的检查就是检查(参照表插入元组,修改外码;被参照表删除元组,修改主码)四种情况。

  • 违约处理
    参照完整性违约处理方式默认全拒绝
    或需在create table 时标出——
    被参照表中修删时:参照表on delete(update) cascade(级联删除/更新);
    参照表修增时:参照表on delete no action (set null);on update cascade(拒绝,设空,级联更新)
    注意,↑设空值的方法可能符合参照完整性但违反实体完整性。

3.用户定义的完整性

  • 用户完整性定义:
    在create table 时,针对某具体应用的语义要求,
    在属性(列)上,列值not Null,unique, check() 的要求(列级约束)
    在元组(行)上(不同属性间相互有关联有约束),使用check() 定义约束条件(表级约束)对值域约束。
    check举例(是否满足某一表达式):CHECK (SSEX IN (‘男’,‘女’))表示性别只允许为男或女
  • 检查时机:插、修 属性值
  • 约束方法:拒绝


4.完整性约束命名

  • 命名完整性约束条件为了删除约束条件时好删除。
  • 完整性约束命名子句
    CONSTRAINT 完整性约束条件名 完整性约束条件
  • 定义时写到create table中,修改时在alter table中改。
    用alter table 中ADD,DROP对约束条件增删改(修改是先删再增)

5.断言
断言创建后,任何对断言中所涉及的关系的操作都会触发关系数据库管理系统对断言的检查,任何使断言不为真的操作都会被拒绝执行。只有真假两种返回值。

  • 创建断言
    CREATE ASSERTION 断言名 CHECK子句

  • 删除断言
    DROP ASSERTION 断言名

6.触发器

事件-条件-动作规则(由事件驱动)。只有表的拥有者可以在表上创建触发器。触发器只能定义在基本表上,触发器名和表名必须在同一模式下。执行失败则不发生变化。
CREATE TRIGGER 触发器名
BEFORE/AFTER 触发事件 ON 表名 //在事件的前还是后/
REFERENCING NEW/OLD ROW/TABLE AS 变量 //引用的变量是新的还是老的/
FOR EACH ROW/STATEMENT //行级/语句级/
[WHEN 触发条件] 触发动作体

使用两个例题就懂了。

事件后触发,语句级触发器,未使用WHEN触发条件,直接就激活。其中值得注意的是DELTA是一个关系名,模式与Student相同,包含的元组是INSERT语句增加的元组。


事件前触发,行级触发器,触发动作体为一个PL/SQL过程块。

第六章要点——设计开发:关系数据理论(仅范式部分)

1.函数依赖
感觉一下就行。
2.第一范式1NF
1NF要求不可表中有表,属性不可再分。
3.第二范式2NF
2NF要求非主属性对码是完全函数依赖。
(我们可以肤浅的认为,一个关系模式就是一个表(一个基本表表示的关系比如SC(Sno,Cno)就是一个关系模式)),实例就是表某一时刻的状态。
4.第三范式3NF
3NF要求传递依赖也拆分(投影分解法)
(不讨论平凡的函数依赖也就是要求Y不包含Z)
5.BCNF
BCNF(修正3)要求每一个决定因素都包含码:所有非主属性对每一个码都是完全函数依赖,所有主属性对每一个不包含它的码也是完全函数依赖,没有任何属性完全依赖于非码的任何一组属性。(BCNF在函数依赖的范畴内已实现模式的彻底分解,已高度规范化)

思维导图——暂无,回头补

先来不及整理了,回头再画。

数据库系统概论(王珊,萨师煊版)范式之前要点一览(简略)相关推荐

  1. 数据库系统概论(第五版 王珊 萨师煊 编著)

    数据库系统概论知识点总结 学习目录 基础篇 第一章 绪论 1.1 数据库系统概述 1.2 数据模型 1.3 数据库系统的结构 1.4 数据库系统的组成 1.5 小结 第二章 关系数据库 第三章 关系数 ...

  2. 王珊,萨师煊.数据库系统概论(第5版) 第三章.关系数据库标准语言SQL课后习题及总结

    一.试述SQL的特点. 综合统一.集数据定义语言(DDL).数据操纵语言(DML).数据控制语言(DCL)的功能于一体 高度非过程化.无需了解存取路径.存取路径的选择以及SQL的操作过程由系统自动完成 ...

  3. 数据库概论(王珊 萨师煊著)第5版 预习笔记

    更新中 本专栏是博主在大学浪了近两年啥也没学后重学计算机专业时写的,方便个人学习和复习,本人菜鸟一枚,如有错误或能优化的地方欢迎指正,也特别欢迎交流学习. motto共勉:心之所向,素履以往:做喜欢的 ...

  4. 【复习总汇】数据库系统概论(第五版)王珊、萨师煊编——复习总汇(最全面最详细,课本内容1:1总结归纳)

    数据库原理(第五版)王珊.萨师煊编著--复习总汇(最全面最详细,课本内容1:1总结归纳) 1-11章节 星号不考 文章目录 数据库原理(第五版)王珊.萨师煊编著--复习总汇(最全面最详细,课本内容1: ...

  5. 缅怀致敬 继往开来 | 萨师煊教授诞辰100周年纪念主题活动在京举行

    2022年12月27日是我国数据库学科奠基人--萨师煊教授诞辰100周年纪念日.为缅怀萨师煊先生对我国数据库领域做出的突出贡献,弘扬萨师煊先生敢为人先.严谨治学的高尚品格,"萨师煊教授诞辰1 ...

  6. (数据库系统概论|王珊)第三章关系数据库标准语言SQL:习题

    文章目录 名词解释 简答题 应用题 名词解释 视图:视图是一个虚表,其本质就是一条SELECT语句,而查询结果被赋予了一个名字,也即视图名字.或者说视图本身不包含任何数据,它只包含映射到基表的一个查询 ...

  7. (数据库系统概论|王珊)第九章关系查询处理和关系优化-第三节:查询优化之代数优化

    注意: 关系代数有关符号,大家可能又不熟悉了,点击跳转:(数据库系统概论|王珊)第二章关系数据库-第四节:关系代数 文章目录 一:关系代数表达式等价变换规则 (1)连接.笛卡尔积.并.交的交换律 (2 ...

  8. (数据库系统概论|王珊)第六章关系数据理论-第一节:为什么要研究关系数据理论

    文章目录 一:概念回顾:关系模式 二:数据依赖 三:一个例子:不遵循关系数据理论导致的问题 一句话,研究关系数据库理论就是为了设计出合适的关系模式,也即合适.高效的表 一:概念回顾:关系模式 相关文章 ...

  9. (数据库系统概论|王珊)第四章数据库安全性-第一节:数据库安全性概述

    文章目录 一:数据库的不安全因素 二:安全标准简介 (1)信息安全标准的发展简史 (2)TCSEC/TDI A:基本内容 B:安全级别划分 在(数据库系统概论|王珊)第一章绪论-第一节:数据库系统概论 ...

最新文章

  1. ***PHP中error_reporting()用法详解(含codeigniter框架中屏蔽错误提示的解决方案)
  2. 资源共享冲突问题概述
  3. 工程优化作业——成功失败法和黄金分割法
  4. 万分之二用百分之怎么表示_万分之几用百分符号怎么表示 万分之五怎么写?0.5%...
  5. javaI/O流小结
  6. eclips调试linux内核,使用Eclipse调试Qemu及Linux Kernel
  7. 【Python实例第8讲】模型复杂度影响
  8. jQuery、Ajax,DataTable数据如何转换成Json格式
  9. django 标签的使用
  10. 【图像处理】基于matlab DWT图像处理【含Matlab源码 198期】
  11. springcloud feign负载均衡_SpringCloud学习笔记(2)——Ribbon
  12. ERP+WMS信息一体化案例:汽车钢板弹簧企业【神风弹簧】
  13. 网络中的三张表——ARP表、MAC表、路由表
  14. Fastdfs读取文件内容
  15. UVA 11137 - Ingenuous Cubrency
  16. matlab画概率密度图
  17. C语言程序设计勾股数,打印出100内的所有的勾股数(用C语言实现)
  18. 多余元素删除(多种代码)
  19. WLC开机卡在launching....(变砖)
  20. 电脑上怎么打开小米手机的便签?

热门文章

  1. G1D33-BTG复现重跑实验
  2. 干货-做奶白的鲫鱼汤
  3. 微信小程序云数据库中实现分页
  4. sqlplus常用命令
  5. 搜狗多账户cookies最新接口可用推送工具免费使用【2020】
  6. 多重背包问题——庆功会
  7. 纯前端利用 js-xlsx 之合并单元格(3)
  8. NOIP2008 ISBN号码(一桶水)【A005】
  9. 郭天祥写的《我的大学》
  10. Trailing return types尾部返回类型