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

第一章  数据库概论


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

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

第二章 关系数据库

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

6.关系的元数指” 属性的个数“,关系的基数指” 元组的个数“,能唯一标识元组的属性集,而无多余属性,该属性集称为” 候选关键字
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的候选关键字为 A,DE 
这里复习下候选关键字的求法:

L,R,LR类属性, L累属性都是候选关键字,LR类属性中,可以多个组合,如果能够决定全部,则是候选关键字
(3)R属于" BCNF"范式

"左部决定因素都是R的超关键字"

解答题举例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的候选关键字
    解答:
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  所以说是无损分解!

你可能感兴趣的:(数据库)