威尼斯wns.9778官网 > 计算机教程 > 【威尼斯wns.9778官网】数据库复习整理

原标题:【威尼斯wns.9778官网】数据库复习整理

浏览次数:133 时间:2019-05-11

DDL数据定义语言:

create、drop、alter、commit、rename、truncate。(P80-P85)

       RESTRICT:表示删除时有限制条件,有依赖对象(作外键、包含视图、触发器等)不允许删除;

       CASCADE:级联删除,删除时相关的依赖对象也被删除。

       建议看一下创建表、修改表、删除表、创建视图、删除视图看一下。比如主键怎么写呀(PRIMARY KEY),唯一(UNIQUE)、视图检查(WITH CHECK OPTION)等。

       多属性键:Primary key(a, b)(a, b为属性名)

 

primary key 和 unique

1.每个关系可以有一个主键,但是可以有多个unique

2.主键的值永远是not null,而unique的值可以有null(最多一个)

3.数据库管理系统会给主键默认建立索引

4.都可以作为外键被引用

 

DML数据操作语言:insert、update、delete。(P115-P119)

       1.

INSERT INTO <表名> [(<属性列1>[,<属性列2>]…)]  注:可以指定属性插入

       VALUES (<常量1>[,<常量2>]…);

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

       子查询;

 

    注:使用子查询时在insert into 表A 后一定要写明属性,如果子查询的数据类型与要插入的表中的类型不一致时,会进行强制转换

       2.

UPDATE <表名>

       SET <列名>=<表达式>[,<列名>=<表达式>]…

       [WHERE <条件>];

 

       3.

DELETE FROM <表名>

       [WHERE <条件>]; 

 

注:不写where时会删除表里所有的元组

 

 

