Dbms1

4 minute read

1

  1. 为什么要学习数据库系统?
    • 数据库占有很重要的地位。数据库=技术+思维。实现信息的积累,需要管理/控制数据库。大数据是基于数据库的(farecast预测机票例子)。
  2. 什么是数据库?
    • 数据库是电子化信息的集合。相互之间有关联关系的table的集合。
  3. 什么是数据库系统?
    • DB,DBMS,DBAP,DBA,计算机基本系统,这5个组成的系统。
  4. 什么是数据库管理系统?
    • 典型的DBMS有Oracle、DB2、MySQL等。
    • Annotation 2020-06-28 144721
  5. 学什么以及学到什么程度?
    • 基本概念
    • 关系模型与关系运算
    • 数据库语言。交互式SQL语言。语法及其交互式应用
    • 数据库应用程序开发。嵌入式的语法与训练。
    • 数据建模与数据库设计
    • 数据库设计理论
    • 数据库存储与索引技术
    • 数据库基本操作的实现方法
    • 数据库查询优化与查询实现
    • 数据库的事务管理
  • 区分: 数据库、数据库系统、数据库清理系统
    • 数据库系统是包括上述几个东西的概念。
  • “表”相关要素
    • 按行案列形式组织的信息即是table。要知道表里有什么,首先抽象。
    • 抽象:理解-区分-命名-表达
    • 表名、表标题、表内容、行、列、列名、列值、模式(=表名+表标题)、表(=模式+表内容)
    • Annotation 2020-06-28 141721
  • 数据库系统的构成
    • DB、DBMS、DBAP(数据库应用)、DBA(管理员),计算机基本系统
  • 数据库管理系统的功能:用户角度、系统角度
    • 用户角度
      • 数据库定义:dbms提供一套DDL(数据定义语言)给用户。
      • 数据库操纵:表的格式是数据库定义来做。而表的增删改查是数据库操纵来完成。DBMS提供DML(数据操纵语言)给用户。
      • 数据库控制:DCL(数据控制语言)。哪些用户可使用,哪些不可以。
      • 数据库维护
    • 数据库语言:DDL, DML, DCL。3个总称为SQL语言
    • 系统角度
      • 语言编译器
      • 查询优化与查询实现
      • 数据存取与索引
      • 通信控制
      • 事务管理
      • 故障恢复
      • 完全性/完整性控制
      • 。。。
  • Annotation 2020-06-28 145655

2

  1. 数据库系统的标准结构
    • DBMS管理数据的3个层次:
      • external level=user level = 局部模式,
      • conceptual level = logical = 全局模式,
      • internal level = physical = 存储模式
    • 模式schema:数据的结构性的描述
    • 数据data/视图view:表现形式下表现出来的数据
  2. 数据模型
    • 规定模式统一描述方式的模型,包括:数据结构、操作和约束
    • 关系模型:表
    • 层次模型:树 Annotation 2020-06-28 153723
    • 网状模型:图 Annotation 2020-06-28 153809
  3. 数据库系统的演变与发展
    • 由文件系统到数据库。数据存取以记录为单位。
  • 三级模式两层映像,物理独立性和逻辑独立性
    • 三级模式:模式是指概念模式
      • 外模式:用户能看到的局部的描述。局部模式
      • 概念模式:内在本质联系,全局性的。全局模式
      • 内模式:存储在介质上的数据的结构描述。物理模式,存储模式。
    • 两层映像
      • E-C Mapping:外模式映射为概念模式
      • C-I Mapping:概念模式映射为内模式
    • 数据独立:不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序
    • 逻辑数据独立性:外模式->概念模式
    • 物理数据独立性:概念模式->内模式
  • 数据 -> 模式 -> 数据模型
    • 模式是对数据本身结构形式的抽象
    • 数据模型是对模式本身结构的抽象
    • 关系模型的例子 Annotation 2020-06-28 153259
    • 一个数据库是由一系列模式及其数据构成的
  • 网状/层次模型 -> 关系模型 -> OO数据模型
    • 第一代数据库系统:基于网状模型或层次模型的数据库系统
    • 第二代:基于关系模型的数据库系统
    • 数据库系统与文件系统差别:数据组织依赖于具体应用程序、数据存取记录为单位进行操作、不同文件/记录之间由联系、。。。
    • 关系数据库:消除指针,逐一记录操作改为记录集合,检索不依赖于路径信息,即非过程化操作

