数据库原理教程习题答案(全)(2)

2019-04-01 19:00

E-R图如图2.1所示。

姓名 客户ID 客户 地址 电话 车辆编号 车型 出厂年份 拥有 汽车 发生 事故编号 事故 发生时间 损坏估计 事故地点 图2.1 习题2.7的E-R图

2.8 假定一个客户可以有多个账户,但一个账户只属于一个客户。

涉及的实体集有:账户、支行、客户和贷款。题中已经清楚描述。 建立如下联系:

账户-支行:账户与支行之间的多对一联系,其中账户全部参与。 贷款-支行:贷款与支行之间的多对一联系,其中贷款全部参与。 借贷:客户与贷款之间的多对一联系,其中贷款全部参与。 账户与客户之间有两种联系:

存取款:客户与账户之间的多对多联系,包括属性存取金额和存取日期。 属于:客户与账户之间的一对多联系。 E-R图如图2.2所示。

城市 账号 余额 支行名称 账户-支行 支行 街道 资产 账户 存取金额 存取款 存取日期 属于 贷款-支行 客户 客户ID 姓名 地址 联系电话 借贷 贷款 贷款号 贷款金额 贷款日期 图2.2 习题2.8的E-R图

2.9 方法一:使用弱实体

建立弱实体集“贷款偿还”,包括属性:偿还编号(顺序号)、偿还日期、偿还金额; 建立建立“贷款偿还”与其标识实体集“贷款”之间的标识性联系“还贷” 方法二:使用多值属性

将“贷款偿还”作为贷款的多值复合属性,它包括属性:偿还编号(顺序号)、偿还日期、偿还金额

方法三:使用强实体集 建立强实体集“贷款偿还”,包括属性:贷款编号、偿还编号(顺序号)、偿还日期、偿还金额;

建立建立“贷款偿还”与 “贷款”之间的联系“还贷” 方法一最好,方法三最差,理由与职工-家属的例子类似。

2.10 假定:

每位职工在同一时间段只从事一项工作。

每位职工不能同时在多个部门工作,也不能是多个部门的经理。 每位职工不能同时参加多个项目。 每位职工的办公室唯一。 一个项目只由一个部门承担。 一个办公室职能属于一个部门。

该问题涉及的实体集有:部门、职工、项目、办公室和职工的工作经历,其中工作经历存在依赖于职工,是弱实体集,其余是强实体集。

电话只有一个属性“电话号码”,不把它视为实体集。一个办公室有多部电话,但假定每位职工只有一部电话。

需要建立如下联系:

管理:职工与部门之间一对一联系 工作:职工与部门之间多对一联系

部门名称 部门号 承担 项目名称 项目 项目预算 参加 职工号 属于 姓名 地址 电话号码 开始日期 任务 截止日期 工资 工作简历 职工 职-办 管理 工作 办公室 位置 电话号码 部门 预算 部-办 办公室名称 图2.3 习题2.10的E-R图

承担:部门与项目之间一对多联系 部-办:部门与办公室之间一对多联系 参加:职工与项目之间多对一联系 职-办:职工与办公室之间多对一联系

属于:弱实体集工作简历与标识实体集职工之间的多对一联系 E-R图如图2.3所示。

第3章 关系模型

习题参考答案

3.1 解释术语:

域是具有相同类型的值的集合。

笛卡尔积:给定n个域D1, D2, …, Dn(它们不必互不相同)上的笛卡尔积记作D1? D2?…?Dn,定义为{(d1, d2, …, dn)| d1?D1? d2? D2 ? …? dn ?Dn}。

关系:域D1, D2, …, Dn上的关系r是笛卡尔积D1? D2?…?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所示。


数据库原理教程习题答案(全)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:数字滤波器设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: