第一章  数据库概论


1.在数据库管理技术的发展过程中。数据库独立性最高的是“数据库系统”阶段
2.三大经典的数据结构模型是“关系。层次和网状模型”
3.单个用户使用的数据视图的描写叙述,称为“外模式”。它是用户与DBS的接口
4.DB中,数据的逻辑独立性是指“概念模式改变,外模式与应用程序不变”
5.通过指针链表来表示实体间联系的模型是“网状和层次模型”

6.DB的体系结构分成三层,各自是“逻辑模式,内模式。外模式”
7.DBMS的主要功能有“数据库定义功能。数据库的操纵功能和数据库的执行管理”。DB维护和组织存储管理及数据通信接口等
8.组成数据模型的三大要素是“数据结构,数据操作。数据完整性约束规则”
9.DBMS包含的主要程序“数据库定义语言及编译处理程序。数据操纵语言及编译程序。数据库执行控制程序,实时维护管理程序”

第二章 关系数据库

1.在关系模式中,“关系的主keyword的值不能为空”
2.关系代数的物种基本操作为“并。差。笛卡尔积。投影和选择”
3.设关系R(A,B,C)和S(B,C,D),则“能够有R连接S,R与S的笛卡尔积。可是R不能够并S。由于属性数目不同”
4.在关系代数中。对一个关系作投影操作后,新关系的元祖个数“小于或等于”原来的关系的元祖个数
5.当属性“年龄”值为1000时,该数据受到了“用户定义完整性”破坏
          实体完整性:主keyword不能取空值  用户完定义完整性:取值范围  參照完整性:不引用不存在的实体

6.关系的元数指”属性的个数“,关系的基数指”元组的个数“。能唯一标识元组的属性集。而无多余属性,该属性集称为”候选keyword“
7.关系模型的三类完整性规则包含:”实体完整性。參照完整性,用户定义完整性“
8.在关系代数的运算中。专门的关系代数运算有:”选择(σ),投影(Π)连接(|x|)除(÷)“
9.θ连接操作是由关系代数的”选择和笛卡尔积“操作组合而成的
10.关系代数是用代数对关系的运算来表达查询的,而关系演算是用”谓词形式“表达查询的,它们分为”元组关系演算和域关系演算“两种

计算题举例1:

    已知关系R,W,D如图所看到的:

 R:                                                                                                                                    
P Q T Y
2 b c d
9 a e f
2 b e f
9 a d e
7 g e f
7 g c d

W:

T Y B
c d m
c d n
d f n

D:

T Y
c d
e f

(1)R1=πY,T(R)   

   解答: 注意:没有同样的元组:
Y T
d c
f e
e d

(2)R2=σP>5^T=e(R)

 解答: 要求R中 P列的元素大于5且T列中的元素等于e:
P Q T Y
q a e f
7 g e f

(3)R3=R|x|W

 解答:连接R与W。要求列同样才干够连接,结果例如以下
P Q T Y B
2 b c d m
2 b c d n
7 g c d m
7 g c d n

(4)R4=Π[2],[1],[6](σ[3]=[5](RxD))

解答:R与D达卡尔积计算后:  筛选 出 第二列。第一列和第六列 ,而且第三列等于第五列
P   Q   TR  YR  TD YD
2 b c d c d
2 b c d e f
9 a e f c d
9 a e f e f
2 b e f c d
2 b e f e f
9 a d e c d
9 a d e c f
7 g e f c d
7 g e f e f
7 g c d c d
7 g c d e f

由题目条件:

P Q Y
2 b d
9 a f
2 b f
7 g d
7 g f

(5)R5=R/D

首先总结一下关系除法的计算方法:
如有R,S例如以下:
R:
A B C D
2 1 a c
2 2 a d
3 2 b d
3 2 b c
2 1 b d

S:

C D E
a c 5
a c 2
b d 6

上面颜色已标出,S中的CD去R中相应的CD中找,找到同样的行。此时能够看到有3行同样的。各自是 第一行。第三行,第五行,

然后能够看到。CD中的 a,c和b,d列有两个同样的AB列,2,1,而 CD中相应的b。d却仅仅有3,2,所以所除的结果是:
A B
2 1

