正确答案:
题目:某商场商品数据库的商品关系模式P(商品代码,商品名称,供应商,联系方式,库存量),函数依赖集F={商品代码→商品名称,(商品代码,供应商)→库存量,供应商→联系方式}。商品关系模式P达到(1);该关系模式分解成(2)后,具有无损连接的特性,并能够保持函数依赖。
解析:本题考查数据库的规范化。要分析一个关系模式的范式,第一步应找出该关系模式的主键,接下来需要判断关系模式是否消除了非主属性对主键的部分依赖、传递依赖,这样便可得出结论。首先可采用图示法求关系模式的主键。将关系模式P,使用图示法表达,如图2-8所示。从图中可以看出,只有商品代码与供应商的组合键才能遍历全图,所以只有它们的组合能充当主键。由于(商品代码,供应商)是主键,而又有函数依赖:商品代码→商品名称,这便形成了部分依赖。所以在此关系模式中,部分依赖未消除,其范式只能达到1NF。接下来的这个问题,对于经验丰富的考生,看完这几个选项,应该是能直接判断出应选D的。因为D是最佳分拆方案,能达到的范式级别很高。如无经验,可考虑先分析是否为保持函数依赖的分解。A选项分析:P1(商品代码,联系方式)未保持任何原有的函数依赖。而P2(商品名称,供应商,库存量)也未保持任何原有的函数依赖。B选项分析:P1(商品名称,联系方式)未保持任何原有的函数依赖。P2(商品代码,供应商,库存量)只保持了函数依赖:(商品代码,供应商)→库存量。这样对整体来说,就丢失了两个函数依赖关系。C选项分析:P1(商品代码,商品名称,联系方式)保持了函数依赖:商品代码→商品名称,P2(供应商,库存量)未保持任何原有的函数依赖。这样对整体来说,就丢失了两个函数依赖关系。D选项分析:P1(商品代码,商品名称)保持了函数依赖:商品代码→商品名称,P2(商品代码,供应商,库存量)保持了函数依赖:(商品代码,供应商)→库存量,P3(供应商,联系方式)保持了函数依赖:供应商→联系方式。这样将各个分拆关系的函数依赖整合起来,能构成原关系的函数依赖,所以这个分解是保持了函数依赖的分解。
查看原题 查看所有试题
学习资料的答案和解析:
[单选题]建立一个供应商、零件数据库。其中"供应商"表S(Sno,Sname,Zip,City)中的属性分别表示供应商代码、供应商名、供应商邮编、供应商所在城市,其函数依赖为Sno→(Sname,Zip,City),Zip→City。"零件"表P(Pno,Pname,Color,Weight,City),表示零件号、零件名、颜色、重量及产地。表S与表P之间的关系SP(Sno,Pno,Price,Qty)表示供应商代码、零件号、价格、数量。"供应商"表S属于()
2NF
解析:显然,表S的主键是Sno,说明S至少是2NF。但因为存在Sno→Zip和Zip→City,也就是说,City是传递依赖于主键的,所以S不是3NF。
[单选题]在数据库系统中,“事务”是访问数据库并可能更新各种数据项的一个程序执行单元。为了保证数据完整性,要求数据库系统维护事务的原子性、一致性、隔离性和持久性。针对事务的这4种特性,考虑以下的架构设计场景。假设在某一个时刻只有一个活动的事务,为了保证事务的原子性,对于要执行写操作的数据项,数据库系统在磁盘上维护数据库的一个副本,所有的写操作都在数据库副本上执行,而保持原始数据库不变,如果在任一时刻操作不得不中止,系统仅需要删除副本,原数据库没有受到任何影响。这种设计策略称为(1)。事务的一致性要求在没有其他事务并发执行的情况下,事务的执行应该保证数据库的一致性。数据库系统通常采用(2)机制保证单个事务的一致性。事务的隔离性保证操作并发执行后的系统状态与这些操作以某种次序顺序执行(即可串行化执行)后的状态是等价的。两阶段锁协议是实现隔离性的常见方案,该协议(3)。持久性保证一旦事务完成,该事务对数据库所做的所有更新都是永久的,如果事务完成后系统出现故障,则需要通过恢复机制保证事务的持久性。假设在日志中记录所有对数据库的修改操作,将一个事务的所有写操作延迟到事务提交后才执行,则在日志中(4)。当系统发生故障时,如果某个事务已经开始,但没有提交,则该事务应该(5)。
解析:本题主要考查数据库系统架构设计知识。在数据库系统中,“事务”是访问并可能更新各种数据项的一个程序执行单元。为了保证数据完整性,要求数据库系统维护事务的原子性、一致性、隔离性和持久性。题干中第1个架构设计场景描述了数据库设计中为了实现原子性和持久性的最为简单的策略:“影子拷贝”。该策略假设在某一个时刻只有一个活动的事务,首先对数据库做副本(称为影子副本),并在磁盘上维护一个dp_pointer指针,指向数据库的当前副本。对于要执行写操作的数据项,数据库系统在磁盘上维护数据库的一个副本,所有的写操作都在数据库副本上执行,而保持原始数据库不变,如果在任一时刻操作不得不中止,系统仅需要删除新副本,原数据库副本没有受到任何影响。题干中的第2个架构设计场景主要考查考生对事务一致性实现机制的理解。事务的一致性要求在没有其他事务并发执行的情况下,事务的执行应该保证数据库的一致性。数据库系统通常采用完整性约束检查机制保证单个事务的一致性。题干中的第3个架构设计场景主要考查数据库的锁协议。两阶段锁协议是实现事务隔离性的常见方案,该协议通过定义锁的增长和收缩两个阶段约束事务的加锁和解锁过程,能够保证事务的串行化执行,但由于事务不能一次得到所有需要的锁,因此该协议可能会导致死锁。题干中的第4个架构设计场景主要考查数据库的恢复机制,主要描述了基于日志的延迟修改技术(Deferred-ModificationTechruque)的设计与恢复过程。该技术通过在日志中记录所有对数据库的修改操作,将一个事务的所有写操作延迟到事务提交后才执行,日志中需要记录“事务开始”和“事务提交”时间,还需要记录数据项被事务修改后的新值,无须记录数据项被事务修改前的原始值。当系统发生故障时,如果某个事务已经开始,但没有提交,则该事务对数据项的修改尚未体现在数据库中,因此无须做任何恢复动作。
[单选题]设有员工实体Employee(employeeID,name,sex,age,tel,departID),其中employeeID为员工号,name为员工姓名,sex为员工性别,age为员工年龄,tel为员工电话,记录该员工的手机号码、办公室电话等,departID为员工所在部门号,参照另一部门实体Department的主码departID。Employee实体中存在派生属性(1)。Employee实体中还存在多值属性(2)。对属性departID的约束是(3)。
解析:所谓派生属性,是表示其值可以从一个相关属性和属性集的值派生得到的属性,这个属性在实体中不是必需的。根据这个定义,age是一个派生属性,因为用属性birth(出生时间)替换age并可计算age。多值属性是指可同时由多个值表示的属性。例如,包含关于雇员信息的数据库可能包含关于他们个人兴趣的数据。一个雇员可能有几个兴趣:运动、电影、投资、烹调,并且由于这些值的任何一个或所有这些值可能同时是雇员的兴趣,所以这些数据应作为数据类型列表合成到资源。对于多值属性的处理,一般是提升为单独的一个或多个实体。因为departID为员工所在部门号,参照另一部门实体Department的主码departID,因此,在实体Employee中,departID为外键。
[单选题]某高校管理信息系统的数据库设计过程中,(1)阶段是在需求分析的基础上,对用户信息加以分类、聚集和概括,建立信息模型,并依照选定的数据库管理系统软件,转换成为数据的(2),再依照软硬件环境,最终实现数据的合理存储。
解析:通常将数据库设计分为需求分析、概念结构设计、逻辑结构设计和数据库物理设计4个阶段。需求分析是指收集和分析用户对系统的信息需求和处理需求,得到设计系统所必需的需求信息,建立系统说明文档。其目标是通过调查研究,了解用户的数据要求和处理要求,并按一定格式整理形成需求说明书。概念结构设计阶段的目标是对需求说明书提供的所有数据和处理要求进行抽象与综合处理,按一定的方法构造反映用户环境的数据及其相互联系的概念模型,即用户的数据模型或企业数据模型。这种概念数据模型与DBMS无关,是面向现实世界的、极易为用户所理解的数据模型。为保证所设计的概念数据模型能正确、完全地反映用户的数据及其相互关系,便于进行所要求的各种处理,在本阶段设计中可吸收用户参与和评议设计。在进行概念结构设计时,可先设计各个应用的视图,即各个应用所看到的数据及其结构,然后再进行视图集成,以形成一个单一的概念数据模型。这样形成的初步数据模型还要经过数据库设计者和用户的审查与修改,最后形成所需的概念数据模型。逻辑结构设计阶段的设计目标是把上一阶段得到的与DBMS无关的概念数据模型转换成等价的,并为某个特定的DBMS所接受的逻辑模型所表示的概念模式,同时将概念设计阶段得到的应用视图转换成外部模式,即特定DBMS下的应用视图。在转换过程中要进一步落实需求说明,并满足DBMS的各种限制。该阶段的结果是用DBMS所提供的数据定义语言(DDL)写成的数据模式。逻辑设计的具体方法与DBMS的逻辑数据模型有关。逻辑模型应满足数据库存取、一致性及运行等各方面的用户需求。物理设计阶段的任务是把逻辑设计阶段得到的满足用户需求的已确定的逻辑模型在物理上加以实现,其主要的内容是根据DBMS提供的各种手段,设计数据的存储形式和存取路径,如文件结构、索引的设计等,即设计数据库的内模式或存储模式。数据库的内模式对数据库的性能影响很大,应根据处理需求及DBMS、操作系统和硬件的性能进行精心设计。
[单选题]设有职工实体Employee(职工号,姓名,性别,年龄,通信地址,家庭成员),其中通信地址记录了邮编、省、市、街道信息;家庭成员记录了职工的亲属的姓名。职工实体中的通信地址是一个(1)属性;为了将数据库模式设计得更合理,对于家庭成员属性(2)。
解析:简单属性是原子的,不可再分的。复合属性可以细分为更小的部分(即划分为别的属性)。有时用户希望访问整个属性,有时希望访问属性的某个成分,那么在模式设计时可采用复合属性。本题职工实体集Employee的通信地址可以进一步分为邮编、省、市、街道。第(1)空的正确答案为B。我们所举的例子中,定义的属性对于一个待定的实体都只有单独的一个值。例如,对于一个特定的职工,只对应一个职工号、职工姓名,这样的属性称为多值属性。为了将数据库模式设计得更合理,第(2)空的家庭成员属性应该将职工亲属的姓名加上职工号设计成为一个独立的实体。
[单选题]博学公司网上销售管理系统的数据库部分关系模式如下所示。其中,客户号唯一标识一位客户,产品号唯一标识一件产品,订单号唯一标识一份订单。一份订单必须且仅对应一位客户,一份订单可由一到多条订单明细组成,一位客户可以有多份订单。客户(客户号,姓名,性别,地址,邮编)产品(产品号,名称,库存,单价)订单(订单号,时间,金额,客户号)订单明细(订单号,产品号,数量)订单关系模式的主键为(1);订单明细关系模式的主键为(2);其中订单的外键为(3)。
解析:根据试题描述,"单号唯一标识一份订单"所以,订单关系模式的主键为"单号"在订单关系模式中,"一份订单必须且仅对应一位客户",而在客户关系模式中,"户号唯一标识一位客户"也就是说,"户号"客户关系模式的主键,因此,"户号"订单关系模式的外键。因为"份订单可由一到多条订单明细组成"也就是说,在订单明细关系模式中,"单号"可以重复的,因此,需要与"品号"合起来作为主键。又因为"单号"单关系模式的主键,"品号"产品关系模式的主键(因为"号唯一标识一件产品",所以,"单号""品号"是订单明细关系模式的外键。
[单选题]某公司的部门(部门号,部门名,负责人,电话)、商品(商品号,商品名称,单价,库存量)和职工(职工号,姓名,住址)3个实体之间的关系如表2-18、表2-19和表2-20所示。假设每个部门有一位负责人和一部电话,但有若干名员工;每种商品只能由一个部门负责销售。部门关系不属于第三范式的原因是(1)。如果用户要求得到表2-21所示的结果,需要(2),并增加关系模式(3)。
解析:在部门(部门号,部门名,负责人,电话)关系模式中,部门号是主码,所以不存在对码的部分依赖问题。根据试题假设,每个部门有一位负责人和一部电话,也就是说,存在"责人一电话"样的函数依赖,即存在对主码的传递函数依赖。在表2-21中,有职工号、姓名、部门、月销售额4个属性,其中职工号和姓名可以由表2-20得出,但是,由表2-19至表2-20无法得出职工所在的部门,因此,应该在表2-20中增加"部门号"属性。同时,要计算出职工的月销售总额,还需要一个表来记录职工销售的数据。该表需要包括的属性有职工号、商品号、日期、数量。
[单选题]某公司的商品(商品号,商品名称,生产商,单价)和仓库(仓库号,地址,电话,商品号,库存量)两个实体之间的关系如表2-22和表2-23所示。商品关系的主键是(1);仓库关系的主键是(2);仓库关系(3),为了解决这一问题,需要将仓库关系分解为(4)。
解析:从试题中所给出的表格来看,商品关系的主键是商品号,仓库关系的主键是(仓库号,商品号)。显然,仓库关系存在冗余、修改操作的不一致,以及插入异常和删除异常。例如,仓库号为"01"的商品有3种,其地址就要重复3次,故存在冗余。为了解决仓库关系模式存在的问题,就需要进行模式分解,其中(45)空选项A存在的问题是仓库2不属于第三范式,因为存在非主属性对键的部分函数依赖,即"仓库号→电话"。选项B存在的问题是分解属于有损联接,即分解的新关系模式仓库1和仓库2无法恢复到原关系。选项C分解存在的问题与A类同。选项C分解即保持函数依赖,又是无损联接。
[单选题]某公司的商品(商品号,商品名称,生产商,单价)和仓库(仓库号,地址,电话,商品号,库存量)两个实体之间的关系如表2-22和表2-23所示。商品关系的主键是(1);仓库关系的主键是(2);仓库关系(3),为了解决这一问题,需要将仓库关系分解为(4)。
解析:从试题中所给出的表格来看,商品关系的主键是商品号,仓库关系的主键是(仓库号,商品号)。显然,仓库关系存在冗余、修改操作的不一致,以及插入异常和删除异常。例如,仓库号为"01"的商品有3种,其地址就要重复3次,故存在冗余。为了解决仓库关系模式存在的问题,就需要进行模式分解,其中(45)空选项A存在的问题是仓库2不属于第三范式,因为存在非主属性对键的部分函数依赖,即"仓库号→电话"。选项B存在的问题是分解属于有损联接,即分解的新关系模式仓库1和仓库2无法恢复到原关系。选项C分解存在的问题与A类同。选项C分解即保持函数依赖,又是无损联接。