期末考试:

  • [ ] 1. 填空(10')
  • [ ] 2. 选择(10')
  • [ ] 3. ER->关系模型(8')
  • [ ] 4. SQL 关系代数(12')
  • [ ] 5. 查询优化(6'-8')
  • [ ] 6. 并发(8')
  • [ ] 7. 故障恢复(8')
  • [ ] 8. 关系理论(6')

ER模型(续)

基本概念

  • 基本概念
    • 域(类型相同元素集合)
    • 笛卡儿积( × )
    • 元组:一组元素
    • 分量:元组中的一个值
    • 基数:元素个数
  • 关系: D1XD2X…Dn的子集叫做在域D1, D2, …, Dn上的关系
    • 表示为R(D1, D2, …, Dn)
    • 关系的目或度:n
    • 单元关系: n=1
    • 二元关系: n=2
    • 关系是一个二维表(子集)
  • 候选码:能够唯一标识一个元组的最小属性组
  • 主码:指定一个候选码作为主码
  • 主属性:候选码中的属性
  • 非码属性:不包含在任何候选码中的属性
  • 关系的性质
    • 不同的列可以出自同一个域
  • 关系模式:关系的描述
    • 形式化表示:R(U, D, dom, F),简记为R(U)或R (A1, A2, …, An)
    • 关系模式是型,关系是值

数据库整理:

属性查询

  • 指定列顺序无关
  • 用*表示所有属性
  • 列可以包含运算符
  • 用户可以指定别名

关系操作

关系操作:查询、插入、删除、修改(P43)

查询:选择、投影、连接、除、并、差、交、笛卡尔积;其中选择、投影、并、差、笛卡尔积是5种基本操作。

 

集合操作

  • 参加集合操作的各查询结果的列数必须相同,对应项的数据类型也必须相同
  • 集合操作主要有: 并union、交intersect和差except
  • 在union, intersect, except中缺省情况下:消除重复元组
    • 在后加上all,保留重复元组

笛卡尔积

给定一组域D1,D2,…,Dn(它们可以有相同的元素,即可以完全不同,也可以部分或全部相同)。D1,D2,…,Dn的笛卡尔积为

D1×D2×……×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}。

由定义可以看出,笛卡尔积也是一个集合。

其中:

  1. 元素中的每一个di叫做一个分量(Component),来自相应的域(di∈Di)

2. 每一个元素(d1,d2,d3,…,dn)叫做一个n元组(n-tuple),简称元组(Tuple)。但元组不是di的集合,元组的每个分量(di)是按序排列的。如:

(1,2,3)≠(2,3,1)≠(1,3,2);

而集合中的元素是没有排序次序的,如(1,2,3)=(2,3,1)=(1,3,2)。

 

关系的数学定义:

关系是笛卡尔积的子集,具有有限的元组

关系:D1*D2*…Dn的子集将在在D1、D2…Dn上的关系。

候选码:属性组能唯一标识一个元组,而其子集不能。

主码:多个候选码,选定一个为主码

主属性:各个候选码的属性

非主属性:不包含在任何候选码中的属性

全码:所有属性是这个关系模式的候选码

 

5种基本关系运算
  • ∩ 连接 ÷ 这三个可由其他五个表示
  • 自然连接是可结合的
  • 关系运算的结果是关系

除运算

关系R除以S的结果为T,则T包含所有在R但不在S中的二属性集及其值,且T的元组与S的元组的所有组合都在S中。(可用于验算除运算)

方法一:设R(X,Y)和S(Y)是两个关系,则R÷S = ∏X(R) -∏X(( ∏X(R) X S) - R )。

方法二:利用象集,参考http://blog.sina.com.cn/s/blog_9f4669510100z2ld.html   妙啊!

RS÷S的意义就是:在R和S的联系RS中,找出与S中所有的元组全都有关系的R元组。

 

关系代数缺陷:不能传递闭包

 

 

 

graph LR
A[数据库]-->B[CH2:概念模型_ER]
B-->C[基本]
B-->D[扩展]
A-->E[CH3:关系数据模型]
E-->F[数据模型]
E-->G[基本概念]
E-->H[集合关系运算]
E-->I[完整性约束]
A-->J[CH4:E-R到关系模型的转换]
J-->K[基本 E-R 模型的转换]
J-->L[扩展的 E-R 模型的转换]
A-->M[CH5:SQL]

 

规范化

  • 一范式(1NF):如果一个关系中的所有属性值均是原子的,则称该关系满足1NF。关系模型中的关系必须满足1NF

  • 二范式(2NF): 若R∈1NF, 且每一个非主属性完全函数依赖于码, 则称R∈2NF (即消除非主属性对码的部分依赖)

  • 三范式(3NF): 关系模式R<U, F>中若不存在这样的码X, 属性组Y以及非主属性组Z (Z Y), 使得XY 、 YZ和Y  X 成立,则称R<U, F>3NF。
    (即消除非主属性对码的传递依赖

    • 如果关系模式R<U, F>∈2NF,且每一个非主属性不传递依赖于任一候选关键字,则称R<U, F>→NF
  • BCNF(Boyce Codd Normal Form): 关系模式R<U, F> 1NF, 若XY且Y X时, X必含有码, 则R BCNF

  • 数据依赖的公理系统

  • 关系模式的分解

范式

威尼斯wns.9778官网 1

 

1.第一范式(1NF):每一个分量必须是不可分的数据项(关系中每个属性都是不可再分的简单项)。

2.第二范式(2NF):若R满足第一范式,且每一个非主属性完全函数依赖于任何一个候选码。

  推论:候选码为单属性或者全码,则属于2NF。

  特点:不存在非主属性对候选码的部分函数依赖。

  1NF→2NF:消除非主属性对候选码的部分函数依赖,把部分函数依赖投影出来单独成表。(一事一表)

3.第三范式(3NF):若R满足第二范式,且它的每一个非主属性都不传递依赖于任何候选码。

  定义:关系模式R<U,F>属于第一范式,若R中不存在这样的码X,属性组Y及非主属性Z(Y不包含于Z)使得X→Y,Y→Z成立,Y/→X,则称R属于3NF。

  定义理解:3NF的定义由1NF推过来的,不太好理解,判定的话用上上行2NF推导过来的就可以了,这个定义同时也可以证明,若R属于3NF,则R必属于2NF。

  特点:每一个非主属性对候选码没有部分函数依赖,也没有传递函数依赖。

  缺点:3NF只限制了非主属性对键的依赖关系,而没有限制主属性对键的依赖。

  2NF→3NF:消除非主属性对键的传递函数依赖,把传递依赖投影出来单独成表。(一事一表)

4.BCNF:关系模式R<U,F>中,每一个决定因素都包含R的一个码(候选键),则R属于BCNF。

  定义:关系模式R<U,F>属于第一范式,若X→Y(Y不包含于X)时X必含有码,则R属于BCNF。

  特点:排除任何属性对候选码的传递函数依赖和部分函数依赖。在函数依赖范畴内实现彻底分离,消除插入和删除异常。

  3NF→BCNF:消除原关系中主属性对键的部分函数依赖和传递函数依赖。

  推论:如果R属于BCNF,则

       a.R中所有非主属性对每一个码都是完全函数依赖;

       b.R中所有主属性对每一个不包含它的码,都是完全函数依赖;

       c.R中没有任何属性完全函数依赖于非码的任何一组属性。

  定理:如果R属于BCNF,则R属于3NF一定成立。反之不一定成立,因为3NF的不彻底性(可能存在主属性对码的部分依赖和传递依赖)。

 

第一、二范式(部分第三范式)的缺点:

1.数据冗余

2.插入异常

3.删除异常

4.更新异常

 

多关系连接操作

  • 等值连接

    • 比较运算符
    • between ... and ...
    • 自然连接
      • 在等值连接中把目标列中的重复属性列去掉
  • 自身连接

  • 外连接

    • 在一般连接中,只有满足条件的元组才可以作为结果输出,外连接则不同(左、右外连接),把舍弃的元组保留在结果关系中,而在其他属性上填空值
      • 左外连接
        • From子句的写法:Students LEFT OUTER JOIN Employee
        • From子句的写法:Students RIGHT OUTER JOIN Employee
        • From子句的写法:Students FULL OUTER JOIN Employee
  • 复合条件连接

    • and , or

日志

只能添加的包含日志记录的文件,多个事务并发执行时日志记录是交叉存的

系统崩溃后,使用日志 重做一些未提交的事务/撤销其他没有提交的事务

登记日志文件时必须遵循两条原则:登记的次序严格按并发事务执行的时间次序;必须先写日志文件,后写数据库。

集合运算

  • -
  • 广义笛卡尔积:两个分别为n和m目的关系R和S的广义笛卡尔积是一个n m列的元组的集合。若R有k1个元组,S有k2个元组,则广义笛卡尔积有k1×k2个元组

函数依赖

非平凡函数依赖

完全函数依赖

部分函数依赖

传递函数依赖

1.函数依赖:(概念省略,X、Y是属性组U的子集)X函数确定Y或Y函数依赖于X,记作X→Y。例如:系号→系名,学号→姓名。

  (1)函数依赖不是指关系模式R中的某些关系满足的约束条件,而是指R上的一切关系都要满足的约束条件。函数依赖关系的存在与时间无关,而只与数据之间的语义规定有关。 函数依赖的存在与时间无关,只与数据之间的语义定义有关。

  (2)函数依赖的基本性质:扩张性,投影性,合并性,分解性,

2.非平凡的函数依赖X→Y:X→Y,但Y不包含于X。默认我么讨论的都是非平凡的函数依赖。

3.平凡的函数依赖X→Y:X→Y,但Y包含于X。必然成立(好像是废话)。

4.若X→Y,则称X为这个函数依赖的决定属性组,也称决定因素,Y为依赖因素。

5.完全函数依赖:在R(U)中,如果X → Y,并且对于X的任何一个真子集X’,都有X’ /→ Y,则称Y对X完全函数依赖。记作X F→ Y。

  推论:单一决定因素一定是完全函数依赖。

  例:(学号,课程号)→成绩

6.部分函数依赖:在R(U)中,如果X→Y,且Y不完全函数依赖于X,则称Y对X部分函数依赖。记作X P→ Y。

  例:(学号,课程号)→课程名  (因为课程号→课程名,而课程号是(学号,课程号)的真子集)

7.传递函数依赖:在R(U)中,如果X→Y(Y不包含于X),Y /→ X,Y→Z(Z不包含于Y),则称Z对X传递函数依赖。记为X 传递(t)→ Z。

  注:条件中要有Y /→ X,是因为如果Y→ X,则Y←→ X,则X直接→ Z,属于直接函数依赖,而非间接。

  例:系号→系名,系名→系主任名。

概述

并发控制(Concurrency Control)

为保证数据库的一致性, 调度必须是冲突或观察可串行化的, 可恢复的, 并且最好是无级联回滚的。

并发操作带来的数据不一致性,主要原因是并发操作破坏了事务的隔离性。

1.丢失修改:

2.不可重复读:

3.读脏数据:

因此需要并发控制,其主要技术有:封锁,时间戳,乐观控制法,多版本并发控制等

 

锁机制

并发控制:事务是并发控制的基本单位。

       1.封锁:排他锁(Exclusive locks,简称X锁)、共享锁(share locks,简称S锁)。

       X锁(写锁):若事务T对数据对象A加上X锁,则其他事务在T释放此锁之前不能读取和修改A。

       S锁(读锁):若事务T对数据对象A加上S锁,则T可以读A但不能修改A,其他事务只能再对A加S锁,不能加X锁,直到T释放A上的S锁为止。

       2.     一级封锁协议:防止丢失修改。

              二级封锁协议:一级 防止读“脏”数据。

              三级封锁协议:二级 防止了不可重复读。

       3.两段锁协议:所有事务必须分两个阶段对数据项加锁和解锁。第一阶段获得封锁,称为扩展阶段(Growing Phase);第二阶段释放封锁,也称收缩阶段(Shrinking Phase)。(下面两个用来判断一个调度是否符合两段锁协议)(P319)

       ①    在对任何数据进行读写之前首先申请并获得对该数据的封锁。

       ②    在释放一个封锁之后,事务不再申请和获得任何其他封锁。

       推论1:若并发执行的所有事务均遵循两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。注意这是一个充分条件。

       推论2:两段锁协议与防治死锁的一次封锁法有异同之处,遵循两段锁协议的事务可能发生死锁。(P320)

       扩展:加强版两段锁协议(Strict 2PL):除了2PL内容,还有所有事务持有的锁只有当事务完成才被释放。可严格避免级联回滚。

       4.有关锁的请求由Lock Manager处理,LM包含当前持有锁的事务列表、锁的类型、锁请求队列指针。锁定请求到达时,如果有其他事务持有冲突的锁,则把请求者放入请求队列,否则创建条目并授予请求的锁。共享锁升级为排他锁可能导致死锁问题。

       5.死锁:

              a.预防:根据时间戳分配优先级,假设Ti想要得到Tj持有的锁,有两种方式:

                     1)等待死亡:如果Ti比Tj优先级高,则Ti等待Tj,否则Ti中止

                     2)伤害等待:如果Ti比Tj优先级高,Tj中止,否则Ti等待

              b.检测:允许死锁发生,需要检查和修复它们。创建一个等待图,节点是事务,如               果Ti在等待Tj释放一个锁,那么从Ti到Tj有一条有向边。定期检查等待图里                 是否有循环,如果发现了死锁,中止/回滚其中的一个事务

 

SQL数据操纵功能

数据管理技术发展

人工管理阶段

数据没有直接存取设备,存在纸带上;

应用程序管理数据;

数据不共享,不具有独立性(数据改变后应用程序也必须改变);

文件系统阶段

数据存在文件里,数据可以长期保存;

使用操作系统的IO接口访问数据;

文件系统管理数据;

有加快数据访问的措施;

初级的数据独立性;

数据共享性差,冗余度大;

每个应用需要程序员从头开始设计自己的文件格式和描述;

威尼斯wns.9778官网 2

 

数据库系统阶段

主要优势:

数据共享;

数据冗余少;

数据独立性好;

便捷的程序接口;

高效数据访问;

数据完整性和数据安全;

并发管理

 

特点:

1.数据结构化,整体数据结构化,是数据库的主要特征之一,也是和文件系统的本质区别

2.数据共享度高、冗余度低且易扩充,数据共享可以减少数据冗余,避免数据之间的不一致性和不相容性

3.数据独立性高,物理独立性指应用程序和数据库中数据的物理存储相互独立,逻辑独立性指应用程序和数据库的逻辑结构相互独立,逻辑结构修改时应用程序可以不变

4.数据由数据库管理系统统一管理和控制,有数据安全性保护,数据完整性检查

 

隔离并发访问,阻止产生脏数据的修改

 

数据库结构受底层计算机系统的影响

 

关系数据库发展

模型划分

  1. 网状、层次发展模型
  2. 关系数据库
  3. 面向对象数据模型为特征

产品划分

  1. 对关系模型的支持
  2. 运行环境
  3. RDBMS系统构成
  4. 对应用的支持

存储过程

存储过程:一组完成特定功能的SQL 语句集。系统提供/用户自定义存储过程。

作用:在服务器端快速执行SQL语句,效率高

       降低了客户机和服务器之间的通信量

       方便实施企业规则

语法:

       1.声明:

declare @局部变量 <变量类型> [,@局部变量 <变量类型>……]

  全局变量用@@开头

       2.赋值:

select @局部变量 = 变量值

set @局部变量 = 变量值

       3.注释:

--单行注释;
/*
多行注释
*/ 

 

       4.流程控制:begin end ,if else,

              分支判断

                     格式a:

CASE <运算式>

           WHEN <运算式> THEN <运算式>

            …

           WHEN <运算式> THEN <运算式>

           [ELSE <运算式>]

           END

                     格式b:

                            

CASE

        WHEN <条件表达式> THEN <运算式>

          …

         WHEN <条件表达式> THEN <运算式>

         [ELSE <运算式>]

         END

              循环: 

WHILE <条件表达式>

           BEGIN

           <命令行或程序块>

           [BREAK]

           [CONTINUE]

           [命令行或程序块]

           END

              等待: 

WAITFOR {DELAY <‘时间’> | TIME <‘时间’>| ERROREXIT | PROCESSEXIT | MIRROREXIT}

                     时间必须为DATETIME类型

                     a.DELAY:用来设定等待的时间,最多可达24 小时

                     b.TIME:用来设定等待结束的时间点

                     c.ERROREXIT:直到处理非正常中断

                     d.PROCESSEXIT:直到处理正常或非正常中断

                     e.MIRROREXI: 直到镜像设备失败

              GOTO: 跳转到以”:”结尾的标识符

              RETURN: RETURN [(整数值)],结束当前程序,返回到上一个调用它的程序或其他程                            序,括号内可以指定一个返回值,否则会根据程序执行结果返回默认值

              EXEC: 用于执行存储过程,EXEC <存储过程名>[参数1[,参数2]……]

              PRINT: 打印,CONVERT()可以把不是字符串的内容强制转换成字符串

 

触发器的作用

1.通过数据库中相关的表进行级联修改。

2.禁止或回滚违反引用完整性的更改,从而取消所尝试的数据修改事务。

3.实现比 CHECK 约束定义的限制更为复杂的限制。

4.找到数据修改前后表状态的差异,并基于此差异采取行动

 

专门的关系运算

  • 选择运算:在关系R中选择满足给定条件的元组,记作:σF(R)={ t | t∈R  F (t)=真 }
  • 投影运算:是从关系R中选出若干属性列组成新的关系,记作: πA(R)={ t[A] | tR}
  • 连接运算:是从两个关系的笛卡尔积中选取属性间满足一定条件的元组,称为连接
  • 连接 = 选择运算 迪卡尔积运算
  • 当A、B为相同的属性组时,为自然连接
  • 象集
    • 给定关系R(X, Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y和S中的Y可以有不同的名字,但必须取自同一个域

    • R与S除得到一个新关系P(X),P是R中满足下列条件的元组在X属性列上的投影

    • 元组在X分量值x的象集Yx==包含==S在Y上投影的集合

    • 参照柳婼的解释

SQL续

SQL索引

SQL

SQL嵌套查询

子查询不可以使用order by,只有最终结果可以

  • 不相关子查询求解方法由里向外(in, 比较符)
  • 相关子查询求解方法由外向里([not] exists)子查询需要用到父查询的列
    • SQL中没有全称量词,但是 All x(P) = !( ョx (!P) )

ER模型

实体(Entity):客观存在并可相互区别的事物

属性(Attribute):实体所具有的某一特性称为属性

键(Key):唯一标识实体的属性集

实体型(entity type):用实体名及其属性名集合来抽象和刻画同类实体

实体集(entity set):同一类型实体的集合

关系(relationship):不同实体集直接的联系,有一对一,一对多,多对多的类型

 

多元关系要转换成多个二元关系

 威尼斯wns.9778官网 3

 

多元关系的箭头:

 威尼斯wns.9778官网 4

 

角色:

如果多元关系中一个实体集被用到了两次,可以通过角色来区分,如下:

 威尼斯wns.9778官网 5

 

一元关系的一对一:

 威尼斯wns.9778官网 6

 

多对一:

 威尼斯wns.9778官网 7

 

多对多:

 威尼斯wns.9778官网 8

 

SQL视图

引入

SQL查询语句基本结构

  • SQL查询语句的基本结构
    • ==SELECT== [DISTINCT] <目标列> [,<目标列>]
    • ==FROM== <基本表 (视图)> [,<基本表 (视图)>]
    • [==WHERE== <条件表达式>]
    • [==Group by== <列名1> [==having== <分组表达式>] ]
    • [==Order By== <列名2>[ ==asc | desc== ]];

查询

DQL数据查询语言(P89-P115)SQL是结构化查询语言

SELECT [ALL|DISTINCT] <目标表达式> [,<目标表达式>]...

FROM <表名或视图名> [,<表名或视图名>...] | (<SELECT 语句>)[AS] <别名>

[WHERE <条件表达式>]

[GROUP BY <列名1> [HAVING <条件表达式>]]

[ORDER BY <列名2> [ASC|DESC]];

如果要结果中有新的列名,用as

 

需要删除结果中的相同元组,用distinct

 select distinct branch_name from loan

保留所有的元组用all(默认保留所有)

select all branch_name from loan

1.SELECT语句后面可接:算术表达式、字符串常量、函数(比如转换大小写)、属性别名(as后的内容)等

  1. WHERE语句后面可接:比较、范围(BETWEEN AND)、集合(IN)、匹配(NOT LIKE %_)、空值(IS NULL)、多重条件

       注:ESCAPE ‘<换码字符>’对通配符进行转义;             eg:

       Order by默认升序,asc升序,desc降序,

必须用在查询最后,可以有多个排序关键字

       两个单引号表示一个单引号

       匹配中%匹配任意字符串,_匹配任意字符

  1. 空值:不能用‘=’,判断用IS|IS NOT。空值具有不确定性。

       3-valued logic: TRUE, FALSE, UNKNOWN.

假定TRUE = 1, FALSE = 0, and UNKNOWN =        ½,AND = MIN; OR = MAX, NOT(x) = 1-x。

  1. 聚集函数:COUNT、SUM、AVG、MAX、MIN

       注:WHERE语句中不能用聚集函数作为条件表达式,SELECT、HAVING中才能用。

       集函数内可以用distinct/all,计算 不重复的/所有的 结果

       集函数在统计时如果值全为null,结果也为null,否则所有的null被忽略,只统计非null

  1. 分组Group by:按照某一列或多列分组,值相等的为一组,目的是细化集函数的作用对象,分组后集函数作用于每一组,每组有一个函数值

       注:如果使用了聚集函数,则SELECT后只能接聚集函数或者GROUP BY后面的属性(属性集)。

  1.    WHERE:作用于基本表或视图,选择满足条件的元组,对原始表筛选;

       HAVING:作用于组,选择满足条件的组,条件是组属性/集函数,对原始表经处理后的表筛选。

7. 

SELECT  S  FROM  R1,…,Rn   WHERE  C1  GROUP BY a1,…,ak  HAVING  C2

执行顺序:

       a.计算FROM-WHERE部分,得到有所有R1,…,Rn属性的表;

       b.按照属性a1,…,ak分组;

       c.计算C2中的集函数,只保留满足C2的组;

       d.计算S,返回结果

  1.    连接:有重名属性用表名加点表示,没有重名属性可以直接表示,在where里连接,实际上执行时是遍历FROM中表的所有元组,依次判断是否符合WHERE;

       自身连接:取别名操作,在FROM中显式定义两个同表的元组变量;eg:

       外连接:

FROM S LEFT|RIGHT|FULL OUTER JOIN SC ON (S.Sno=SC.Sno)

       SQL Server不支持 Natual join

       inner join等同于在where里写连接条件,R JOIN S on <condition>是θ连接

 威尼斯wns.9778官网 9

 

  1.    子查询:如果子查询的结果可以保证只有一个元组,则可以用作值

       在FEOM和WHERE中都可插入子查询。

       不相关子查询:子查询的查询条件不依赖于父查询。

       相关子查询:子查询的查询条件依赖于父查询。eg:威尼斯wns.9778官网 10

 

       注:

              子查询中最好用元组变量来命名结果元组

              子查询中不可用ORDER BY。

              有些嵌套查询可以用连接代替,有些不行。

              一些带EXISTS或NOT EXISTS谓词的子查询不能被其他形式的子查询等价替换;

              所有带IN谓词(IN谓词通常出现在where中后跟子查询)、比较运算符、ANY和ALL谓词的子查询都能用带EXISTS谓词的子查询等价替换。

              ANY(SOME):某个

              ALL:所有

    对应集函数:威尼斯wns.9778官网 11

 

              EXIST:存在。不返回数据,只产生逻辑真值。

       全称量词转换(难点):选修了全部课程->没有一门课不选。(P110)

       特称量词转换(难点):选修了A选的全部课程->没有一门A选过的课不选。(P111)

  1. 集合查询:并(UNION)、交(INTERSECT)、差(EXCEPT)。对多个SELECT结果进行操作。

 威尼斯wns.9778官网 12

关系数据库标准语言SQL

备份恢复(Recovery)

事务的基本操作:

INPUT(X)->READ(X,t)->WRITE(X,t)->OUTPUT(X)

读取X到内存缓冲区->把X拷贝给事务局部变量t->把事务局部变量t拷贝给X->把X写进磁盘

 

数据恢复

  • 正常操作时的事务回滚
  • 系统崩溃后的恢复
    • 重做
    • 反做
      • 设置检查点。崩溃后恢复直接从检查点开始做
  • 缓冲区管理
    • 活动事务修改的块先不写磁盘
    • 允许活动事务修改的块写磁盘
  • 介质故障的恢复
    • 数据转储

存储过程和触发器

Transact-SQL数据库编程

我的话

最后说两句。。匆匆整理的东西就这些,SQL实在是多。所以懒得打了,大家应该自己也能看好。谁知道考试居然出了一分的考题考使用Students表创建视图IS_Students(信息学院学生信息的视图)的时候,添加什么语句使当更新IS_Students的时候,自动添加系属性为'IS'。。。刚刚在网上查了半天也没查到。希望有大牛看到的话知道可以告诉我~

最后一章关系数据实在看得我恶心。。而且符号也不好打。。很多直接从ppt上粘的公式显示不了,大家将就着看吧。。

需求分析&概念结构设计&逻辑结构设计

数据库设计(重要程度:普通)

需求分析: 重点是调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求

数据字典(Data Dictionary)是各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要结果

(1)     方法:直观设计法(不适应信息管理发展的需要)、规范设计法。

规范设计法:基于E-R模型的数据库设计方法、基于3NF的数据库设计方法、基于视图的数据库设计方法等。

(2)     六个阶段:系统需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、物理结构设计阶段、数据库实施阶段、数据库运行与维护阶段。(说不定会考)

(3)     需求分析与表达需求方法

①    SA方法(自顶向下、逐层分解的结构化分析方法):用数据流图和数据字典描述系统。

数据字典:数据项、数据结构、数据流、数据存储、处理过程。数据字典是各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要结果

②    面对对象的分析方法:

(4)     概念结构设计:概念模型的特点(P215简要看一下)。

  1. 方法:①自顶向下;②自底向上(常用);③逐步扩张;④混合策略。

注:通常采用自顶向下地进行需求分析、自底向上地设计概念结构(先抽象数据设计局部视图,再集成局部视图得到全局概念结构),通常以中层数据流图作为设计分E-R图的依据。

  1. 设计分E-R图:1.选择局部应用;2.逐一设计分E-R图
  2. 三种数据抽象:分类(ER图实体型)、聚集(ER图属性)、概括。
  3. 合成E-R图冲突:属性冲突、命名冲突、结果冲突(P228);
  4. 实体和属性的转换准则:1.属性不能具有需要描述的性质;2.属性不能与其他实体具有联系
  5. 概念结构设计:1.抽象数据并设计局部视图;2.集成局部视图得到全局概念结构;3.验证整体概念结构

(5)     逻辑结构设计:E-R图向关系模型的转换(与5有重复)

a. 原则

1.一个实体型转换为一个关系模式;

2.一个m:n联系转换为一个关系模式(关系的属性为与联系相连的各实体的键以及联系的属性,关系的键为各实体键的组合);

3.一个1:1联系可以转换为一个独立的关系模式(关(关系的属性为各实体的键 联系的属性,每个实体的键都是关系的候选键),也可以与任意一端对应的关系模式合并(合并后关系的属性包括加入的键和联系的属性,关系的键不变);  注:目的是尽量减少连接操作

4.一个1:n联系可以转换为一个独立的关系模式((关系的属性为各实体的键 联系的属性,关系的键为n端实体的键),也可以与n端对应的关系模式合并(合并后关系的属性为在n端加入1端关系的键和联系本身的属性);

5.三个或三个以上实体间的一个多元联系转换为一个关系模式(关系的属性为各实体的键 联系的属性,关系的键为各实体键的组合);

6.同一实体集的实体间的联系,即自联系,可以按照1:1,1:n,m:n分别处理

7.具有相同键的关系可以合并,将其中一个关系模式的全部属性加入到另一个关系模式中,去掉其中的同义属性(不一定同名),适当调整次序

b. 数据模型的优化

1.确定数据依赖;

2.对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系;

3.按照数据依赖的理论对关系模式逐一分析,考查是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式;

4.按照需求分析阶段得到的各种应用对数据处理的要求,分析对于这样的应用环境这些模式是否合适,确定是否要对它们进行合并或分解;注意并不是规范化程度越高就越优,在经常涉及连接时规范度高的关系的代价会很高。

5. 按照需求分析阶段得到的各种应用对数据处理的要求,对关系模式进行必要的分解或合并,以提高数据操作的效率和存储空间的利用率。

          (1)水平分解:把(基本)关系的元组分为若干子集合,定义每个子集合为一        个子关系,以提高系统的效率。

          适用范围:80/20原则,经常被使用的数据约20%;或并发事务经常存取不相交的数据;

          (2)垂直分解:把关系模式R的属性分解为若干子集合,形成若干子关系模式

 

数据模型三要素:

  • 数据结构
    • 所研究对象类型的集合
  • 数据操作
    • 检索、更新
  • 数据约束条件
    • 完整性规则的集合

关系模型

最重要的数据模型

 

ER模型和关系模型对比:

ER模型有很多概念,实体、属性、关系等,关系模型只有一个概念:关系

ER模型不适合计算机实现,关系模型适合高效操作电脑

关系实例:

威尼斯wns.9778官网 13

 

每个属性的允许的值称为域(domain)

 

E-R模型到关系模型的转换

数据模型

数据模型:对现实世界数据特征的抽象。是数据库系统的核心和基础。数据模型三个组成要素:数据结构(最重要的方面)、数据操作、数据的完整性约束条件。

三层抽象(由浅入深)

概念模型:用于数据库设计,最流行的是E-R模型。(P16-17基本概念:实体、属性、码、实体类型、实体集、联系);

逻辑模型:用于数据库管理系统的实现;层次模型(最早出现的数据模型)、网状模型、关系模型等;

物理模型:对数据最底层的抽象,描述数据表示方式和存取方法。

 

常见数据模型:

层次模型

网状模型

关系模型

面向对象数据模型

对象关系数据模型

半结构化数据模型

 

层次模型和网状模型统称为格式化模型

基本层次联系是指两个记录以及他们之间的一对多(包括一对一)的联系

 

层次模型:

采用树形结构

数据库中定义满足条件的基本层次联系的集合:

1.有且只有一个结点没有双亲结点,这个结点称为根结点;

2.根以外的其他结点有且只有一个双亲结点。

删除双亲结点会把子结点同时删除

优点:

1.数据结构简单清晰

2.查询效率高(优于关系数据库,不低于网状数据库)

3.提供了良好的完整性支持

缺点:

1.现实中很多联系是非层次性的,不适用

2.对插入和删除限制较多,应用程序编写较为复杂

3.查询子女结点必须通过双亲结点

4.结构严密,层次命令趋于程序化

突出优点是一对多层次联系的部门描述自然直观

 

网状模型

数据库中定义满足条件的基本层次联系的集合:

1.允许一个以上的结点无双亲;

2.一个结点可以有多于一个的双亲。

优点:

1.更为直接地描述现实世界

2.存取效率高

缺点:

1.结构复杂,不利于用户掌握

2.DDL、DML复杂,要嵌入一种高级语言,用户不容易掌握,不容易使用

3.访问数据时必须适当选取路径,用户必须了解系统结构的细节,加重负担

 

关系模型

优点:

1.建立在严格的数学概念的基础上

2.概念单一,数据结构简单清晰,易于使用

3.存取路径对用户透明,有更高的数据独立性,更好的安全保密性

完整性约束

  • 实体完整性:主码中的属性不可取空值
  • 参照完整性:
    • 外码:设F是关系R的一个或一组属性,如果F与关系S的主码Ks相对应,则称F为关系R的外码(外键)
    • 参照关系R(F,..,...),被参照关系S。
    • F的取值必须为:
      • 或者取空值
      • 或者等于S中某个元组的主码值
  • 参照完整性的特点:
    • 在被参照关系中关键字的值在参照关系中不一定出现
    • 但在参照关系中出现的关键字值在被参照关系中必须要出现
    • 值得注意的是外键可能来自于同一关系,也就是被参照关系就是参照关系

模式和实例

模式(schema):型的描述,不涉及具体的值;

实例(instance):模式的一个具体的值。

 

关系模式:关系的描述,R(U,D,DOM,F)

R为关系名,U为组成该关系的属性名集合,D为U中属性来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合

 

关系模式是型,关系是值

一个关系的模式:一个关系名,若干属性名

一个数据库的模式:若干个关系的模式

 

对数据的改变很频繁,而对模式的改变很少见,所以模式是长期稳定的

 

并发的问题:

  1. 丢失修改
  2. 不可重复读
  3. 脏读

并发控制的主要方法:

  1. 基于封锁机制的并发控制
  2. 基于时标的并发控制

数据、数据库、数据库管理系统、数据库系统

数据:

描述事务的符号记录,有数据类型和数据的值,需要有语义来解释,数据操作主要有数据管理(数据库)、数据处理(程序)、数据传输(网络)

元数据(模式),几乎不变,在设定时定义

数据是数据库的实例,经常改变

数据库DB:

长期存储在计算机内、有组织、可共享的大量数据的集合。数据按照一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性、易扩展性

安全、方便、高效

数据库管理系统DBMS:

计算机的基础软件

数据库系统DBS:

由数据库、数据库管理系统、应用程序、数据库管理员组成的存储、管理、处理和维护数据的系统。

 威尼斯wns.9778官网 14

 

小结

重做

定期检查数据库

1.停止接收新的事务

2.等待当前的所有事务完成

3.刷新日志到磁盘

4.写入<CKPT>日志记录并刷新

5.继续接收事务

 

检查点记录:

<START T>事务T已经开始

<COMMIT T>事务T已经提交

<ABORT T>事务T已经中止

<T,X,v>事务T更新了元素X,新的值为v

 

重做日志规则:

如果事务T修改了X,那么<T,X,v>和<COMMIT T>必须在X被写入磁盘之前写入磁盘

因此,输出是后来完成的(相比commit)

 

重做的恢复步骤:

 威尼斯wns.9778官网 15

SQL语言的组成部分

  • 数据定义语言(DDL : Data Definition Language)
    • 负责数据结构定义与数据库对象定义的语言
    • CREATE
    • ALTER
    • DROP
    • 操作的对象包括关系表、视图、索引等。
  • 数据操纵语言(DML : Data Manipulation Language)
    • SELECT
    • INSERT
    • UPDATE
    • DELETE。
    • 它们分别用于查询、添加、修改和删除表中的行
  • 数据控制语言(DCL : Data Control Language)
    • 在SQL语言中,是一种可对数据访问权进行控制的指令,
    • 由 GRANT 和 REVOKE 两个指令组成。
  • 事务处理语言(TPL: Transaction Processing Language )
    • 它的语句能确保被DML语句影响的表的所有行及时得以更新。包括BEGIN TRANSACTION,COMMIT和ROLLBACK。

撤销

记录:

<START T>事务T开始

<COMMIT T>事务T提交

<ABORT T>事务T中止

<T,X,v>事务T更新了元素X,旧的值为v

 

撤销日志规则:

1.如果事务T修改了X,那么<T,X,v>必须在X被写入磁盘之前写入磁盘

2.如果事务T提交,那么<COMMIT T>必须在所有事务T要执行的修改执行之后再写入磁盘

因此,输出是早期完成的(相比commit)

 

撤销的恢复步骤:

 威尼斯wns.9778官网 16

 

注:undo操作是幂等的,可以多次执行,所以如果恢复时系统崩溃,只需再执行一遍恢复

 

日志文件需要读完整,效率低,可以用检查点来提高效率

 

SQL分组聚集查询

DDL数据定义语言:

create、drop、alter、commit、rename、truncate。(P80-P85)

RESTRICT:表示删除时有限制条件,有依赖对象不允许删除;

CASCADE:级联删除,删除时相关的依赖对象也被删除。

建议看一下创建表、修改表、删除表、创建视图、删除视图看一下。比如主键怎么写呀(PRIMARY KEY),唯一(UNIQUE)、视图检查(WITH CHECK OPTION)等。

 威尼斯wns.9778官网 17

 

数据库安全

数据依赖的公理系统

U为属性集总体,R为关系模式

A1(自反性,reflexivity):若YÍ XÍU,则X→Y在R上成立。

A2(增广性,augmentation):若X→Y在R上成立,且ZÍU,则XZ→YZ在R上成立。

A3(传递性,transitivity):若X→Y和Y→Z在R上成立,则X→Z在R上成立

注:XZ代指X∪Z

函数依赖的逻辑蕴涵

定义  设F是在关系模式R上成立的函数依赖的集合,X→Y是一个函数依赖。如果对于R的每个满足F的关系r也满足X→Y,那么称F逻辑蕴涵X→Y,记为F ⊨ X→Y。

定义  设F是函数依赖集,被F逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集F的闭包(closure),记为F 。即 F ={ X→Y |记为F⊨X→Y。 }

定理:推理规则(A1, A2, A3)是完备的,也就是所有F 中的函数依赖都可用此三个规则导出;能用此三规则导出的函数依赖都属于F

属性集的闭包

设F是属性集U上的函数集,X是U的子集,那么(相对于F)属性集X的闭包用X 表示,它是一个从F集使用函数依赖推理规则推出的所有满足X→A的属性A的集合:X ={ 属性A | X→A在F 中 }

定理: X→Y能用函数依赖推理规则推出的充分必要条件是YÍX 。

例  属性集U为ABCD,函数依赖集为{ A→B,B→C,D→B }。则可求出A =ABC,(AD) =ABCD,(BD) =BCD,等等。

最小函数依赖集

定义 如果关系模式R(U)上的两个函数依赖集F和G,有F =G ,则称F和G是等价的函数依赖集。

定义 设F是属性集U上的函数依赖集。如果Fmin是F的一个最小依赖集,那么Fmin应满足下列四个条件:

       ⑴ Fmin =F ;

       ⑵ 每个函数依赖的右边都是单属性;

       ⑶ Fmin中没有冗余的函数依赖(即Fmin中不存在这样的函数依赖X→Y,使得Fmin与Fmin -{ X→Y }等价);

       ⑷ 每个函数依赖的左边没有冗余的属性(即Fmin中不存在这样的函数依赖X→Y,X有真子集W使得Fmin -{ X→Y }∪{ W→Y }与Fmin等价)

 

例  设F是关系模式R(ABC)的函数依赖集,F={ A→BC,B→C,A→B,AB→C },试求Fmin。

       ① 先把F中的函数依赖写成右边是单属性形式:

       F={ A→B,A→C,B→C,A→B,AB→C }

       显然多了一个A→B,可删去。得F={ A→B,A→C,B→C,AB→C }

       ② F中A→C可从A→B和B→C推出,因此A→C是冗余的,可删去。得F={ A→B,B→C,AB→C }

       ③ F中AB→C可从A→B和B→C推出,因此AB→C也可删去。最后得F={ A→B,B→C },即所求的Fmin。

模式定义

  • SQL提供了三级模式结构的定义功能,相关的定义语句如下:
操作对象 创建 删除
模式(命名空间) CREATE SCHEMA DROP SCHEMA
关系表 CREATE TABLE DROP TABLE
视图 CREATE VIEW DROP VIEW
索引 CREATE INDEX DROP INDEX
  • 创建模式基本语句
    • CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
    • CREATE SCHEMA <模式名>AUTHORIZATION<用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]
    • DROP SCHEMA <模式名> <==CASCADE|RESTRICT==>

本文由威尼斯wns.9778官网发布于计算机教程,转载请注明出处:【威尼斯wns.9778官网】数据库复习整理

关键词:

上一篇:威尼斯wns.9778官网.19-浅析webpack源码之compile流程

下一篇:没有了