由以上方法,能够得第五题的解是:
P Q
2 b
7 g

计算题举例2:

设教学数据库由三个关系: S(S#,SNAME。AGE。SEX)
                                                SC(S#,C#,GRADE)
                                                  C(C#,CNAME。TEACHER)
使用关系代数式表达下列查询:
(1)查找学号为s3的学生所学的课程名和任课教师名;
        解答:πcname,teacher(σsname='s3'(s|x|c))
(2)查找姓名为WANG学生不学的课程的课程号
        解答:πc#(c)-πc#(σsname=’WANG‘,(s|x|c))

(3)查找女同学选修的课程名和任课教师名

        解答:πsname,cname。teacher(σsex=’女‘,c#(c)=c#(sc)。s#(s)=s#(sc),(s|x|c)) 


第三章:关系DB的标准语言SQL

1.传统的关系模型中的术语与SQL中的术语存在例如以下相应关系,关系模式在SQL中称为”基本表“,存储模式称为”存储文件“。子模式称为”视图“
2.视图是一个虚表。它是一个从”一个或几个基本表中选定某些记录或列“中导出的表
3.Select语句中,”where“子句用于选择满足给定条件的元组。使用”Group By“子句可按指定的列的值分组,同一时候使用”HAVING“子句提取满足条件的元组
4.SQL语言的数据定义功能包含”定义基本表,定义视图和定义索引“
5.SQL语言有两种使用方式,各自是”独立的交互使用方式和嵌入到高级语言方式“

计算题举例:

已知DBS中包括了三个基本表goods(G#。gname,price。type,fact)当中商品表中。G#,gname,商品名,price:单位价格。type:型号,fact:制造商。商场基本表:
shops(s#。sname。addr。manag)当中分别为:商场号,商场名。地址。经理名。基本销售表:SALES(S#。G#。QTY)QTY为数量
1.试用SQL语句完毕下列查询
(1)查询全部电视机的生产厂商,型号。单位价格
select fact,type,price from goods where gname='电视机';
(2)查询同一时候生产电视机和电冰箱的制造商
select fact from goods where goods.gname='电冰箱' and goods.gname='电视机'
(3)查询”吉利“商场所销售的各种商品的商品号和数量
select g#,qty from sales where s# in(select s# from shops where sname='吉利');
(4)查询销售量最高的商场号和所销售的商品号
select sales.s#,g# from sales where sales.qty=(select max(qty) from sales);
2.试用SQL对基本表做创建和更新操作
(1)创建基本表Goods(类型。长度自定)
create table goods(g# in not null indentity(1,1) primary key,
gname varchar(20) not null,
price numeric(18,0),
fact varchar(20) not null);
(2)将华南厂全部的商品名称。型号和单位价格插到一个已存在的基本表A(gn,gtype,price)中
insert into A (gn,gtype,price) select gname,type,price from goods where gname='华南厂'
(3)将总销量低于1000的全部商品的价格减少10%
update goods set price=price*0.9 where g# in(select g# from (select g#,sum(qty) from sales group by g# having sum(qty)<1000))

第四章 关系数据库设计理论

1.当B属性依赖于A属性时。属性A与B的联系类型是 : ”多对一或一对一“
2.关系DB规范化是为了解决关系DB中”数据冗余,更新异常“问题而引入的
3.将一个关系模式规分解成多个关系模式时,为了保持原模式所满足的特性。要求分解具有”无损连接性和保持函数依赖性“

4.已知关系例如以下图所看到的:
R:
A D E
a1 d1 e2
a2 d6 e2
a3 d4 e3
a4 d4 e4

(1) R中的函数依赖是否成立 :
      1).A->D  (成立)
      2)AD->E( 成立)  
      3)DE->A(成立)
(2)R的候选keyword为 A,DE 
这里复习下候选keyword的求法:

L,R,LR类属性, L累属性都是候选keyword,LR类属性中,可以多个组合,假设可以决定所有,则是候选keyword
(3)R属于"BCNF"范式

"左部决定因素都是R的超keyword"

解答题举例1:

指出下列关系模式最高是第几范式?

并说明理由

(1)R(X,Y,Z),F={XY->Z}
解答:
考察F,X,Y是L类属性,(XY+)=XYZ,所以 XY是R的唯一Key,在F中仅仅有一个FD,且左部包括Key,所以是BCNF.

(2)R(X,Y,Z),F={Y->Z,XZ->Y}
解答:
L类属性: X
LR类属性:Y,Z
因为 X+=X, (XY+)=XYZ
即XY是R的一个Key
XZ是R的还有一个Key,
所以X,Y,Z都是主属性,所以∈3NF

解答题举例2:

设关系R例如以下:
课程名 教师名 教师地址
C1 马千里 D1
C2 于得水 D1
C3 余块 D2
C4 于得水 D1

请问:1)R为第几范式,为什么?
解答:
由表:1.课程名->教师名 ,2. 课程名->教师地址 ,3. 教师名->教师地址,由1,2,R的key :课程名
非主属性对单主属性不存在依赖
又由于教师名 不决定课程名,所以 课程名部分决定教师地址  所以R∈3NF
(2)是否存在删除异常?若存在,则说明在什么情况下发生?
存在,当删除教师,教师相应的课程也将被删除,存在删除异常
课程名 教师名
C1 马千里
C2 于得水
C3 余块
C4 于得水
教师名 教师地址
马千里 D1
于得水 D1
余块 D2
于得水 D1

将R分解为如上两个表就可以解决这个问题

解答题举例3

设有关系模式R(U,F1),当中,U={E,F,G,H}
F1={E->G,G->E,F->EG,H->EG,FH->E}
(1)求F的最小依赖集
解答:
        1).单一化: F1={E->G,G->E,F->E,F->G,H->E,H->G,FH->E}
        2).去掉多余属性
             考察FH->E,F+=FEG,H多余,即F->E
        3).去掉多余FD,
               F->E由E->G,F->G推得多余,
               H->E由H->G,G-E推得多余
              所以F'={E->G,G->E,F->G,H-G}