3 关系模型之基本概念

  1. 关系模型概述
    • 关系模型是处理table的
    • 3个组成部分:table/relation,关系运算(5+3),完整性约束
  2. 关系
    • 一个关系就是一个table。笛卡尔积中具有某一方面意义的那些元组叫关系
    • 属性不可再分
    • 关系是以内容(名字或值)来区分的
    • 关系的任意两行不能可完全相同,但关系的任意两列的值是可以完全相同的
    • 候选码/候选键:可由其值能惟一标识该关系中任何元组的一个或多个属性组成
  3. 关系模型中的完整性约束
    • 实体完整性:关系的主码中的属性值 不能为空值
    • 参照完整性:如果R1的外码Fk与R2的主码Pk相对应,则R1中的每一个元组的Fk值或者等于R2中某个元组的Pk值,或者为空值 -意义:若R1的某个元组t1参照R2的某个元组t2,则t2必须存在
    • 用户自定义完整性:用户针对具体的应用环境定义的完整性约束条件
  • 关系相关概念:域,笛卡尔积,关系,关系模式,关键字/键/码,外码/外键,主码/主键,主属性/非主属性
    • 域:domain,列的取值范围。域的元素为基数cardinality
    • 笛卡尔积:cartesian product,元组及所有可能组合成的元组,笛卡尔积的每个元素称作一个n元组
    • 关系:一组域的笛卡尔积的子集
    • R是关系的名字,$A_i$是属性,$D_i$是属性所对应的域,$n$是关系的度
    • 主码:当有多个候选码时,可选一个作为主码. 主键不允许空值
    • 主属性:包含在任何一个候选码中的属性被称作主属性
    • 非主属性
    • 外码/外键:其它关系的候选键,可以是R中的主属性或非主属性
  • 3个完整性:实体完整性,参照完整性,用户自定义完整性

4 关系模型之关系代数

关系代数运算是一种抽象的语言,是学习SQL等数据库语言的基础。集合操作与纯关系操作

  1. 基本操作
    • 需满足并相容性
    • 并:或者元组t属于R或者元组t属于S
    • 差:由出现在关系R中但不出现在关系S中的元组构成
    • 积:广义笛卡尔积
    • 选择:关系R同时给定选择的条件con,选择运算结果也是一个关系。
    • 投影:$\Pi$,从关系R中选出属性包含在A中的列构成
    • 投影 从列组成新的关系,而选择从行组成
  2. 扩展操作
    • 交:R和S并相容,则R与S的叫运算结果,
    • $\theta$-链接
      • 等值连接
    • 自然连接:R与S的笛卡尔积中选取相同属性组B上值相等的元组所构成。是一种特殊的等值连接。R和S必须有相同的属性组B。R和S含有一个或多个共有的属性
      • Annotation 2020-06-29 003258
    • $\theta$-链接的属性个数>自然连接
  3. 组合与应用训练
  4. 复杂扩展操作
    • 除:R$\div$S,R中除掉S中的属性
    • 外连接:左/右/全外连接
  • 基本操作:并、差、积、选择、投影
  • 扩展操作:交、$\theta$-链接、自然连接
  • 复杂扩展操作:除、外连接

5 关系演算

