的侯选码(Candidate Key) 注K满足两个条件:
1.K完全函数决定该关系的所有其它属性。
2.K的任何真子集都不能完全函数决定R的所有其它属性,K必须是最小的。 若候选码多于一个,则选定其中的一个做为主码(Primary Key),通常称之为码。 主属性(Prime attribute):包含在任何一个候选码中的属性。 非主属性或非码属性:不包含在任何码中的属性。
例:关系模式S(Sno,Sdept,Sage),单个属性Sno是码, SC(Sno,Cno,Grade)中,(Sno,Cno)是码 由于码能唯一确定一个元组,所以关系的码函数决定该关系的所有属;一个关系中的所有属性都函数依赖于该关系的码。
例:关系模式R(P,W,A)P:演奏者 W:作品 A:听众:一个演奏者可以演奏多个作品,某一作品可被多个演奏者演奏,听众可以欣赏不同演奏者的不同作品。 码为(P,W,A),即All-Key
6、外部码: 关系模式 R 中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码 如在SC(Sno,Cno,Grade)中,Sno不是码,
但Sno是关系模式S(Sno,Sdept,Sage)的码,则Sno是关系模式SC的外部码 主码与外部码一起提供了表示关系之间联系的手段
3、1NF,2NF,3NF,BCNF的定义及应用,能判断某一个关系模式处于第几范式,各级别范式存在的问题(插入,删除和更新异常)和解决方法、
各种范式之间存在联系:
1、1NF :如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF 第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库;简而言之,第一范式就是无重复的列,关系数据库研究的关系都是规范化的关系。但是满足第一范式的关系模式并不一定是一个好的关系模式。
例:关系模式 S-L-C(Sno, Sdept, Sloc, Cno, Grade) Sloc为学生住处,假设每个系的学生住在同一个地方。
函数依赖包括: (Sno, Cno) F Grade
(Sno, Cno) P Sdept ∵ Sno → Sdept
(Sno, Cno) P Sloc ∵ Sdept 传递 Sloc
S-L-C的码为(Sno, Cno)。 S-L-C满足第一范式。
非主属性Sdept和Sloc部分函数依赖于码(Sno, Cno)。
插入异常:如未选课的学生不能插入。
25
删除异常:如放弃修一门课,只选修这-门课的学生被删除
数据冗余度大 修改复杂
原因:存在对码的冗余依赖。Sdept、 Sloc部分函数依赖于码。
26
解决方法:S-L-C分解为两个关系模式,以消除这些部分函数依赖
SC(Sno, Cno, Grade) S-L(Sno, Sdept, Sloc) 2、2NF;若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF 简而言之,第二范式就是每一行被码唯一标识 例:S-L-C(Sno, Sdept, Sloc, Cno, Grade) ∈1NF
S-L-C(Sno, Sdept, Sloc, Cno, Grade) ∈2NF SC(Sno, Cno, Grade) ∈ 2NF S-L(Sno, Sdept, Sloc) ∈ 2NF
采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。但将一个1NF关系分解为多个2NF的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。
3、3NF:关系模式R 中若不存在这样的码X、属性组Y及非主属性Z(), 使得X→Y, Y → X, Y→Z成立,即每个非主属性都不传递依赖于R的码,则称R ∈ 3NF。若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。
简而言之,第三范式(3NF)要求一个数据库表中不能包含其它表中已包含的非码信息。 例:S-L(Sno, Sdept, Sloc) ∈ 2NF S-L(Sno, Sdept, Sloc) ∈ 3NF
S-D(Sno,Sdept) ∈ 3NF D-L(Sdept, Sloc)∈ 3NF 如果R∈3NF,则R也是2NF。
局部依赖和传递依赖是模式产生数据冗余和操作异常的两个重要原因。
由于3NF模式中不存在非主属性对候选码的局部依赖和传递依赖,因此一定程度上上解决原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题具有较好的性能。将一个2NF关系分解为多个3NF的关系后,仍然不能完全消除关系模式中的各种异常情况和数据冗余。
4、BC范式(BCNF):关系模式R∈1NF,若X→Y且时X必含有码,即每个属性都不传递依赖于R的码,则R ∈BCNF。
等价于:每一个决定因素都包含码,即消除任何属性对码的部分和传递函数依赖 若R∈BCNF 所有非主属性对每一个码都是完全函数依赖;所有的主属性对每一个不包含它的码,也是完全函数依赖;没有任何属性完全函数依赖于非码属性。 R ∈BCNF
R ∈3NF 。如果R∈3NF,且R只有一个候选码
R ∈BCNFR ∈3NF
例:关系模式S(Sno,Sname,Sdept,Sage)假定S有两个码Sno,Sname
S∈3NF S ∈ BCNF
例:系模式SJP(S,J,P) s 学生,J课程, P名次 函数依赖:(S,J)→P;(J,P)→S (S,J)与(J,P)都可以作为候选码,属性相交 SJP∈3NF,(不存在非主属性对码的部分和传递依赖) SJP∈BCNF,(每个决定因素都包含码)
第七章:数据库设计
1、数据库设计的基本步骤?每一个阶段的具体内容和方法?P205
1、需求分析
(1)内容:通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原
27
系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
调查的重点是“数据”和“处理”,通过调查、收集与分析获得用户对数据库如下要求: 信息要求:用户需要从数据库中获得信息的内容与性质。由信息要求可以到处数据要求,即在数据库中需要存储哪些数据。
处理要求:用户要完成什么处理功能,对处理的相应时间有什么要求,处理方式是批处理还是联机处理。
安全性与完整性要求。 (2)方法 1、 调查组织机构情况。包括了解该组织部门组成情况、各部门的职责等,为分析
信息流程准备。
2、 调查各部门的业务活动情况。包括了解各个部门输入和使用什么数据库,如何
加工处理这些数据,输出什么信息,输出到什么部门,输出结果的格式是什么,这是调查的重点。
3、 在熟悉了业务活动的基础上,协助用户明确对信息系统的各种要求,包括信息
要求、处理要求、安全性与完整性要求(重点)。
4、 确定新系统的边界。对前面调查的结果进行初步分析,确定哪些功能由计算机
完成或将来准备让那个计算机完成,哪些活动由人工完成。
(3)数据字典
数据流程图:表达了数据和处理的关系。 数据字典:系统中各类数据描述的集合,是进行详细的数据手机和数据分析所获得的主要成果。
1、 数据项:
数据项描述={数据项名、数据项含义说明、别名、数据类型、长度、取值范围、取值含义、与其他数据项的逻辑关系、数据项之间的联系} 2、 数据结构:数据之间的组合关系。
数据结构描述={数据结构名、含义说明、组成:{数据项或数据结构}} 3、 数据流:数据结构在系统内传输的路径。
数据流描述={数据流名、说明、数据流来源、数据流去向、组成:{数据结构}、平均流量、高峰期流量}
4、 数据存储:数据结构停留或保存的地方,也是数据流的来源和去向之一。
数据存储描述={数据存储名、说明、编号、输入的数据流、输出的数据流、组成:{数据结构}、数据量、存取额度、存取方式}
5、 处理过程:具体处理逻辑一般用判定表或判定树来描述。 处理过程描述={处理过程名、说明、输入:{数据流}、输出:{数据流}、处理:{需要说明}}
2、概念结结构设计 (1)方法
1、自顶向下:即首先定义全局概念结构的框架茫然和逐步细化。
2、自底向上。即首先定义各局部应用的概念结构,然后将他们集合起来,得到全局概念结构。
3、逐步扩张。首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构。
4、混合策略。即将自顶向下和自底向上结合,用自顶向下策略设计一个全局概念结构
28