数据库系统概念第六版课后习题答案-第一章

实践习题在原书的网站有英文版的,我会翻译下来。而剩余的习题没有答案的,我会在网上找找,或者干脆自己做,不能保证答案质量,仅作参考。

实践习题

1.1 这一章讲述了数据库系统的几个主要的优点。它有那两个不足之处?

Ans: a. 建立一个数据库系统需要更多的知识,钱,技能和时间;

b. 数据库的复杂性可能会导致性能的降低。

1.2 列出Java和C++之类的语言中的类型说明系统与数据库系统中使用的数据定义语言的5个不同之处。

Ans: a. 在数据库中创建一个对象需要使用DDL(数据定义语言)执行一个操作,而编程语言类型声明只是在简单的程序中一个抽象;

b. 数据库DDL允许指定一致性约束,编程语言通常则不允许。这些约束包括域约束和参照完整性约束;

c. 数据库DDL支持授权把不同的访问权限赋予给不同的用户,编程语言类型系统不支持这种保护(最好的情况下(或者说“编程语言类型系统能做到的做好的情况是”更恰当一点吧),可以保证一个类中的属性不被其他类中的方法访问);

d. 编程语言类型系统通常比SQL类型系统更加丰富。大多数数据库只支持基础类型,比如数字的不同类型和字符串,尽管有些数据库支持复杂的类型比如说数组和对象;

e. 一个数据库DDL注重类型的属性的关系,而编程语言允许创建对象和对象的集合。

1.3 列出为一个企业建立数据库的六个主要步骤。

Ans: a. 为企业制定详细的需求(这一步制定系统需求详情文档);

b. 制定一个包含所有恰当类型的数据和数据关系的模型;

c. 制定数据的完整性约束;

d. 设计物理层;

e. 对于每个要定期解决的已知问题(例如,任务由职员或Web用户执行)定义用户界面执行任务,并编写必要的应用程序实现用户界面;

f. 创建/初始化数据库。

1.4 除1.6.2节中已经列出的之外,请列出大学要维护的至少3种不同类型的信息。

Ans: a. 关于那些是学校的职工但是不是教员的人的信息;

b. 图书馆信息,包括其中的书籍,以及作家信息;

c. 账号信息,包括大学的支付费用,学位信息,工资和其他种类的收支。

1.5 假设你想要建立一个类似于YouTube的视频节点。考虑1.2节中列出的将数据保存在文件系统中的各个缺点,讨论每一个缺点与实际存储的视频数据和关于数据的元数据(诸如标题、上传它的用户、标签、观看它的用户)的关联。

Ans: a. 数据冗余和不一致。 这在某种程度上与元数据相关,但不是与未更新的实际视频数据相关。 这里关系很少,没有一个可以导致冗余。

b. 难以访问数据。 如果就像今天的视频共享网站那样只通过几个预定义的接口访问视频数据,这没问题。 但是,如果组织需要根据特定搜索条件(不只是简单的关键字查询)查找视频数据,如果元数据存储在文件中,则在不编写应用程序的情况下很难找到相关数据。 使用数据库对于查找数据的任务非常重要。

c. 数据隔离。 由于数据不会经常更新,而是会新创建,因此数据隔离不是主要问题。即使是跟踪谁看过哪些视频(概念上)只是附加的任务,隔离仍然不是一个主要问题。但是,如果添加了授权,则可能存在对授权信息进行并发更新的一些问题。

d. 完整性问题。 除主键外,应用程序似乎不太可能存在严重的完整性约束。 如果数据是分布式的,则在执行主键约束时可能存在问题。 完整性问题可能不是主要问题。

e. 原子性问题。 上传视频时,应以原子方式添加有关视频和视频的元数据,否则数据会出现不一致。 在发生故障时,需要一个底层的恢复机制来确保原子性。

f. 并发访问异常。 只要数据不更新,就不太可能发生并发访问异常。

g. 安全问题。当系统支持授权操作时会出现这个问题。

1.6 在Web查找中使用的关键字查询与数据库查询很不一样。请列出这两者之间在查询表达方式和查询结果是什么方面的主要差异。

Ans:  Web中使用的查询通过提供没有特定语法的关键字列表来指定。 结果通常是URL的有序列表,以及有关URL内容的信息片段。 相反,数据库查询具有允许指定复杂查询的特定语法。 在关系世界中,查询的结果始终是一个表。

习题

1.7 列出四个你使用过的很可能使用了数据库来存储持久数据的应用。

Ans: 微信(用户名、密码、简介……)、网易云音乐(歌曲名、歌手、所属专辑……)、王者荣耀(游戏名、等级、拥有金币数……)、淘宝(用户名、密码、购买订单……)

1.8 列出文件处理系统和DBMS的四个主要区别。

Ans: a. 虽然两个都是由一个相互关联的数据的结合和一组用以访问这些数据的程序组成的,但是文件处理系统通过物理访问数据,而DBMS通过物理和逻辑访问数据。

b. 在文件处理系统中,一个程序所写的数据可能不能被另一个程序访问。而DBMS中被授权的程序可以访问存储的逻辑数据,数据可以被多个程序访问,减少数据的冗余。

c. 文件处理系统被设定为特定的程序访问数据(如已编译的程序),DBMS设计为更灵活地访问数据(如查询)

d. 文件处理系统一般允许一个或多个程序同时访问不同的数据文件,一个文件只有在两个程序都只有只读权限的时候才可以同时被两个程序并发访问,而在DBMS中,允许多个用户同时访问相同的数据。

1.9 解释物理数据独立性的概念,以及它在数据库系统中的重要性。

Ans: 物理独立性是指用户的应用程序与磁盘上的数据库中数据是相互独立的。物理独立性使应用程序与存储在磁盘上的数据相分离,应用程序不依赖于物理模式,因此物理模式改变了他们也无需重写。

1.10 列出数据库管理系统的五个职责。对每个职责,说明当它不能被履行时会产生什么样的问题。

Ans: a. 数据定义。DBMS提供DDL供用户定义数据库的三级模式结构、两级映像以及完整性约束和保密限制等约束。DDL主要用于建立、修改数据库的库结构。DDL所描述的库结构仅仅给出了数据库的框架,数据库的框架信息被存放在数据字典中。当该职责不能履行时,数据库就可能只是单纯的起到保存字符串的作用,无法起到结构化数据的作用;

b. 数据操作。DBMS提供DML供用户实现对数据的添加、删除、更新、查询等操作。当该职责不饿能履行时,数据库无法执行上述操作;

c. 数据库的运行管理。数据库的运行管理功能使DBMS的运行控制、管理功能,包括多用户环境下的并发控制、安全性检查和存取权限控制、完整性检查和执行、运行日志的组织管理、失误的管理和自动恢复,即保证事务的原子性。这些功能保证了数据库系统的正常运行。当该职责无法履行时,数据库无法进行上述等重要功能;

d. 数据组织、存储与管理。DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等,需确定以何种文件结构和存取方式在存储级上组织这些数据,如何实现数据之间的联系。数据组织和存储的基本目标时提高存储空间利用率,选择合适的存取方法提高存取效率。当该职责无法履行时,数据库无法进行上述等重要功能;

e. 数据库的保护。数据库中的数据是信息社会的战略资源,数据的保护至关重要。DBMS对数据库的保护通过四个方面来实现:数据库的回复、数据库的并发控制、数据库的完整性控制、数据库安全性控制。DBMS的其他保护功能还有系统缓冲区的管理以及数据存储的某些自适应调节机制等。当该职责无法履行时,数据库无法完成数据安全性保护的功能;

f. 数据库的维护。这一部分包括数据库的数据载入、转换、存储、数据库的重组合重构以及性能监控等功能,这些功能分别由各个使用程序来完成。当该职责无法履行时,数据库无法进行上述等重要功能。

1.11 请给出至少两种理由说明为什么数据库系统使用声明性查询语言,如SQL,而不只是提供C或者C++的函数库来执行数据库操作。

Ans: a. 使用SQL可以定义对数据操作的规范,而使用C或C++的函数库会很麻烦,这使得程序员需要了解更多的知识,并且进行的操作更多更复杂,使得工作更加繁琐;

b. 使用SQL而不是C或者C++可以使移植更加方便,解决了不同编程语言之间的隔离问题。

1.12 解释用图1-4中的表来设计会导致哪些问题。

Ans: a. 数据大量冗余,相同的信息出现次数太多(如depart_name: Comp.Sci,building:Taylor出现了三次,但其实包含的内容是一样的),浪费空间;

b. 同一数据出现在表的多处地方,当数据需要改动时,需要改动的地方较多;

c. 院系信息依赖于教员存在,当一个院系的所有教员被删除时,在表中就无法保存院系信息,这显然是不合理的。

1.13 数据库管理员的五种主要作用是什么?

Ans: a. 模式定义。DBA通过用DDL书写的一系列定义来创建最初的数据库模式。

b. 存储结构和存取方法定义。

c. 模式及物理组织的修改。由数据库管理员对模式和物理组织进行修改,以反映机构的需求变化,或为提高性能选择不同的物理组织。

d. 数据访问授权。通过授予不同类型的权限,数据库管理员可以规定不同的用户各自可以访问的数据库的部分。授权信息保存在一个特殊的系统结构中,一旦系统中有访问数据要求,数据库系统就去查阅这些信息。

e. 日常维护。数据库管理员的日常维护活动有:定期备份数据库,或者在磁带上或者远程服务器上,以防止像洪水之类的灾难发生时数据丢失;确保正常运转时所需的空余磁盘空间,并且在需要时升级磁盘空间;监视数据库的运行,并确保数据的性能不因一些用户提交了花费时间较多的任务就下降很多。

1.14 解释两层和三层体系结构之间的区别。对Web应用来说哪一种更合适?为什么?

Ans: 在两层体系结构中,应用程序驻留在客户机上,通过查询语言表达式来调用服务器上的数据库系统功能。而在一个三层体系结构中,客户机只作为一个前端并且不包含任何直接的数据库调用。客户端通常通过一个表单界面与应用服务器进行通信。而应用服务器与数据库系统通信与访问数据。对Web应用来说,显然使三层体系结构更好。因为Web应用的访问量很大,客户机直接通过查询语言与数据库系统进行交互可能会出现阻塞(访问量太大),数据更新不及时(高并发引起),数据丢失(大数据量)等问题,通过一个应用服务器,我们可以进行负载均衡、分发等设置,由此来缓解数据库系统的压力。

1.15 描述可能被用于存储一个社会网络系统如Facebook中的信息的至少3张表。

Ans: a. 用户信息表,包含用户id、密码、姓名、生日等信息;

b. 群组信息表,包含群组的名称、创建信息、介绍信息、参与人id等等;

c. 活动信息表,包含公共活动的介绍、时间等信息。

你可能感兴趣的:(数据库系统)