赞
踩
嗨嗨嗨, 来写数据库吧
数据库系统概念 第七版 机械工业出版社
目录
这一章讲述了数据库系统的几个主要的优点。它有哪两个不足之处?
建立一个数据库系统需要更多的知识,钱,技能和时间
数据库的复杂性可能会导致性能的降低
列出Java或C++之类的语言中的类型说明系统与数据库系统中使用的数据定义语言的五个不同之处。
Java/C++ | DDL | |
---|---|---|
创建对象 | 在程序中使用抽象 | 在数据库中创建对象 |
指定一致性约束(包括域约束和参照完整性约束) | 不允许 | 允许 |
授权 | 不支持(只能通过private等保证一个类中的属性不被其他的类访问) | 支持(可以将不同的权限授予不同用户) |
类型 | 支持许多复杂类型 | 只能支持基本类型 |
类内关系 | 允许创建对象和对象的集合 | 注重类型的属性的关系 |
列出为一个企业建立数据库的六个主要步骤。
制作用户需求说明书文档
概念设计
逻辑设计
物理设计
创建 初始化数据库
对于每个需要解决、提供的业务,编写必要的服务器端程序和前端程序。
假设你想要建立一个类似于 YouTube 的视频站点。考虑 1.2节中列出的将数据保存在文件系统中的各个缺点,讨论每一个缺点与存储实际的视频数据和关于视频的元数据(诸如标题、上传它用户、标签、观看它的用户)之间的关联。
问题 | 关联 |
---|---|
数据的冗余和不一致性 | 关联较小, 较少涉及多个表中相同属性的更新 |
数据访问困难 | 数据检索条件多样, 导致检索困难 |
数据孤立 | 影响较小, 因为一般不会对数据进行更新, 而是直接创建新的数据, 即使更新, 格式基本也比较统一 |
完整性问题 | 关联较小 |
原子性问题 | 上传视频时, 需要以原子操作进行上传, 以保证在上传的同时视频相关信息也被上传; 另外, 当出现故障时, 需要恢复操作 |
并发访问异常 | 关联较小, 因为视频很少需要同时被多人修改 |
安全性问题 |
在 Web 查找中使用的关键字查询与数据库查询很不一样。请列出这两者之间在查询表达方式和查询结果方面的主要差异。
Web 查找 | 数据库查询 | |
---|---|---|
查询表达方式 | 通过关键字列表进行查询 | 有特定的数据库查询语言, 并且允许复杂的数据库查询 |
查询结果 | 一个有序的URL列表,以及有关URL内容的信息片段 | 一个表 |
列出四个你使用过的、很可能使用了数据库来存储持久数据的应用
QQ/微信/网易云音乐/哔哩哔哩
列出文件处理系统和DBMS的四个主要区别
都是相互关联的数据集合和一组访问数据程序组成。
DBMS:物理和逻辑访问数据
文件处理系统:物理访问数据
DSMS:被授权的程序可以访问存储的逻辑数据,数据可以被多个程序访问、减少数的冗余;
文件处理系统:一个程序所写的数据可能不能被另外一个程序访问
DBMS设计为更灵活的访问数据(如,查询),文件处理系统则被设计为特定的程序访问数据(如,以编译的程序)
DBMS允许多个用户同时访问相同的数据。
文件处理系统一般允许一个或多个程序访问不同的数据文件,只有在一个文件在两个程序都只有只读权限的时候才可以同时被两个程序并行访问。
解释物理数据独立性的概念,以及它在数据库系统中的重要性。
物理独立性:指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。
重要性:使用用程序与存储在磁盘上的数据相分离,应用程序不依赖于物理模式,因此物理模式改变了它们也无需重写。
列出数据库管理系统的五个职责。对于每个职责,说明当它不能被履行时会产生什么样的问题
与文件管理器的交互
存储在文件中的任何东西都不能被检索
一致性约束
账户余额出现问题...超过范围(过大/过小)
安全性控制
未经授权的用户可以访问数据库,或者被授权访问部分数据库的用户可以访问他们没有权限的部分数据库。
备份和恢复
数据可能会永久丢失,而不是至少以故障前的一致状态可用
并发控制
尽管在每个事务中执行了适当的完整性,但一致性约束可能会被违反。例如,由于同时取款和存款,可能银行余额会出错等等。
请给出至少两种理由说明为什么数据库系统使用诸如SQL这样的声明式查询语言来支持数据作,而不是只提供C或者 C++的函数库来执行数据操作。
命令式:关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。
直观性:命令式语言通常更接近人类思维方式,因此易于理解和编写。
灵活性:可以精确控制计算机的每个步骤,使得在特定情况下可以进行微调和优化。
性能:在某些情况下,命令式编程可以提供更好的性能,因为可以直接控制底层硬件。
函数式:函数式编程主张声明式编程和编写抽象的代码, 用无外部依赖的函数来解决问题
不可变性:函数式编程强调不可变性,避免了许多常见的并发问题,使代码更加稳定。
简洁性:函数式代码通常更加简洁和抽象,减少了副作用,易于测试和维护。
并发性:函数式编程有助于并行化和异步编程,提高了性能和可扩展性。
声明式:以数据结构的形式来表达程序执行的逻辑。它的主要思想是告诉计算机应该做什么, 但不指定具体要怎么做。用户只需描述所需信息,而不用给出获取该信息的具体过程。
简洁性:声明式代码通常更加清晰和简洁,因为它关注“做什么”而不是“如何做”。
可读性:由于强调了代码的表达性,声明式代码更容易阅读和维护。
抽象性:允许开发者使用高级抽象来描述问题,提高了代码的可复用性和可扩展性。
假设两名学生试图注册同一门课程,而该课程仅余一个开放名额。数据库系统的什么部件会防止将这最后一个名额同时分配给这两名学生?
授权和完整性管理器
解释两层和三层体系结构之间的区别。对 Web 应用来说哪一种更合适?为什么?
在两层体系结构中,应用程序驻留在客户机上,通过查询语言表达式来调用服务器上的数据库系统功能。 而在一个三层体系结构中,客户机只作为一个前端并且不包含任何直接的数据库调用。客户端通常通过一个表单界面与应用服务器进行通信。而应用服务器与数据库系统通信与访问数据。 对Web应用来说,显然使三层体系结构更好。因为Web应用的访问量很大,客户机直接通过查询语言与数据库系统进行交互可能会出现阻塞(访问量太大),数据更新不及时(高并发引起),数据丢失(大数据量)等问题,通过一个应用服务器,我们可以进行负载均衡、分发等设置,由此来缓解数据库系统的压力。
列出21世纪头十年开发的、帮助数据库系统管理数据分析负载的两个特性。
Auto-admin
map-reduce程序设计框架
解释为什么NOSQL系统在 21 世纪头十年出现,并将它们的特性与传统的数据库系统做简单对比
原因:大数据技术和Web2.0时代使得传统关系型数据库已无法满足当前的数据库需求
数据模型方面:
传统关系型数据库使用表格的结构来存储数据,数据之间存在严格的关系和固定的模式。数据以行和列的形式组织,并使用预定义的模式(数据库模式)来定义数据的结构。NoSQL数据库采用不同的数据模型,例如键值对、文档型、列族或图形型。这使得NoSQL数据库更适合存储非结构化或半结构化数据,而不需要严格的预定义模式。
可扩展性方面:
传统关系型数据库在处理大规模数据和高并发访问时可能会面临性能瓶颈。通常采用垂直扩展方式(增加服务器硬件的性能)来提高性能。NoSQL数据库通常采用水平扩展方式(分布式架构),通过在多台服务器上分布数据来实现高可扩展性。这使得NoSQL数据库能够处理大量数据和高并发访问。
数据一致性方面:
传统型数据库通常强调ACID事务(原子性、一致性、隔离性和持久性),确保数据的一致性和完整性。但在分布式环境下,维护严格的一致性可能会带来性能开销。NoSQL数据库在分布式环境下更注重柔性事务和最终一致性,允许在一定程度上牺牲一致性来提高性能和可用性。
描述可能被用于存储一个社会网络系统(例如Facebook)中的信息的至少三个表
/*表1: USserInfo 表*/ /*包括用户ID 用户名 用户年龄 用户性别*/ CREATE TABLE UsAerInfo (UID CNHAR(9) PRIMARY KEY, UName CHAR(20), USex CHAR(2), UAge SMALLINT ); /*表2: GroupInfo 表*/ /*包括群号 群名称 群员数目*/ CREATE TABLE GroupInfoG (GID CHAR(9) PRIMARY KEY, GName CHAR(20), MenberNo SMALLINT ); /*表3: Moment 表 (朋友圈)*/ /*包括朋友圈消息ID 朋友圈内容 点赞人数 分享人数*/ CREATE TABLE GroupInfoG (ID CHAR(9) PRIMARY KEY, /*主码*/ Text VARCHAR(500), LikeNo SMALLINT, ShareNo SMALLINT );
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。