(2)求R的候选keyword
    解答:
L:H,F   所以(FH+)=EGFH
(3)将R分解成满足3NF,且具有无损连接性,保持函数依赖
ρ1={(EG),(FG),(HG)}
   推断ρ1是否具有无损连接性,使用判定表,判定出有损,
ρ2=ρ1∪{FH}
     ={(EG),(FG),(HG),(FH)}

以下总结下无损连接的判定:

步骤:
设有关系模式R(A1,A2,A3,.....An) 和 FD集, 及R的一个分解 ρ={R1,R2,...Rk}
a.构造一张k行n列的判定表
    每一列相应一个属性Ai(1<=j<=n),每一行相应一个分解的模式Ri(1<=i<=k);若Aj∈Ri,则在第i行与第j列交叉处填入符号aj,否则填入bij
b.重复利用F中的每一个FD,改动表中元素,知道不能改动为止
c.假设发现表中某一行变成了a1,a2,.....ak.则是无损分解
否则是有损分解

举例:

无损分解判定法:

设有关系模式R(A,B,C,D),R被分解成ρ={AB,BC,CD} 若R上成立的FD集F1={B->A,C->D} 那么ρ相对F1是否具有无损分解?

ρ的初始判定表:
Ri A B C D
AB(分解模式) a1(A∈AB所以是a1) a2 b13 b14
BC(分解模式) b21(A∉BC所以是b21) a2 a3 b24
CD(分解模式) b31(A∉CD所以是b32) b41 a3 a4

B,C,D列中同理
又B决定A, C决定D,所以须要将 A中的 b21改动为 a2以与B保持一致,其它同理可得 (颜色已标出)

改完后:
Ri A B C D
AB(分解模式) a1 a2 b13 b14
BC(分解模式) a1 a2 a3 a4
CD(分解模式) b31 b41 a3 a4

发现: 第二行中 有完整的 a1,a2,a3,a4  所以说是无损分解!

