免费智能真题库 > 历年试卷 > 程序员 > 2018年下半年 程序员 上午试卷 综合知识
  第58题      
  知识点:   规范化   数据库   数据库设计
  关键词:   关系规范化   数据库   数据        章/节:   数据库基础知识       

 
关系规范化是在数据库设计的( )阶段进行。
 
 
  A.  需求分析
 
  B.  逻辑设计
 
  C.  概念设计
 
  D.  物理设计
 
 
 

 
  第55题    2017年上半年  
   24%
应用系统的数据库设计中,概念设计阶段是在( )的基础上,依照用户需求对信息进行分类、聚集和概括,建立信息模型。
  第57题    2016年上半年  
   44%
数据字典存放的是(57)。
  第58题    2016年下半年  
   35%
某企业研发信息系统的过程中,(58)不属于数据库管理员(DBA)的职责。
   知识点讲解    
   · 规范化    · 数据库    · 数据库设计
 
       规范化
        关系数据库设计的方法之一就是设计满足适当范式的模式,通常可以通过判断分解后的模式达到几范式来评价模式规范化的程度。范式有:1NF、2NF、3NF、BCNF、4NF和5NF,其中1NF级别最低。这几种范式之间成立。
        通过分解,可以将一个低一级范式的关系模式转换成若干个高一级范式的关系模式,这种过程叫作规范化。下面将给出各个范式的定义。
               1NF(第一范式)
               【定义7.10】若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式。记为R∈1NF。
               例如,供应者和它所提供的零件信息,关系模式FIRST和函数依赖集F如下:
               FIRST(Sno,Sname,Status,City,Pno,Qty)
               F={Sno→Sname,Sno→Status,Status→City,(Sno,Pno)→Qty}
               对具体的关系FIRST如下表所示。从下表中可以看出,每一个分量都是不可再分的数据项,所以是1NF的。但是,1NF存在4个问题:
               
               FIRST
               (1)冗余度大。例如每个供应者的Sno、Sname、Status、City要与其供应的零件的种类一样多。
               (2)引起修改操作的不一致性。例如供应者S1从“天津”搬到“上海”,若不注意,会使一些数据被修改,另一些数据未被修改,导致数据修改的不一致性。
               (3)插入异常。关系模式FRIST的主码为Sno、Pno,按照关系模式实体完整性规定主码不能取空值或部分取空值。这样,当某个供应者的某些信息未提供时(如Pno),则不能进行插入操作,这就是所谓的插入异常。
               (4)删除异常。若供应商S4的P2零件销售完了,并且以后不再销售P2零件,那么应删除该元组。这样,在基本关系FIRST找不到S4,可S4又是客观存在的。
               正因为上述4个原因,所以要对模式进行分解,并引入了2NF。
               2NF(第二范式)
               【定义7.11】若关系模式R∈1NF,且每一个非主属性完全依赖于码,则关系模式R∈2NF。
               换句话说,当1NF消除了非主属性对码的部分函数依赖,则称为2NF。
               例如,FIRST关系中的码是Sno、Pno,而Sno→Status,因此非主属性Status部分函数依赖于码,故非2NF的。
               若此时,将FIRST关系分解为:
               FIRST1(Sno,Sname,Status,City)∈ 2NF
               FIRST2(Sno,Pno,Qty)∈2NF
               因为分解后的关系模式FIRST1的码为Sno,非主属性Sname、Status、City完全依赖于码Sno,所以属于2NF;关系模式FIRST2的码为Sno、Pno,非主属性Qty完全依赖于码,所以也属于2NF。
               3NF(第三范式)
               【定义7.12】若关系模式R(U,F)中不存在这样的码X,属性组Y及非主属性使得X→Y,成立,则关系模式R∈3NF。
               即当2NF消除了非主属性对码的传递函数依赖,则称为3NF。
               例如,FIRST1?3NF,因为在分解后的关系模式FIRST1中有Sno→Status,Status→City,存在着非主属性City传递依赖于码Sno。若此时将FIRST1继续分解为:
               FIRST11(Sno,Sname,Status)∈ 3NF
               FIRST12(Status,City)∈3NF
               通过上述分解,数据库模式FIRST转换为FIRST11(Sno,Sname,Status)、FIRST12(Status,City)、FIRST2(Sno,Pno,Qty)三个子模式。由于这三个子模式都达到了3NF,因此称分解后的数据库模式达到了3NF。
               可以证明,3NF的模式必是2NF的模式。产生冗余和异常的两个重要原因是部分依赖和传递依赖。因为3NF模式中不存在非主属性对码的部分函数依赖和传递函数依赖,所以具有较好的性能。对于非3NF的1NF、2NF其性能弱,一般不宜作为数据库模式,通常要将它们变换成为3NF或更高级别的范式,这种变换过程称为“关系模式的规范化处理”。
               BCNF(Boyce Codd Normal Form,巴克斯范式)
               【定义7.13】关系模式R∈1NF,若X→Y且时,X必含有码,则关系模式R∈BCNF。
               也就是说,当3NF消除了主属性对码的部分函数依赖和传递函数依赖,则称为BCNF。
               结论:一个满足BCNF的关系模式,应有如下性质。
               (1)所有非主属性对每一个码都是完全函数依赖。
               (2)所有非主属性对每一个不包含它的码,也是完全函数依赖。
               (3)没有任何属性完全函数依赖于非码的任何一组属性。
               例如,设R(Pno,Pname,Mname)的属性分别表示零件号、零件名和厂商名,如果约定,每种零件号只有一个零件名,但不同的零件号可以有相同的零件名;每种零件可以有多个厂商生产,但每家厂商生产的零件应有不同的零件名。这样我们可以得到如下一组函数依赖:
               Pno→Pname,(Pname,Mname)→Pno
               由于该关系模式R中的候选码为(Pname,Mname)或(Pno,Mname),因而关系模式R的属性都是主属性,不存在非主属性对码的传递依赖,所以R是3NF的。但是,主属性Pname传递依赖于码(Pname,Mname),因此R不是BCNF的。当一种零件由多个生产厂家生产时,零件名与零件号间的联系将多次重复,带来冗余和操作异常现象。若将R分解成:
               R1(Pno,Pname)和R2(Pno,Mname)
               就可以解决上述问题,并且分解后的关系模式R1、R2都属于BCNF。
               4NF(第四范式)
               【定义7.14】关系模式R∈1NF,若对于R的每个非平凡多值依赖X→→Y且时,X必含有码,则关系模式R(U,F)∈4NF。
               4NF是限制关系模式的属性间不允许有非平凡且非函数依赖的多值依赖。
               注意:如果只考虑函数依赖,关系模式最高的规范化程度是BCNF;如果考虑多值依赖,关系模式最高的规范化程度是4NF。
               连接依赖5NF
               连接依赖:当关系模式无损分解为n个投影(n>2)会产生一些特殊的情况。下面考虑供应商数据库中SPJ关系的一个具体的值,如下图所示。
               
               关系SPJ是三个二元投影的连接
               第一次SP、PJ投影连接“”起来的结果比原始SPJ关系多了一个元组“S2,P1,J2”,即上图中带下画线的元组。第二次连接的结果去掉了多余的元组,从而恢复了原始的关系SPJ。在这种情况下,原始的SPJ关系是可3分解的。注意,无论我们选择哪两个投影作为第一次连接,结果都是一样的,尽管在每种情况下中间结果不同。
               SPJ的可3分解性是基本与时间无关的特性,是关系模式的所有合法值满足的特性,也就是说,这是关系模式满足一个特定的与时间无关的完整性约束。将这种约束简称为3D(3分解)约束。上述情况就是连接依赖要研究的问题。
               连接依赖:如果给定一个关系模式R,R1,R2,R3,…,Rn是R的分解,那么称R满足连接依赖JD*{R1,R2,R3,…,Rn},当且仅当R的任何可能出现的合法值都与它在R1,R2,R3,…,Rn上的投影等价。
               形式化地说,若R=R1∪R2∪…∪Rn,且,则称R满足连接依赖JD*{R1,R2,R3,…,Rn}。如果某个Ri,就是R本身,则连接依赖是平凡的。
               为了进一步理解连接依赖的概念,我们考虑银行数据库中的子模式:贷款(L-no,Bname,C-name,amount)。其中:
               .贷款号为L-no的贷款是由机构名为Bname贷出的。
               .贷款号为L-no的贷款是贷给客户名为C-name的客户。
               .贷款号为L-no的贷款的金额是amount。
               我们可以看到这是一个非常直观的逻辑蕴涵连接依赖:
               JD*((L-no,Bname),(L-no,C-name),(L-no,amount))
               这个例子说明了连接依赖很直观,符合数据库设计的原则。
               【定义7.15】一个关系模式R是第五范式(也称投影-连接范式PJNF),当且仅当R的每一个非平凡的连接依赖都被R的候选码所蕴涵,记作5NF。
               “被R的候选码所蕴涵”的含义可通过SPJ关系来理解。关系模式SPJ并不是5NF的,因为它满足一个特定连接依赖,即3D约束。这显然没有被其唯一的候选码(该候选码是所有属性的组合)所蕴涵。其区别是,关系模式SPJ并不是5NF,因为它是可被3分解的,可3分解并没有为其(Sno,Pno,Jno)候选码所蕴涵。但是将SPJ3分解后,由于3个投影SP、PJ、JS不包括任何(非平凡的)连接依赖,因此它们都是5NF的。
 
       数据库
        数据库(DataBase,DB)是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
        系统使用的所有数据存储在一个或几个数据库中。
 
       数据库设计
        数据库的设计质量对整个系统的功能和效率有很大的影响。数据库设计的核心问题是:从系统的观点出发,根据系统分析和系统设计的要求,结合选用的数据库管理系统,建立一个数据模式。设计的基本要求是:
        .符合用户需求,能正确反映用户的工作环境
        .设计与所选用的DBMS所支持的数据模式相匹配
        .数据组织合理,易操作、易维护、易理解
               数据库设计步骤
               数据库的设计过程可以分为4个阶段,即用户需求分析、概念结构设计、逻辑结构设计和物理结构设计。下图反映和分析了这一设计过程,其中:
               
               数据库设计步骤
               .用户需求分析是对现实世界的调查和分析
               .概念结构设计是从现实世界向信息世界的转换。根据用户需求来进行数据库建模,也称为概念模型,常用实体关系模型表示。
               .逻辑结构设计是从信息世界向数据世界的转化。将概念模型转化为某种数据库管理系统所支持的数据模型。
               .物理结构设计是为数据模型选择合适的存储结构和存储方法。
               用户需求分析
               用户需求分析需要结合具体的业务需求分析,确定信息系统的各类使用者以及管理员对数据及其处理、数据安全性和完整性的要求。主要设计如下三方面:
               (1)系统应用环境分析。
               系统应用环境及系统所服务和运行的特殊组织环境。不同业务单位有不同的组织结构和业务工作流程。环境的特殊性将决定数据库的整体设计思路和风格。
               (2)用户数据需求及加工分析。
               用户需求及加工分析指用户希望从数据库中获得那些信息以及对信息的处理要求。由此决定数据库中应该存储哪些信息以及对数据需要进行哪些加工处理,包括在处理过程中特定的查询要求、响应时间要求,以及数据安全性、保密性、完整性和一致性等方面的要求,应在此基础上编制数据字典。
               (3)系统约束条件分析。
               系统约束条件分析及分析现有系统的规模、结构、资源和地理分布,明确现有系统存在的种种限制或约束,从而使系统设计不至于脱离实际条件,确保系统设计顺利实施。
               数据库概念结构设计
               概念结构设计是指由现实世界的各种客观事物及其联系转化为信息世界中的信息模型的过程,即为数据库的概念结构设计。E-R模型即实体-联系模型是描述数据库概念结构的有力工具。下面结合实例说明E-R模型的构建。
               在一个政府部门中存在着多个不同科室,每一个由若干名科员构成,每个科室都有一名主管上级领导,科室公务员负责为前来机关办事的群众提供相关的服务。现分别画出各个科室的E-R模型图,再画出整个机关的E-R模型。
               一个科室结构应包括:
               (1)实体,即上级领导、科室、科员、群众。
               (2)实体联系,主管领导与科室之间是一对多的关系,科室与科员之间的联系也是一对多的关系,科员与群众之间是多对多的关系。
               (3)各个实体所具有的属性。
               .主管上级领导,属性可以有编号、姓名、性别、年龄、职务、任职时间、参加工作时间、入党时间、学历
               .科室的属性可以包括科室号
               .科员的属性包括编号、姓名、性别、年龄、职称、参加工作时间、入党时间、学历
               .群众属性包括服务日期、服务事宜、处理结果
               .服务,包括服务日期、服务事宜、处理结果
               通过以上分析,可以得到如下的E-R模型,如下图所示(部分属性)。
               
               科室E-R模式图
               数据库逻辑结构设计
               逻辑结构设计的任务是要将概念结构设计阶段完成的概念模型转换成能被选定的数据库管理系统支持的数据模型。现行的数据库管理系统一般支持网状、层次和关系三种数据模型中的一种,其中关系型的数据模型在DBMS中的应用和支持较为广泛,已成为主流。
               下面简单介绍一下由E-R模型转换为关系数据模型的转化规则。在关系数据模型下,数据的逻辑结构是一张二维表,每个关系为一张二维表格。E-R模型转换为关系数据模型的转化规则如下。
               .每一实体及其属性对应于一个关系模式。实体名作为关系名,实体的属性作为对应关系的属性。所谓关系模式,就是对关系的描述,用关系名(属性1、属性2、属性3,……属性n)来表示。
               .两两实体之间的联系及其属性一般对应一个关系模式,联系名作为对应的关系名,联系的属性作为对应关系的属性;不带属性的联系可以去掉。
               .实体和联系中关键字属性在关系模式中仍作为关键字。
               上图中所示的实体关系图可以按照这些转换规则进行转化得到如下对应的关系模型。
               .主管上级领导,编号、姓名、性别、年龄、职务、任职时间、参加工作时间、入党时间、学历
               .科室,包括主管上级领导编号、科室号
               .科员,包括科室号、编号、姓名、性别、年龄、职称、参加工作时间、入党时间、学历
               .群众,包括来访者编号、姓名、性别、年龄、来访日期、服务事宜
               .服务,包括受理公务员编号、来访者编号、服务日期、服务事宜、处理结果
               不同的系统配备的数据库管理系统性能不同,因而必须结合具体DBMS的性能和要求将一般数据模型转换成所选用的数据管理系统支持的数据模型,若选用的DBMS支持层次、网络模型,则还要完成从关系模型向层次或网络模型的转换。
               数据库物理结构设计
               数据库的物理设计以逻辑结构设计的结果为输入,结合关系数据库系统的功能和应用环境、存储设备等具体条件为数据模型选择合适的存储结构和存储方法。从而提高数据库的效率。物理结构设计的主要任务如下。
               (1)确定存储结构。
               根据用户对数据结构和处理的要求,权衡数据存取时间、空间利用率和维护代价等三方面的利弊,综合考虑存储效率、维护成本等相关因素,从数据库管理系统提供的各种存储结构(例如顺序存储结构、索引存储结构,等等)中,选取合适的结构并加以实现。
               (2)选择和调整存储路径。
               数据库必须支持多个用户的多种应用,因此必须提供多个存取入口、多条存取路径,建立多个辅助索引。此过程中需要考虑一些问题,例如如何选取合适的数据项建立索引,如何建立辅助索引从而达到检索效率和存储空间的统一等。
               (3)确定数据存储位置。
               按照不同的应用可将数据分为若干个组。根据各组数据利用频率和存储要求的不同,各类数据的存放位置、存储设备以及区域划分都应有所不同。应该把存取频率和存取速度要求较高的数据存储在高速存储器上,把存取频率和存取速度要求较低的数据存储在低速存储器上。
               (4)确定存储分配。
               大多数据库管理系统会提供一些存储分配参数,例如溢出区大小、块大小、缓冲区大小和个数等,设计人员应全面考虑这些参数,以进行物理优化。
               (5)确定数据的完整性与安全性约束。
               进行物理设计时不仅要考虑所选用数据库管理系统提供的安全机制和完整性约束,还要考虑用户使用制度、应用程序、计算机系统等各个涉及具体应用的方面。
               (6)考虑数据恢复方案。
               数据库的物理设计阶段也要考虑数据库的恢复问题,采取必要的物理措施和手段,为突发事件和故障后的恢复做好准备,提供必要的物理工具。
   题号导航      2018年下半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第58题    在手机中做本题