14、数据库设计

第十四章 数据库设计


根据考试大纲,本章要求考生掌握以下几个方面的知识点。
(1)设计关系模式:掌握给定一个实际的应用问题如何设计E-R模型,如何将E-R模型转换成关系模式,确定联系类型、主键、候选键、外键,判断关系模式规范化的程度。
(2)数据库语言(SQL):掌握给定一个实际的应用问题如何用SQL进行数据定义(创建表、视图)、完整性定义及权限定义。
(3)数据库访问:掌握常用数据库的访问方法。
从历年的考试情况来看,本章的考点主要有:E-R模型、关系模式、主键、外键,偶尔出现SQL语言方面的试题。

本书第5章已经对数据库系统的基础知识进行了详细说明,这些知识点也是解答案例分析题的要点。但这些知识相对比较独立,本节从数据库建模的角度来分析整个数据库设计是怎样做的,这将对原来学到的内容进行融合,以提高水平,解决比选择题更难的案例分析题。

1. 数据库设计的阶段划分

前面的章节曾提到软件的开发分了多个阶段,而软件开发的本身包括了流程方面的设计与数据方面的设计。数据库设计正是数据层面的规划,所以数据库设计也有阶段的划分,它与软件开发的阶段是吻合的。数据库设计包括需求分析、概念结构设计、逻辑结构设计和数据库物理设计四个阶段。如图12-1所示。
在这里插入图片描述
这四个阶段的主要工作与产出物总结起来,如表12-1所示。
在这里插入图片描述

2. ER模型高级知识

关于ER模型的相关内容,第5章已有相关说明,应对上午考试的相关问题那些知识已经足够用了,但下午案例分析题难度将超过该水平,因为会涉及ER模型的高级知识。ER模型的高级知识包括:弱实体、特殊化、概括、聚集,考试中要求掌握弱实体与特殊化。

ER图

在这里插入图片描述

(1)弱实体

弱实体是一类特殊的实体,这种实体需要依赖于另一个实体,若另一个实体不存在了,它也随之消失。相对而言,弱实体所依赖的那个实体称为强实体。
例如:订单实体与订单明细之间便存在这样的关系,订单实体是强实体,而订单明细为弱实体,若订单实体不存在了,订单明细也就没有存在的必要性了。强实体与弱实体之间的关系表达,与常规的ER模型略有差异,如图12-2所示。
在这里插入图片描述

(2)特殊化

在数据库的设计过程中,有时我们会发现,一个实体可以按照某些特征分为几个子实体,这其实是从普遍到特殊的一个过程,这被称为“特殊化”。仅从概念理解,会非常抽象,下面看一个例子。
例如:学生这个实体,它就包含了多个子集:大专生、本科生、硕士生、博士生。这便是特殊化。其示意图如图12-3所示。
在这里插入图片描述

习题

试题1
阅读下列说明和图,回答问题1至问题3。
【说明】
某医院拟开发一套住院病人信息管理系统,以方便对住院病人、医生、护士和手术等信息进行管理。
【需求分析】
(1)系统登记每个病人的住院信息,包括:病案号、病人的姓名、性别、地址、身份证号、电话号码、入院时问及病床等信息,每个病床有唯一所属的病区及病房,如表12-2所示。其中病案号唯一标识病人本次住院的信息。
在这里插入图片描述
(2)在一个病人的一次住院期间,由一名医生对该病人的病情进行诊断,并填写一份诊断书,如表12-3所示。对于需要进行一次或多次手术的病人,系统记录手术名称、手术室、手术日期、手术时间、主刀医生及多名协助医生,每名医生在手术中的责任不同,如表12-4所示,其中手术室包含手术室号、楼层、地点和类型等信息。
在这里插入图片描述
在这里插入图片描述
(3)护士分为两类:病床护士和手术室护士。每个病床护士负责护理一个病区内的所有病人,每个病区由多名护士负责护理。手术室护士负责手术室的护理工作。每个手术室护士负责多个手术室,每个手术室由多名护士负责,每个护士在手术室中有不同的责任,并由系统记录其责任。
【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图(不完整)如图12-4所示。
在这里插入图片描述
【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):
病床(病床号,病房,病房类型,所属病区)
护士(护士编号,姓名,类型,性别,级别)
病房护士((1))
手术室(手术室号,楼层,地点,类型)
手术室护士((2))
病人((3),姓名,性别,地址,身份证号,电话号码,入院时间)
医生(医生编号,姓名,性别,职称,所属科室)
诊断书((4),诊断,诊断时间)
手术安排(病案号,手术室号,手术时间,手术名称)
手术医生安排((5),医生责任)
【问题1】
补充图12-4中的联系和联系的类型。
【问题2】
根据图12-4,将逻辑结构设计阶段生成的关系模式中的空(1)~(5)补充完整,并用下划线
指出主键。
【问题3】
如果系统还需要记录医生给病人的用药情况,即记录医生给病人所开处方中药品的名称、用
量、价格、药品的生产厂家等信息。请根据该要求,对图2-1进行修改,画出补充后的实体、实体间
联系和联系的类型。

试题2
阅读下列说明,回答问题1至问题3。
【说明】
某物流公司为了整合上游供应商与下游客户,缩短物流过程,降低产品库存,需要构建一个信息系统以方便管理其业务运作活动。
【需求分析结果】
(1)物流公司包含若干部门,部门信息包括部门号、部门名称、经理、电话和邮箱。一个部门可以有多名员工处理部门的日常事务,每名员工只能在一个部门工作。每个部门有一名经理,只需负责管理本部门的事务和人员。
(2)员工信息包括员工号、姓名、职位、电话号码和工资;其中,职位包括:经理、业务员等。业务员根据托运申请负责安排承运货物事宜,例如:装货时间、到达时间等。一个业务员可以安排多个托运申请,但一个托运申请只由一个业务员处理。
(3)客户信息包括客户号、单位名称、通信地址、所属省份、联系人、联系电话、银行账号,其中,客户号唯一标识客户信息的每一个元组。每当客户要进行货物托运时,先要提出货物托运申请。托运申请信息包括申请号、客户号、货物名称、数量、运费、出发地、目的地。其中,一个申请号对应唯一的一个托运申请;一个客户可以有多个货物托运申请,但一个托运申请对应唯一的一个客户号。
【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如图12-5所示。
在这里插入图片描述
【关系模式设计】
部门(部门号,部门名称,经理,电话,邮箱)
员工(员工号,姓名,职位,电话号码,工资,(a))
客户((b),单位名称,通信地址,所属省份,联系人,联系电话,银行账号)
托运申请((c),货物名称,数量,运费,出发地,目的地)
安排承运((d),装货时间,到达时间,业务员)
【问题1】
根据问题描述,补充四个联系、联系的类型,以及实体与子实体的联系,完善图12-5所示的实
体联系图。
【问题2】
根据实体联系图,将关系模式中的空(a)~(d)补充完整。分别指出部门、员工和安排承运
关系模式的主键和外键。
【问题3】
若系统新增需求描述如下:
为了数据库信息的安全性,公司要求对数据库操作设置权限管理功能,当员工登录系统时,系统需要检查员工的权限。权限的设置人是部门经理。为满足上述需要,应如何修改(或补充)图12-5所示的实体联系图,请给出修改后的实体联系图和关系模式。

答案
试题1分析
本题考查数据库概念结构设计、概念至逻辑结构转换等内容。
【问题1】
本题主要考查根据题目描述补充完整ER图。
在本题中,根据题目描述“在一个病人的一次住院期间,由一名医生对该病人的病情进行诊
断”,我们可以知道病人与医生间存在多对一的联系“诊断”;根据题目描述“手术室护士负责手
术室的护理工作。每个手术室护士负责多个手术室,每个手术室由多名护士负责。”我们可以知
道,护士与手术室之间存在多对多的负责关系;另外,我们再根据ER图中给他的5个实体,分析一下
他们之间是否还存在某类联系,通过分析,不难发现病人与病床间存在联系,根据常识,我们不难
知道,一个病人正常情况只住一个病床,而一个病床由于时间不同,可以分配给多个病人住,因此
这个联系是多对一的联系。
【问题2】
该问题要我们补充完整各关系模式中缺失的属性并给出各关系模式的主键。要补充各关系模式
缺失的属性应该根据题目的描述和已经建立的ER图来完成。第1空是要我们补充病房护士关系模式所
缺失的属性,根据题目的描述:“每个病床护士负责护理一个病区内的所有病人,每个病区由多名
护士负责护理”可知,病床护士应该与病区存在一种多对一的联系,因此在病床护士关系模式中,
要体现出其所负责的病区,因此第1空应该填(护士编号,病区),而该关系模式的主键为护士编
号。
第2空是要我们补充手术室护士所缺失的属性,根据题目的描述:“手术室护士负责手术室的护
理工作。每个手术室护士负责多个手术室,每个手术室由多名护士负责”因此第2空应该填(护士编
号,手术室号,责任),而该关系模式的主键为护士编号。
第3空是要我们补充病人所缺失的属性,根据题目的描述:“系统登记每个病人的住院信息,包
括:病案号、病人的姓名、性别、地址、身份证号、电话号码、入院时间及病床等信息”可知,第3
空应该填(病案号,病床号),而该关系模式的主键为病案号。
第4空是要我们补充诊断书关系模式所缺失的属性,该关系模式是由病人与医生间的联系诊断所
转化而来,那么该关系模式的属性应该包含两个实体的主键及联系本身的属性,因此第4空应该填
(病案号,医生编号),而该关系模式的主键为(病案号,医生编号)。
第5空是要我们补充手术医生安排关系模式所缺失的属性,该关系模式是由病人、医生及手术室
三个实体间的联系转化而来,那么该关系模式的属性应该包含这三个实体的主键及联系本身的属
性,因此第5空应该填(病案号,手术室号,医生编号,手术时间),而该关系模式的主键为(病案
号,手术室号,医生编号,手术时间)。
【问题3】
本题描述“系统还需要记录医生给病人的用药情况,即记录医生给病人所开处方中药品的名
称、用量、价格、药品的生产厂家等信息”,我们可以知道药品、医生及病人这三个实体有关系,
而且三端都是多端,因为一个医生可以开出多个处方,一个病人可以有多个处方,而一个处方可以
包含多种药品。这样就很容易画图ER图(见试题答案)。
试题1答案
在这里插入图片描述
【问题2】
(1)病区,护士编号
(2)手术室号,护士编号,责任
(3)病案号,病床号
(4)病案号,医生编号
(5)病案号,手术室号,手术时间,医生编号
【问题3】
在这里插入图片描述
试题2分析
本题考查数据库概念结构设计、概念至逻辑结构转换等内容。
此类题目要求考生认真阅读题目,根据题目的需求描述,给出实体间的联系。
【问题1】
本题主要考查根据题目描述补充完整ER图。
在本题中,根据题目描述“一个部门可以有多名员工处理部门的日常事务,每名员工只能在一
个部门工作”,我们可以知道部门与员工间存在一对多的联系“属于”;根据题目描述“每个部门
有一名经理,只需负责管理本部门的事务和人员”我们可以知道,经理与部门之间存在一对一的管
理联系;然后我们根据题目描述“业务员根据托运申请负责安排承运货物事宜,一个业务员可以安
排多个托运申请,但一个托运申请只由一个业务员处理”可知,在业务员和托管申请之间存在一个1
对多的安排承运的联系;而根据题目描述“每当客户要进行货物托运时,先要提出货物托运申请。
其中,一个申请号对应唯一的一个托运申请;一个客户可以有多个货物托运申请,但一个托运申请
对应唯一的一个客户号”可以,客户和托运申请之间存在一个1对多的申请联系。另外,不管是业务
员还是经理,他们都是员工,因此业务员和经理是员工实体的子实体。
【问题2】
该问题要我们补充完整各关系模式中缺失的属性并给出各关系模式的主键。要补充各关系模式
缺失的属性应该根据题目的描述和ER图转换为关系模式的转换原则来完成。a空是要我们补充员工信
息关系模式所缺失的属性,根据题目的描述,员工信息包括:员工号、姓名、职位、电话号码和工
资,而这些已经存在于员工关系模式中了,但是根据ER转换的原则,我们知道部门与员工之间存在
一对多的联系,而这个联系没有转换为独立的关系模式,因此,需要将联系的属性和1端关系模式的
主键放到多端当中来作为外键,因此a空应填属性“部门号”。其中员工关系模式的主键为员工号,
而外键为部门号。
b空是要我们补充客户关系模式所缺失的属性,根据题目的描述,客户信息包括客户号、单位名
称、通信地址、所属省份、联系人、联系电话、银行账号。因此b空应该填“客户号”这个属性。
c空是要我们补充托运申请关系模式所缺失的属性。根据题目描述托运申请信息包括申请号、客
户号、货物名称、数量、运费、出发地、目的地。再结合ER图分析可得出c空应该填“申请号,客户
号”。
d空是要我们补充安排承运关系模式所缺失的属性。安排承运是有联系转换而来的一个关系模
式,其中包含的属性应该包括其本身的属性和联系两端实体关系模式的主键,应该可知d空应该
填“申请号”,而业务员的主键就是属性“业务员”。这个关系模式的主键应该是申请号,而外键
是业务员,因为业务员是业务员关系模式的主键,其实就是员工号。
同样的道理,对于部门关系模式,其主键为部门号,而外键为“经理”。
【问题3】
根据本题描述“为了数据库信息的安全性,公司要求对数据库操作设置权限管理功能,当员工
登录系统时,系统需要检查员工的权限。权限的设置人是部门经理。”我们就可以知道,应该有一
个实体“权限”,而这个实体与部门经理之间存在一种一对多的联系,其中部门经理端为一端。
试题2答案
【问题1】(注意:在考试时,出现补充联系的问题时,对于联系名称一般不做要求,但要求不
能出现联系重名的现象)
在这里插入图片描述
【问题2】
在这里插入图片描述
【问题3】
在这里插入图片描述
关系模式:
权限(员工号,权限,设置人)
或权限(员工号,权限,部门经理)

3. 事务管理

事务具有原子性一致性隔离性持久性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值