数据库系统原理及其应用总结---ShinePans的更多相关文章

  1. Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx

    Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx 1.1. 数据库的类型,网状,层次,树形数据库,kv数据库.oodb2 1.2. Er模型2 1.3. Sql2 ...

  2. 数据库系统原理——ER模型与关系模型

    原文链接: http://blog.csdn.net/haovip123/article/details/21614887 犹记得第一次看<数据库系统原理>时看天书的感觉,云里雾里:现在已 ...

  3. 数据库系统原理之SQL(三)

    数据库系统原理之SQL(三) 1. SQL的组成 1. 数据查询 2. 数据定义 3. 数据操作 4. 数据控制 2. 数据定义语言 CREATE创建数据库或数据库对象 创建数据库 ~~~ CREAT ...

  4. 数据库系统原理之SQL(四)

    数据库系统原理之SQL(四) 1. 数据更新 插入数据 INSERT-VALUES语句 #插入多条数据 insert [into] table_name (column_name,...) value ...

  5. PowerBuilder 简介及应用 - 数据库系统原理

    PowerBuilder 是一种企业级数据库前端应用和多层体系结构开发工具,友好的用户界面,功能强大的数据窗口,是一个集成开发环境. PB 的特点 采用面向对象的编程方法和事件驱动的工作原理. 支持跨 ...

  6. 数据库设计与 ER 模型 - 数据库系统原理

    数据库系统生存周期 数据库应用系统的开发是一项软件工程,一般具有信息的采集.组织.加工.抽取.综合.传播等功能,但又有自己的特点,所以称为 数据库工程. 数据库应用系统从开始规划.设计.实现.维护到最 ...

  7. 数据库系统原理(第四章:SQL与关系数据库基本操作 )

    一.SQL概述 sql是结构化查询语言(Structured Query Language,SQL)是专门用来与数 据库通信的语言,它可以帮助用户操作关系数据库. SQL的特点: SQL不是某个特定数 ...

  8. SQL SERVER 简介及应用 - 数据库系统原理

    SQL SERVER 是一个分布式的关系型数据库管理系统(RDBMS),具有客户 - 服务器体系结构,一般发行的版本有企业版.标准版.个人版.开发版. SQL SERVER 提供的服务 MS SQL ...

  9. SQL 语言 - 数据库系统原理

    SQL 发展历程 从 1970 年美国 IBM 研究中心的 E.F.Codd 发表论文到 1974 年 Boyce 和 Chamberlin 把 SQUARE 语言改为 SEQUEL 语言,到现在的 ...

随机推荐

  1. (转)asp.net中Literal与label的区别

    asp.net中Literal与label的区别 一.Literal Web 服务器控件概述(摘于MSDN) 可以使用 Literal Web 服务器控件作为页面上其他内容的容器.Literal 最常 ...

  2. Swift函数的定义建议

    /* Swift中函数命名的智慧 */ // 1.一般情况下, 我们写一个函数是这么写的 func sayHello(name: String , greeting: String) { print( ...

  3. (六)Angularjs - 启动引导

    自动引导 AngularJs 通过 ng-app 指令进行自动引导 手工引导启动框架 如果一个HTML文件中 有多个ng-app,AngularJS只会自动引导启动它找到的第一个ng-app应用,这是 ...

  4. core java 第四章笔记

    import java.util.*; public class Employee { private static int nextid = 1; private String name; priv ...

  5. 武汉科技大学ACM:1004: Lake and Island

    Problem Description 北园孩子的专属福利来啦~学校从北区宿舍到湖心岛修建了一条通道让北园的同学们可以上去一(kuang)同(xiu)玩(en)耍(ai),这一天,IcY向ahm001 ...

  6. java学习笔记(13) —— google GSON 实现json转化方法

    1.配置struts.xml <action name="getGsonAction" class="com.test.action.json.GetGsonAct ...

  7. php入门自学小展示

    <!doctype html> <html> <head> <title>PHP函数小展示</title> </head> &l ...

  8. php开发通用采集程序

    php采集程序构建基本步骤: 采集程序是什么?获取远程数据(文字.图片.图片)并快速保存到本地或指定地址. 如天气预报(小偷程序): 远程获取-->替换内容-->展示给用户 如实时更新的新 ...

  9. javascript 正则匹配手机号码

      <form class="form-horizontal" name="mobileform" style="padding:10px;&q ...

  10. C#实现打印与打印预览功能(转)

    在windows应用程序中文档的打印是一项非常重要的功能,在以前一直是一个非常复杂的工作,Microsoft .Net Framework的打印功能都以组件的方式提供,为程序员提供了很大的方便,但是这 ...