免费智能真题库 > 历年试卷 > 电子商务设计师 > 2021年上半年 电子商务设计师 下午试卷 案例
  第1题      
  知识点:   实体   规范化   函数依赖   设计原则   实体联系图   数据库

 
【说明】
假设某集团公司有多个仓库,存储多种零件,供给多个部门使用,公司规定:
1.一种零件可以存放在多个仓库中,一个仓库可以存放多种零件;
2.每个部门只有一个负责人;
3.每个仓库每种零件只有一个库存数量;
4.一个部门可以在不同的仓库领用零件,一个仓库可以供应多个部门;
5.一个部门可以领用多种零件,一种零件也可以被多个部门领用;
6.一个部门可以在不同的时间在同一个仓库领用同一种零件。
现拟开发一套零件库存管理系统,公司信息技术部门根据公司实际情况及规定初步设计了实体联系图,并创建关系模式R如下:
R(仓库编号,仓库名称,零件编号,零件名称,库存数量,领用部门编号,领用部门负责人,领用时间,领用数量)
经过数据库专业设计人员分析后,发现存在一些问题,需要优化设计。
规范化分析】
关系模式R的基本函数依赖包括6个:
1.(仓库编号,零件编号)→领用部门编号
2.领用部门编号→领用部门负责人
3.仓库编号→仓库名称
4.(1)→零件名称
5.(2)→库存数量
6.(仓库编号,零件编号,领用部门编号,(3))→领用数量
根据上述函数依赖,关系R的码为(4),R中存在非主属性对码的(5)和(6),故R属于1NF。
规范化设计】
按照规范化设计原则,将R分解成3NF模式集如下:
仓库(仓库编号,仓库名称)
零件(零件编号,(7))
部门((8),领用部门负责人)
库存(仓库编号,零件编号,(9))
领用(仓库编号,零件编号,领用部门编号,(10),领用数量)
【概念模型设计】
根据规范化设计结果,重新设计零件库存管理系统实体联系图如图1-1所示。

 
问题:1.1   根据题意,将规范化分析中的空(1)~(6)补充完整。
 
问题:1.2   根据题意,将规范化设计中的空(7)~(10)补充完整。
 
