数据库系统原理及其应用总结---ShinePans

系统 1676 0

第一章  数据库概论


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


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论