阅读以下关于数据库分析与设计的叙述 在答题纸上回答问题1至问题4。 某集团公司在各省均设有分
问题详情
阅读以下关于数据库分析与设计的叙述,在答题纸上回答问题1至问题4。
某集团公司在各省均设有分公司,现欲建立全国统一的销售管理信息系统,以便总公司及时掌握各分公司的销售情况。公司成立专门的项目组进行该系统的研发工作,其中张工负责其中的数据库设计工作。
张工和需求分析小组紧密合作,在设计出数据流图和数据字典的基础上,给出了数据库关系模式和相应的索引设计。同时考虑到未规范化关系模式町能引起的各类数据错误,对关系模式进行了全面的规范化处理,使所有关系模式均达到了3NF或BC.NF。
在项目实施过程中,应用开发小组认为该设计方案未考虑应用功能的实际需求。如果严格按照设计方案实施,会对应用系统的整体性能产生较大影响。主要的原因在于进行数据查询时,会产生大量的多表连接操作,影响性能。而设计方案中的索引设计,并不能完全满足数据查询的性能要求。
应用开发小组还认为,该设计方案未考虑到信息系统中核心销售数据处理的特点:
各分公司在使用该信息系统时只能操作自己分公司的销售数据,无权操作其他分公司的销售数据;只有总公司有权利操作所有销售数据,以便进行统计分析。
应用开发小组要求,在数据库设计方案中,必须针对实际应用功能的实现来考虑关系模式的规范化,必要时需要采用逆规范化或解除规范化的方法来保证性能要求。
【问题1】(8分)
系统需要管理供应商和货物等信息,具体包括供应商姓名、地址以及货物名称、价格等,供应商可以提供O-n种货物,其公司地址也可能发生变化。请以供应商关系模式supplier(name,address,product price)为例,解释不规范的关系模式存在哪些问题。
【问题2】(6分)
应用开发小组认为张工的规范化设计虽然解决了未规范化关系模式带来的问题,但实际实现功能时会造成系统性能的下降。请解释其原因。
【问题3】(5分)
请解释逆规范化方法,说明其优缺点。
【问题4】(6分)
针对该信息系统中核心销售数据处理的特点,如采用关系表水平分割的逆规范化方法,请给出具体的解决方案,井说明该方案存在的问题。请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:
试题四分析数据库设计阶段主要分为需求分析、概念设计、逻辑设计、钧理设计和评估维护五个阶段。本题主要考查的是数据库逻辑分析阶段的基本知识,以及应用中需要考虑的实际问题。【问题1】本问题考查规范化的基本知识。不满足关系模式规范化要求,会存在数据冗余、更新异常(修改异常)、插入异常、删除异常的问题。为解决上述问题,人们定义了规范的关系模式或范式,分别为INF、2NF、3NF、BCNF、4NF和5NF。关系模式规范化达到BCNF后,这些问题彻底被解决。实际应用中,一般只做到3NF或BCNF。问题中给出的供应商关系模式存在以下问题:(1)数据冗余。如果供应商供应了多种货物,则他的地址被多次重复存储。(2)修改异常(数据不一致)。由于数据冗余存储,当供应商地址改变时,必须修改所有相关记录,否则会造成地址数据不一致。(3)插入异常。如果某供应商未提供货物,则无法记录该供应商的姓名和地址。(4)删除异常。如果某供应商的所有货物均被删除,则丢失了该供应商的名称和地址。【问题2】本问题考查关系模式分解的基本知识。如果某关系模式存在存储异常等问题,可通过分解该关系模式来解决问题,将一个关系模式分解成几个子关系模式。根据关系模式分解和规范化理论能够看出,数据库的规范化程度越高,数据库中的冗余信息就越少。然而,规范化使得关系模式不断被拆解,这样关系模式之间的结构就变得越来越复杂,在使用数据时频繁执行连接操作,而连接操作是最耗时间的,是数据库性能的制约因素。开发小组认为设计方案中没有考虑应用功能的实际要求,将所有关系模式均规范到3NF或BCNF,则在满足用户复杂、多样的数据操作请求时,必然会带来大量的多表连接操作,从而影响实际的数据查询性能。数据量大时,性能下降非常迅速。【问题3】本问题考查关系模式的逆规范化或解除规范化的基本知识。逆规范化或解除规范化方法,指的是将一个规范化的关系模式变成非规范化的关系模式,或者降低某个关系模式的范式标准(例如从3NF降低为INF)的过程。从规范化和逆规范化的定义可以看出,严格的规范化必然导致众多的关系模式,使得关系模式结构复杂,引发频繁的连接操作,导致性能的下降。从这点上可以看出逆规范化操作的优点是改善和提高系统的性能。但反过来说.逆规范化导致了关系模式规范化程度的下降,从而会带来数据冗余、修改异常、插入异常和删除异常等问题,因此必须根据应用自身的特点,采用应用程序、触发器等额外手段来解决该问题。【问题4】本问题考查逆规范化的实际应用。在进行数据库设计时,需要考虑应用的实际需求,合理增加冗余属性,以提升系统性能。常用的措施有:(1)将常用的计算属性(例如,总计和最大值等)存储到数据库实体中:(2)重新定义实体,以减少外部属性数据或行数据的开销:(3)将关系进行水平或垂直分割,以提升并行访问效率。除了上述逻辑结构的设计外,物理设计对系统性能也起到了非常关键的作用。根据本题的实际问题,可采用关系水平分割进行设计。具体方案:根据分公司的不同,每个不同的分公司拥有单独的数据表。这样每个分公司在处理自己的销售数据时,和其他分公司互不干扰,性能得到提高。问题有两点:当全国总公司获取全国总的销售数据时,需要对分公司的数据进行数据union(并)操作,会带来额外的开销:信息系统中执行分公司应用功能时,需要动态根据分公司来选择不同的数据库表,增加了应用程序的复杂度。解答要点【问题l】存在以下问题:1数据冗余。如果供应商供应了多种货物,则他的地址被多次重复存储。2修改异常(数据不一致)。由于数据冗余存储,当供应商地址改变时,必须修改所有相关记录,否则会造成地址数据不一致。3.插入异常。如果某供应商未提供货物,则无法记录该供应商的姓名和地址。4删除异常。如果某供应商的所有货物均被删除,则丢失了该供应商的名称和地址。【问题2】规范化程度是通过模式分解来实现的,因此规范化程度越高,关系模式表达的概念越单一,生成的关系模式就越多。实际应用的数据请求往往非常复杂而多样化,经常会出现一个请求中涉及多个概念、多个关系模式的情况。关系数据库通过多表连接查询来满足这种需求,而表与表之间的连接操作会带来较大的性能开销。开发小组认为设计方案中没有考虑应用功能的实际要求,将所有关系模式均规范到3NF或BCNF,则在满足用户复杂、多样的数据操作请求时,必然会带来大量的多表连接操作,从而影响实际的数据查询性能。数据量大时,性能下降非常迅速。【问题3】逆规范化或解除规范化方法,指的是将一个规范化的关系模式变成非规范化的关系模式,或者降低某个关系模式的范式标准(例如扶3NF降低为1NF)的过程。优点是避免进行表之间的连接操作,可以提高数据操作的性能。缺点是随着范式标准的降低,必然会带来数据冗余、更新异常、插入异常和删除异常等问题,因此必须根据应用自身的特点,采用应用程序、触发器等额外手段来解决该问题。【问题4】具体方案:根据分公司的不同,每个不同的分公司拥有单独的数据表。这样每个分公司在处理自己的销售数据时,和其他分公司互不干扰,性能得到提高。问题有两点:1)当全国总公司获取全国总的销售数据时,需要对分公司的数据进行数据union(并)操作,会带来额外的开销。2)信息系统中执行分公司应用功能时,需要动态根据分公司来选择不同的数据库表,增加了应用程序的复杂度。