以数理逻辑中的谓词演算为基础。按照谓词变量不同,分为 元组/域演算。

  1. 关系元组演算
    • {t P(t)}。公式P(t),3种形式的公式
    • $t\in R$
    • $s[A]\theta c$
    • $s[A]\theta u[B]$
    • 全都学过:已知,Student(S#, Sname, Sage, Ssex, Sclass) Course(C#, Cname, Chours, Credit, Tnamee) SC(S#, C#, Score) \(\Pi_{Sname}(\Pi_{Sname, C\#}(Student\Join SC\Join Course)\div \Pi_C\#(\sigma_{Tname='李明'}(Course)))\)
    • Annotation 2020-06-30 011759
    • 至少有一没学过: Annotation 2020-06-30 012340
    • $R U S = {t t\in R V t\in S}$
    • 差:${t t\in R\wedge \neg t\in S}$
    • 积:${xy x\in R \wedge y\in S}$
    • 优先级:$\wedge$ , $\vee$
  2. 关系域演算

  3. 安全性

1. 三种关系运算

  • 递归定义

  • 与、或、非、存在量词、全称量词

  • QBE语言表达查询

6 概览SQL语言

Sequel->SQL, X/Open,标准主要用于衡量产品是否符合共同的约定。SQL语言是集DDL, DML, DCL与一体的数据库语言。

  1. DDL:引导词为create,alter,drop
  2. DML:引导词insert,delete,update,select
  • DDL:CREATE DATABASE, CREATE TABLE
  • DML: INSERT, DELETE, UPDATE, SELECT
  • SELECT语句训练:正确表达查询要求

7 SQL语言之复杂查询与视图

Annotation 2020-07-02 141901

  1. 子查询
  2. 结果计算与聚集函数
  3. 分组查询与分组过滤
  4. 利用SQL关系代数操作
  5. 视图与应用
    • Annotation 2020-07-02 143602
  • SQL-SELECT
    • IN NOT IN , $\theta$ some, $theta$ all, Exists NOT Exists
    • 聚集函数, GROUP BY, HAVING

8 数据库完整性与安全性

  1. 数据库完整性
  2. 列约束/表约束 - 静态约束
  3. 触发器 - 动态约束
  4. 数据库安全性
  • 完整性规则,静态约束/动态约束
  • 安全性访问规则,权利,授权
  • 在数据库的安全性控制中,授权的数据对象的范围越小,授权子系统就越灵活
  • 关系模型中有三类基本的完整性约束,定义外部关键字实现的是参照完整性

9 嵌入式SQL语言(基本技巧)

  1. 变量声明
    • 事务:一/多条SQL语句的一次执行是一个事务。begin/end transaction两行语句不需要,因为开始时有exec sql select等,结束时通过commit或rollback
  2. 数据库连接
  3. 数据集与游标
  4. 可滚动游标
  5. 数据库的增删改
  6. 状态捕获
    • Whenever的作用范围:其后的所有Exec SQL语句直到程序中出现另一条相同条件的Whenever语句为止
    • DBMS记录状态信息有三种方法: (1)sqlcode;(2)sqlca.sqlcode;(3)sqlstate
  7. 错误处理机制
  • 数据库语言->高级语言 过程/思维
  • 高级语言中处理数据库
    • 游标
  • 错误捕获机制
    • 错误陷阱
    • SQLCA
  • 事务
    • 保证数据正确性

10 嵌入式SQL(动态SQL)

  1. 动态SQL
  2. 动态构造
  3. 动态SQL执行方式
  4. 数据字典
  5. SQLDA
    • SQLCA是SQL通讯区,记录着SQL语句被DBMS执行后返回的状态信息;SQLDA是SQL描述区,记录着数据库/表等对象的定义信息。
  6. ODBC
  7. JDBC
    • Java.sql 核心API –J2SE(Java2标准版)的一部分。使用java.sql.DriverManager类、java.sql.Driver和java.sql.Connection接口连接到数据库
    • 建立数据库 - 创建语句对象 - 用对象执行SQL - 返回结果对象 - 获取记录 - 提取属性值给高级语言变量 - 释放语句对象 - 断开数据库
    • 过程
      • 概念性:打开链接 - 创建 statement(语句) 对象 - 设置查询语句 - 使用 statement(语句) 对象执行查询 - 查询给数据库服务器 - 返回结果给应用程序 - 处理错误的例外机制
      • 具体过程
      1. 传递一个Driver给DriverManager,加载数据库驱动
      2. 通过URL得到一个Connection对象, 建立数据库连接
      3. 接着创建一个Statement对象,用来查询或者修改数据库
      4. 查询返回一个ResultSet
    • API
      • java.sql.Statement
        • 对特定的数据库执行SQL语句
      • java.sql.PreparedStatement
        • 用于执行预编译的SQL语句
      • java.sql.CallableStatement
        • 用于执行对数据库内嵌过程的调用
      • java.sql.ResultSet
        • 从当前执行的SQL语句中返回结果数据
  • 动态构造技巧
  • 数据字典使用技巧
  • ODBC/JDBC工作原理

11 数据建模:思想与方法(数据库设计之抽象/表达方法)

  1. 数据建模
  2. 数据库设计
  3. E-R模型
    1. chen方法
    2. crow’s foot 方法
  4. 数据库设计中的抽象
  • crow’s foot 方法

12

13 数据库设计过程

  1. 设计过程
    • 需求分析 (source) -> 概念设计 (ER图) -> 逻辑设计 (关系模式) -> 物理设计(具体的DBMS create table等)
  2. 设计方法
  3. ER图/IDEF1X->关系模式

14 函数依赖及其公理/定理

  1. 函数依赖
  2. 完全函数依赖
  3. 传递函数依赖
  4. 公理/定理
  5. 最小覆盖

15 关系模式设计之规范形式

  1. 第1NF
  2. 第2NF
  3. 第3NF
  4. Boyce-Codd NF

  5. 多值依赖
  6. 公理/定理

  7. 第4NF

Updated: