数据库课后习题答案全.docx
- 文档编号:10424792
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:73
- 大小:230.79KB
数据库课后习题答案全.docx
《数据库课后习题答案全.docx》由会员分享,可在线阅读,更多相关《数据库课后习题答案全.docx(73页珍藏版)》请在冰豆网上搜索。
数据库课后习题答案全
第1章数据库系统概述
习题参考答案
1.1数据处理和数据库应用的例子:
电话公司使用数据库存储客户基本信息、客户的每次通话信息以及雇员基本信息、雇员业绩信息等。
典型的数据处理包括电话收费、生成客户长途电话话单、计算雇员工资等
图书馆使用数据库存储图书资料信息、读者基本信息、图书借阅信息等。
典型的数据处理包括新书登记、处理读者借还图书等
税务局使用数据库存储纳税人(个人或公司)信息、纳税人缴纳税款信息等。
典型的数据处理包括纳税、退税处理、统计各类纳税人纳税情况等。
银行使用数据库存储客户基本信息、客户存贷款信息等。
典型的数据处理包括处理客户存取款等。
超市使用数据库存储商品的基本信息、会员客户基本信息、客户每次购物的详细清单。
典型的数据处理包括收银台记录客户每次购物的清单并计算应交货款。
1.2DBMS是数据库管理系统的简称,是一种重要的程序设计系统。
它由一个相互关联的数据集合和一组访问这些数据的程序组成。
数据库是持久储存在计算机中、有组织的、可共享的大量数据的集合。
数据库中的数据按一定的数据模型组织、描述和存储,可以被各种用户共享,具有较小的冗余度、较高的数据独立性,并且易于扩展。
数据库系统由数据库、DBMS(及其开发工具)、应用系统和数据库管理员组成。
数据模型是一种形式机制,用于数据建模,描述数据、数据之间的联系、数据的语义、数据上的操作和数据的完整性约束条件。
数据库模式是数据库中使用数据模型对数据建模所产生设计结果。
对于关系数据库而言,数据库模式由一组关系模式构成。
数据字典是DBMS维护的一系列内部表,用来存放元数据。
所谓元数据是关于数据的数据。
1.3DBMS提供如下功能:
(1)数据定义:
提供数据定义语言DDL,用于定义数据库中的数据对象和它们的结构。
(2)数据操纵:
提供数据操纵语言DML,用于操纵数据,实现对数据库的基本操作(查询、插入、删除和修改)。
(3)事务管理和运行管理:
统一管理数据、控制对数据的并发访问,保证数据的安全性、完整性,确保故障时数据库中数据不被破坏,并且能够恢复到一致状态。
(4)数据存储和查询处理:
确定数据的物理组织和存取方式,提供数据的持久存储和有效访问;确定查询处理方法,优化查询处理过程。
(5)数据库的建立和维护:
提供实用程序,完成数据库数据批量装载、数据库转储、介质故障恢复、数据库的重组和性能监测等。
(6)其他功能:
包括DBMS与其它软件通信、异构数据库之间数据转换和互操作等。
1.4使用数据库进行信息管理具有如下优点:
(1)数据整体结构化:
在数据库中,数据的组织面向整个机构、面向所有可能的应用,而不是某个具体部门或某个特定的应用。
数据结构不仅描述现实世界的对象,而且描述对象之间的联系。
(2)数据可以充分共享:
数据库中的数据的面向整个机构组织使得它能够更好地被多个用户、多个应用程序共享。
(3)数据独立性:
数据独立性是指数据与应用程序相互独立,包括数据的物理独立性和数据的逻辑独立性。
数据的结构用数据模型定义,无需程序定义和解释。
(4)数据由DBMS同一管理和控制,使得系统能够为数据管理提供更多的支持。
这些支持包括:
提供事务支持、增强安全性、保证完整性、平衡相互冲突的请求和面对故障的弹性。
(5)标准化:
使用数据库进行信息管理有利于制定部门标准、行业标准、工业标准、国家标准和国际标准,促进数据库管理系统和数据库开发工具的研制、开发,推动数据管理应用的健康发展。
1.5数据模型的三个基本要素是:
数据结构:
描述数据库的对象和对象之间的联系,是对数据的静态描述。
数据操作:
数据库中各种对象允许的操作和操作规则,使对系统的动态描述。
完整性约束:
一组完整性规则,用以限定符合数据模型的数据库状态和状态的变化,保证数据的正确、有效和相容。
对于关系数据库而言,关系模型只有一种数据结构——关系。
现实世界中的对象和对象之间的联系都用关系表示。
关系是元组的集合。
从用户角度来看,关系是一张二维表。
在关系模型中,定义数据操作的方法有两种:
关系代数和关系演算。
关系代数显式地定义了一些关系运算,而关系演算的基础是一阶谓词逻辑,它用逻辑公式表示查询结果必须满足的条件。
关系模型的完整性约束包括实体完整性、参照完整性和用户定义的完整性。
其中实体完整性和参照完整性是通用完整性约束,由关系模型明确定义。
1.6数据库系统的三级模式是指外模式、模式和内模式。
外模式是特定数据库用户的数据视图,是与某一具体应用相关的数据局部逻辑结构的描述。
模式是数据库中全体数据的总体逻辑结构描述,是所有用户的公共数据视图。
内模式是数据物理结构和存储方式的描述,定义数据在数据库内部的表示方式。
数据库系统的三级模式提供了三个层次的数据抽象。
这样做的一个优点是可以隐蔽数据存储细节,从而隐蔽系统内部的复杂性,简化系统的用户界面。
另一个优点是可以带来数据的独立性。
1.7所谓数据独立性是指数据独立于应用程序,分数据的逻辑独立性和数据的物理独立性两种。
数据的逻辑独立性是指应用程序与数据库的逻辑结构之间的相互独立性。
当数据的逻辑结构改变时,通过修改外模式-模式映像,保持外模式不变,从而使得建立在外模式上的应用程序也可以不变。
数据的物理独立性是指应用程序与存储在磁盘上的数据库中数据之间的相互独立性。
当数据的物理存储结构改变时,通过修改模式-内模式映像,保持模式不变。
由于外模式是定义在模式上的,模式不变,则外模式不需要改变,从而使得建立在外模式上的应用程序也可以不变。
数据的逻辑独立性是指数据的逻辑结构改变不影响应用程序,而数据的物理独立性是指数据的物理组织(存储结构)改变不影响应用程序。
1.8DBA的主要职责包括:
(1)决定数据库中的信息内容和数据的逻辑结构。
(2)决定数据库的存储结构和存取策略。
(3)定义数据的安全性要求和完整性约束条件。
(4)数据库系统的日常维护:
周期性转储数据库、故障恢复、监督系统运行、优化系统性能、设置必要的审计。
(5)重组和重构数据库。
第2章实体-联系模型
部分习题参考答案
2.1解释术语:
实体是客观存在并且可以相互区分的任何事物。
实体集是具有相同属性的实体的集合。
联系是多个实体之间的相互关联。
联系集是相同类型联系的集合。
形式地说,设E1,E2,…,En是n(n2)个实体集,它们不必互不相同。
联系集R是{(e1,e2,…,en)|e1E1,e2E2,…,enEn}的一个子集,其中(e1,e2,…,en)R是一个联系,并称ei(1in)是该联系的参与者,n是联系的度(元)。
简单属性是不能划分成更小的部分的属性。
复合属性是可以划分成更小部分的属性(即可以分成一些其他属性)。
单值属性是一个特定的实体在该属性上只能取单个值的属性。
多值属性是特定的实体在该属性上可以取多个值的属性。
基本属性是其值不能通过其他属性的值推导出来的属性。
派生属性又称计算属性,是其值可以从其他相关属性或实体计算得到的属性。
码是主码或候选码的简称。
主码是指数据库的设计者选中的,用来区分同一实体集中不同实体的候选码。
候选码:
其真子集都不是超码的极小超码称为候选码。
超码:
其值可以惟一确定实体集中每个实体的属性集称为该实体集的超码。
一对一联系:
如果E1中的每个实体最多与E2中的一个实体相关联,并且E2中的每个实体也最多与E1中的一个实体相关联,则称E1和E2之间联系为一对一联系。
一对多联系:
如果E1中的每个实体都可以与E2中任意多个实体相关联,而E2中的每个实体最多与E1中一个实体相关联,则称这种联系为E1到E2的一对多联系。
多对一联系:
如果E1中的每个实体最多与E2中的一个实体相关联,而E2中的每个实体都可以与E1中任意多个实体相关联,则称这种联系为E1到E2的多对一联系。
多对多联系:
如果E1中的每个实体都可以与E2中任意多个实体相关联,并且E2中的每个实体也可以与E1中任意多个实体相关联,则称E1和E2之间联系为多对多联系。
2.2商品应当包含如下属性:
商品条码:
标识商品。
商品名称:
用户识别。
商品类别:
用于商品分类。
生产商:
生产时间:
进价:
销售价:
存货数量:
2.3所有部门形成一个实体集,所有经理形成一个实体集。
假定每个部门最多只有一个经理,而每个人只能在一个部门出任经理,那么部门与经理之间的联系“管理”是一对一联系。
如果允许部门经理空缺,但一个人是经理的话,必须在一个部门任职,那么经理对联系“管理”的参与是全部参与,而部门是部分参与。
所有学生形成一个实体集,所有院系形成一个实体集。
每个院系由多个学生,而每个学生只能在一个院系。
因此,学生与院系之间的联系是多对一联系。
通常,一个学生总在一个院系中,而每个院系都有学生。
因此,学生和院系对该联系都是全部参与。
商品是一个实体集,订单是一个实体集。
每个订单可以包括多种商品,而一种商品可以被多个订单订购。
这样,商品与订单之间的联系“订购”是多对多联系。
通常,每个订单至少包含一种商品,而每种商品都会被某个订单订购(否则就不再销售这种商品)。
这样,商品和订单对该联系的参与都是全部参与。
2.4按以下要求各举一个实际例子:
(1)三个实体集两两之间都存在多对多联系(在你的例子中,三个实体集之间还存在有意义的联系吗?
),
(2)三个实体集之间存在多对多联系(在你的例子中,其中两个实体集之间还存在有意义的联系吗?
)。
(1)实体集教师、课程和学生两两之间的多对多联系
教师和课程之间的联系“讲授”是多对多的:
一个教师教多门课程,一门课程由多位教师讲授
课程和学生之间的联系“选修”是多对多的:
一门课程可以被多个学生选修,一个学生可以选多门课程。
学生和教师之间的联系“师生”也是多对多的:
一个学生可以有多位教师,一个教师可以有多个学生。
教师、课程和学生三者之间也存在有意义的联系,表明特定的学生选修了特定教师讲授的特定课程。
(2)供应商、零件和项目之间的多对多联系“供应”
一个供应商向多个项目提供多种零件;一种零件由多个供应商提供,并用于多个项目;一个项目使用多个供应商提供的多种零件。
这三个实体集中两个实体集之间的有意义联系实际上“供应”的投影。
2.5弱实体集的主码可以通过它与强实体集的联系推断。
如果将强实体集的主码属性添加到弱实体集,那么这些属性将通过实体集和联系两种方式提供,从而导致冗余。
此外,实体集应当只包含描述该实体的属性,强实体集的主码属性并不是描述弱实体集的,因此添加它们使得模型不清晰。
2.6如果一部分实体集通过E-R图的一条路径相连接,则这些实体集是相关的,或许是间接相关的。
一个非连通的图意味一部分实体集与另一部分实体集是不相关的。
如果我们将E-R图划分成连通分支,则事实上我们就有了一些分离的数据库,每个对应一个连通分支。
如上所述,一对实体集之间的路径指明这两个实体集之间的一种联系(可能是间接的)。
如果图中存在环,则环中每对实体集至少可以通过两种不同的方式相关联。
如果E-R图是无环的,则每对实体集之间至多存在一条路径,因此每对实体集之间至多存在一种联系。
2.7假定每辆汽车只属于一位客户。
涉及的实体集有:
客户、汽车和事故。
需要建立如下联系:
拥有:
客户与汽车之间的多对一联系
发生:
客户、汽车和事故之间的多对多联系。
损坏估计最好作为联系“发生”的属性,因为损坏估计不仅与事故有关,而且与特定客户的特定汽车有关。
E-R图如图2.1所示。
2.8假定一个客户可以有多个账户,但一个账户只属于一个客户。
涉及的实体集有:
账户、支行、客户和贷款。
题中已经清楚描述。
建立如下联系:
账户-支行:
账户与支行之间的多对一联系,其中账户全部参与。
贷款-支行:
贷款与支行之间的多对一联系,其中贷款全部参与。
借贷:
客户与贷款之间的多对一联系,其中贷款全部参与。
账户与客户之间有两种联系:
存取款:
客户与账户之间的多对多联系,包括属性存取金额和存取日期。
属于:
客户与账户之间的一对多联系。
E-R图如图2.2所示。
2.9方法一:
使用弱实体
建立弱实体集“贷款偿还”,包括属性:
偿还编号(顺序号)、偿还日期、偿还金额;
建立建立“贷款偿还”与其标识实体集“贷款”之间的标识性联系“还贷”
方法二:
使用多值属性
将“贷款偿还”作为贷款的多值复合属性,它包括属性:
偿还编号(顺序号)、偿还日期、偿还金额
方法三:
使用强实体集
建立强实体集“贷款偿还”,包括属性:
贷款编号、偿还编号(顺序号)、偿还日期、偿还金额;
建立建立“贷款偿还”与“贷款”之间的联系“还贷”
方法一最好,方法三最差,理由与职工-家属的例子类似。
2.10假定:
每位职工在同一时间段只从事一项工作。
每位职工不能同时在多个部门工作,也不能是多个部门的经理。
每位职工不能同时参加多个项目。
每位职工的办公室唯一。
一个项目只由一个部门承担。
一个办公室职能属于一个部门。
该问题涉及的实体集有:
部门、职工、项目、办公室和职工的工作经历,其中工作经历存在依赖于职工,是弱实体集,其余是强实体集。
电话只有一个属性“电话号码”,不把它视为实体集。
一个办公室有多部电话,但假定每位职工只有一部电话。
需要建立如下联系:
管理:
职工与部门之间一对一联系
工作:
职工与部门之间多对一联系
承担:
部门与项目之间一对多联系
部-办:
部门与办公室之间一对多联系
参加:
职工与项目之间多对一联系
职-办:
职工与办公室之间多对一联系
属于:
弱实体集工作简历与标识实体集职工之间的多对一联系
E-R图如图2.3所示。
第3章关系模型
习题参考答案
3.1解释术语:
域是具有相同类型的值的集合。
笛卡尔积:
给定n个域D1,D2,…,Dn(它们不必互不相同)上的笛卡尔积记作D1D2…Dn,定义为{(d1,d2,…,dn)|d1D1d2D2…dnDn}。
关系:
域D1,D2,…,Dn上的关系r是笛卡尔积D1D2…Dn的任意子集。
元组:
笛卡尔积或关系的每个元素(d1,d2,…,dn)称为一个n-元组(简称元组)
属性:
关系用一个二维表表示。
列通常是命名的,称为属性。
关系的码:
关系R的属性集K是它的码,如果K是R的超码,并且K的任何真子集都不是R的超码(即K是极小超码)。
或X是关系R的超码,如果t1和t2是R的任意实例中的元组,并且t1[X]=t2[X],则t1=t2。
候选码:
所有的码都称候选码。
主码:
由多个码中选出的作为惟一识别关系元组的码
外码:
如果FK是关系R的属性集,并且不是R的码,但是FK与关系R’的主码K’对应,则称FK是关系R的外码。
关系模式:
关系模式用关系模式名、关系模式的诸属性和属性对应的域,以及属性间的数据依赖集定义。
通常简单地用关系模式名和属性列表表示R(A1,A2,…,An)。
关系数据库模式:
由若干域的定义和一组定义在这些域上的关系模式组成。
3.2实体完整性:
关系R的所有元组在主码上的值必须惟一,并且在主码的任何属性上都不能取空值。
参照完整性:
如果属性集FK是关系R的外码,它参照关系S的主码Ks,则R的任何元组在FK上的值或者等于S的某个元组在主码Ks上的值,或者为空值。
3.3除了语义约束之外,关系数据库对关系的主要限制是:
(1)在关系数据库中,我们只考虑有限关系(笛卡尔积的有限子集),因为无限关系既不能显式存储,也不能有效地显示。
(2)关系的每个属性都必须是原子的,即每个属性只能取原子值。
在关系数据库中,原子值是数据访问的最小单位。
属性的原子性要求是规范化关系的基本要求。
3.4事实上,关系R的外码参照被参照关系S(目标关系)反映R的某些元组每个都与S的某个特定元组之间存在联系。
有些实际问题允许R的某些元组与S的任何元组都没有联系,在这种情况下,允许R的这些元组在外码上取空值。
例如,在关系Employees(Eno,Ename,Salary,Dno)中,Dno是外码。
有些公司允许某些职工(如公司总裁)不属于任何特定的部门,这些职工的元组在Dno上可以取空值。
假定所有的关系模式都是E-R图转换得到的。
(1)如果关系R是联系集转换的,则R代表联系集,其外码的值代表参与联系的特定实体集的一个特定实体。
此时,R外码都不能取空值。
(2)设关系R的外码FR参照被参照关系S。
如果关系R是实体集E1转换的,则E1必然通过某个联系R’与S对应的实体集相关联。
当这种联系不要求是完全的时,R的某些元组可以不参照S的任何元组,此时外部码FR的属性值可以为空;反之不能为空。
3.5自然连接和等值连接的相同之处是二者都是根据属性值相等进行连接。
二者的不同之处是:
自然连接在相同属性上进行相等比较,并投影去掉重复属性;等值连接并不要求一定在相同属性上进行相等比较,也不删除重复属性。
3.6由强实体集得到的关系模式:
Employees(Eno,Ename,Salary)
Departments(Dno,Dptname)
Suppliers(Sno,Sname,Saddress)
Items(Ino,Iname,Stocks)
Orders(Ono,Data)
Customers(Cno,Cname,Caddress,Balance)
其中主码用下横线标示(下同)。
注意,Departments的Dptname也是码,但我们选择Dno为主码。
由弱实体集Dependents得到如下关系模式:
Dependents(Eno,Dname,ReltoEmp,Birthday)
将联系转换成关系模式时,不再考虑弱实体集的存在依赖联系。
其余6个联系产生如下关系模式:
Manages(Dno,Eno)
Works_in(Eno,Dno)
Carries(Dno,Ino)
Supplies(Sno,Ino,Price)
Includes(Ono,Ino,Quantity)
Placed_by(Cno,Ono)
其中Works_in和Manages有相同的属性,但它们的实际意义不同。
下一步,我们合并具有相同码的关系模式。
首先,考虑Manages。
它与Employees和Departments都包含相同的码。
Maneges与Employees合并更容易回答“某职工的经理是谁”这类问题,而与Departments合并更容易回答“某部门的经理是谁”这类问题。
考虑到后一类问题更经常出现,我们决定将Manages合并到Departments,并将Manages中属性Eno改名为Mrgno(表示经理的职工号),得到如下关系模式:
Departments(Dno,Dptname,Mrgno)
还有三对关系具有相同的码,它们是Employees和Works_in,Items和Carries,Orders和Placed_by。
它们都可以直接合并。
最后,我们得到图3.11所示E-R模型的一组关系模式:
Employees(Eno,Ename,Salary,Dno)
Department(Dno,Dptname,Mrgno)
Suppliers(Sno,Sname,Saddress)
Items(Ino,Iname,Stocks,Dno)
Orders(Ono,Data,Cno)
Customers(Cno,Cname,Caddress,Balance)
Dependents(Eno,Dname,ReltoEmp,Birthday)
Supplies(Sno,Ino,Price)
Includes(Ono,Ino,Quantity)
3.7习题3.6的关系模式的模式图如图3.1所示。
3.8得到的一组关系模式如下:
客户(客户ID,姓名,地址,电话)
汽车(车辆编号,车型,出厂年份,车主ID)
事故(事故编号,发生时间,事故地点)
发生(驾照号,车辆编号,事故编号,损坏估计)
其中,客户与汽车之间的联系已经合并到关系模式“汽车”中,并将“客户ID”改为“车主ID”。
3.9由实体集得到如下关系模式:
账户(账号,余额)
支行(支行名称,城市,街道,资产)
客户(客户ID,姓名,地址,联系电话)
贷款(贷款号,贷款日期,贷款金额)
由联系得到如下关系模式:
账户-支行(账号,支行名称)
贷款-支行(贷款号,支行名称)
借贷(客户ID,贷款号)
存取款(客户ID,账号,存取金额,存取日期)
属于(账号,客户ID)
合并具有相同码的关系模式:
账户、账户-支行、属于具有相同码,合并成一个关系模式账户,并用开户行替换支行名称,开户人替换客户标识。
合并后的关系模式如下:
账户(账号,余额,开户行,开户人)
贷款和贷款-支行具有相同码,合并成一个关系模式贷款,并用贷款支行替换支行名称。
合并后的关系模式如下:
贷款(贷款号,贷款日期,贷款金额,贷款支行)
最后得到的一组关系模式如下:
账户(账号,余额,开户行,开户人)
支行(支行名称,城市,街道,资产)
客户(客户标识,姓名,地址,联系电话)
贷款(贷款号,贷款日期,贷款金额,贷款支行)
借贷(客户ID,贷款号)
存取款(客户ID,账号,存取金额,存取日期)
3.10电话号码是多值属性,需要创建一个关系模式。
我们称该关系模式为电话,它的码为电话号码。
该关系模式定义如下:
电话(电话号码,办公室名称)
由强实体集得到如下关系模式:
部门(部门号,部门名称,预算)
项目(项目名称,项目预算)
办公室(办公室名称,位置)
职工(职工号,姓名,地址,电话号码)
由弱实体集“工作简历”得到如下关系模式:
工作简历(职工号,开始时间,任务,工资,截止时间)
由联系集得到如下关系模式:
承担(项目名称,部门号)
部-办(办公室名称,部门号)
管理(职工号,部门号)
参加(职工号,项目名称)
工作(职工号,部门号)
职-办(职工号,办公室名称)
合并具有相同码的关系模式:
项目与承担具有相同码,合并为项目,并将部门号改为承担部门,得到:
项目(项目名称,项目预算,承担部门)
办公室与部-办具有相同码,合并为办公室,并将部门号改为所属部门,得到:
办公室(办公室名称,位置,所属部门)
管理有两个码,可以与职工合并(有利于回答“某职工的经理是谁”这类问题),也可以与部门合并(有利于回答“某部门的经理是谁”这类问题)。
考虑“某部门的经理是谁”这类问题更常出现,决定于部门合并,并将职工号改为经理,得到:
部门(部门号,部门名称,预算,经理)
职工、参加、工作和职-办都具有相同码,合并为职工,得到:
职工(职工号,姓名,地址,电话号码,项目名称,部门号,办公室名称)
最后,我们得到如下关系模式:
部门(部门号,部门名称,预算,经理)
项目(项目名称,项目预算,承担部门)
办公室(办公室名称,位置,所属部门)
职工(职工号,姓名,地址,电话号码,项目名称,部门号,办公室名称)
工作简历(职工号,开始时间,任务,工资,截止时间)
电话(电话号码,办公室名称)
3.11
(1)求上海的所有供应商的信息。
Scity=’上海’(Suppliers)
(2)求位于郑州的所有工程的信息。
Jcity=’上海’(Projects)
(3)求数量在100~150之间的供应。
Quantity100Quantity150
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课后 习题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)