问题:1.3   在“零件库存管理系统实体联系图”中画出三元联系“领用”,并标明联系类型。
 
 
 

   知识点讲解    
   · 实体    · 规范化    · 函数依赖    · 设计原则    · 实体联系图    · 数据库
 
       实体
        在E-R模型中,实体用矩形表示,通常矩形框内写明实体名。实体是现实世界中可以区别于其他对象的“事件”或“物体”。例如,企业中的每个人都是一个实体。每个实体由一组特性(属性)来表示,其中的某一部分属性可以唯一标识实体,如职工号。实体集是具有相同属性的实体集合,例如,学校所有教师具有相同的属性,因此教师的集合可以定义为一个实体集;学生具有相同的属性,因此学生的集合可以定义为另一个实体集。
 
       规范化
        关系数据库设计的方法之一就是设计满足适当范式的模式,通常可以通过判断分解后的模式达到几范式来评价模式规范化的程度。范式有: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的。
 
       函数依赖
        设RU)是属性U上的一个关系模式,XYU的子集,rR的任一关系,如果对于r中的任意两个元组uv,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记为XY
        从函数依赖的定义可以看出,如果有XU在关系模式RU)上成立,并且不存在X的任一真子集X′使X′→U成立,那么称XR的一个候选键。也就是X值唯一决定关系中的元组。由此可见,函数依赖是键概念的推广,键是一种特殊的函数依赖。
        在RU)中,如果XY,并且对于X的任何一个真子集X′,都有X′→Y不成立,则称YX完全函数依赖。若XY,但Y不完全函数依赖于X,则称YX部分函数依赖。
        在RU)中,如果XYY不是X的真子集),且YX不成立,YZ,则称ZX传递函数依赖。
        设U是关系模式R的属性集,FR上成立的只涉及U中属性的FD集,则有以下三条推理规则:
        (1)自反性:若Y?X?U,则XYR上成立;
        (2)增广性:若XYR上成立,且Z?U,则XZYZR上成立;
        (3)传递性:若XYYZR上成立,则XZR上成立。
        这里XZYZ等写法表示XZYZ。上述三条推理规则是函数依赖的一个正确的和完备的推理系统。根据上述三条规则还可以推出其他三条常用的推理规则:
        (1)并规则:若XYXZR上成立,则XYZR上成立;
        (2)分解规则:若XYR上成立,且Z?Y,则XZR上成立;
        (3)伪传递规则:若XYWYZR上成立,则WXZR上成立。
        在关系模式RUF)中为F所逻辑蕴含的函数依赖全体叫做F的闭包,记作F+
        设F为属性集U上的一组函数依赖,XU的子集,那么相对于F属性集X的闭包用X+表示,它是一个从F集使用推理规则推出的所有满足XA的属性A的集合:
        X+={属性A|XAF+中}
        如果G+=F+,就说函数依赖集F覆盖GFG的覆盖,或GF的覆盖),或FG等价。
        如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集,也称为最小依赖集或最小覆盖。
        (1)F中任一函数依赖的右部仅含有一个属性;
        (2)F中不存在这样的函数依赖XA,使得FF-{XA}等价;
        (3)F中不存在这样的函数依赖XAX有真子集Z使得F-{XA}∨{ZA}与F等价。
 
       设计原则
        防火墙的设计原则如下。
        (1)由内到外、由外到内的业务流均要经过防火墙。
        (2)只允许本地安全策略认可的业务流通过防火墙,实行默认拒绝原则。
        (3)严格限制外部网络的用户进入内部网络。
        (4)具有透明性,方便内部网络用户,保证正常的信息通过。
        (5)具有抗穿透攻击能力,强化记录、审计和报警。
 
       实体联系图
        数据流图描述了系统的逻辑结构,数据流图中的有关处理逻辑及数据流的含义可用数据字典具体定义说明,但是对于比较复杂的数据及其之间的关系,用它们是难以描述的,在这种情况下一般采用实体联系图进行描述。
        实体联系图(Entity-Relationship Diagram, ER图),可用于描述数据流图中数据存储及其之间的关系,最初用于数据库概念设计。
        下图是大学教务管理问题中对教务处进行分析调查后得到的实体联系图。其中,学生档案是有关学生情况的集合,课程档案是有关开设的课程情况集合,注册记录、选课单则分别是学生注册和选课情况的集合。它用简单的图形方式描述了学生和课程等这些教学活动中的数据之间的关系。
        
        大学教务处教务管理问题实体联系图
        在实体联系图中,有实体、联系和属性三个基本成分,如下图所示。
        (1)实体。实体是现实中存在的对象,有具体的,也有抽象的;有物理上存在的,也有概念性的;例如,学生、课程,等等。它们的特征是可以互相区别,否则就会被认为是同一对象。凡是可以互相区别、又可以被人们识别的事、物、概念等统统可以被抽象为实体。数据流图中的数据存储就是一种实体。实体可以分为独立实体和从属实体或弱实体,独立实体是不依赖于其他实体和联系而可以独立存在的实体,如上图中的“学生档案”、“课程档案”等,独立实体常常被直接简称为实体;从属实体是这样一类实体,其存在依赖于其他实体和联系,在实体联系图中用带圆角的矩形框表示,例如上图中的“注册记录”是从属实体,它的存在依赖于实体“学生档案”,“课程档案”和联系“注册”,“选课单”也是从属实体,它的存在依赖于实体“学生档案”,“课程档案“和联系”选课”。
        在以下述说中,为简便起见,将上图中的实体“学生档案”和“课程档案”直接称为“学生”和“课程”。
        (2)联系。实体之间可能会有各种关系。例如,“学生”与“课程”之间有“选课”的关系。这种实体和实体之间的关系被抽象为联系。在实体联系图中,联系用联结有关实体的菱形框表示,如上图所示。联系可以是一对一(1:1),一对多(1:N)或多对多(M:N)的,这一点在实体联系图中也应说明。例如在大学教务管理问题中,“学生”与“课程”是多对多的“选课”联系。
        (3)属性。实体一般具有若干特征,这些特征就被称为实体的属性,例如上图中的实体“学生”,具有学号、姓名、性别、出生日期和系别等特征,这些就是它的属性。
        联系也可以有属性,例如学生选修某门课程,它既不是学生的属性,也不是课程的属性,因为它依赖于某个特定的学生,又依赖于某门特定的课程,所以它是学生与课程之间的联系“选课”的属性。在上图中,联系“选课”的属性被概括在从属实体“选课单”中。联系具有属性这一概念对于理解数据的语义是非常重要的。
        在实体联系图中,还有如下关于属性的几个重要概念。
        .主键,如果实体的某一属性或某几个属性组成的属性组的值能唯一地决定该实体其他所有属性的值,也就是能唯一地标识该实体,而其任何真子集无此性质,则这个属性或属性组被称为实体键。如果一个实体有多个实体键存在,则可从其中选一个最常用到的作为实体的主键。例如实体“学生”的主键是学号,一个学生的学号确定了,那么他的姓名、性别、出生日期和系别等属性也就确定了。在实体联系图中,常在作为主键的属性或属性组与相应实体的连线上加一短垂线表示,如上图所示的“学号”。
        
        实体联系图的基本成分
        .外键,如果实体的主键或属性(组)的取值依赖于其他实体的主键,那么该主键或属性(组)被称为外键。例如,从属实体“注册记录”的主键“学号”的取值依赖于实体“学生”的主键“学号”,“选课单”的主键“学号”和“课程号”的取值依赖于实体“学生”的主键“学号”和实体“课程”的主键“课程号”,这些主键和属性就是外键。
        .属性域,属性可以是单域的简单属性,也可以是多域的组合属性。组合属性由简单属性和其他组合属性组成。组合属性中允许包括其他组合属性意味着属性可以是一个层次结构,如下图所示通信地址就是一种具有层次结构的属性。
        
        通信地址属性
        .属性值,属性可以是单值的,也可以是多值的。例如一个人所获得的学位可能是多值的。当某个属性对某个实体不适应或属性值未知时,可用空缺符NULL表示。
        在画实体联系图时,为了使得图形更加清晰、易读易懂,可以将实体和实体的属性分开画,并且对实体进行编号,如下图一和下图二所示。
        
        实体联系图
        
        实体属性图
        由于人们通常就是用实体、联系和属性这三个概念来理解和描述现实问题的,所以实体联系图非常接近人的思维方式。又因为实体联系图采用简单的图形来表达人们对现实的理解,所以不熟悉计算机技术的用户也都能够接受它,因此实体联系图成为了系统分析员和用户之间沟通的工具。
 
       数据库
        数据库(DataBase,DB)是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
        系统使用的所有数据存储在一个或几个数据库中。
   题号导航      2021年上半年 电子商务设计师 下午试卷 案例   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
 
第1题    在手机中做本题