数据库系统
这学期的计组,计网,数据库系统、操作系统覆盖面广,知识零碎,概念繁多。为了有效扎实掌握这些基础知识,这学期采用每节课课后总结的方式进行巩固强化,并回答课本上课后提问的方式。以往的方法只是将知识全面整理上网,这种旧做法感觉太过机械。考虑到换另一种方式会不会更加灵活,适应课本和科目特点,同时加入尽可能的实践和练习。
这将是我这学期采用的学习方法,针对这几门课。
Week1:数据库简介(Chap 1)、关系模型(Chap 4)
第一章主要回答了我们为什么要用数据库系统这个问题。内容包括相关基础概念和历史。同时也交代了本书的目的:“帮助大家完成范型改变。”,具体地说就是用一种全局的思路去进行“数据库的设计与实现”。
数据库管理系统(DBMS)的发展经历了三代:
第一代 DBMS(层次模型和网络模型):
- 层次模型:数据以树形结构组织,每个记录类型只有一个父记录类型。
- 网络模型:数据以图形结构组织,一个记录类型可以有多个父记录类型。
- 优点:结构清晰,易于理解和实现。
- 缺点:不够灵活,难以处理复杂的数据关系。
第二代 DBMS(关系模型):
- 关系模型:数据以表格形式组织,每个表格由行和列组成,行表示记录,列表示字段。
- 优点:结构简单,易于理解和使用;支持复杂的查询和事务处理。
- 缺点:在处理大量数据时性能可能不如其他模型。
第三代 DBMS(面向对象模型、对象关系模型等):
- 面向对象模型:支持对象和类的概念,可以表示复杂的数据结构。
- 对象关系模型:结合了关系模型和面向对象模型的优点,支持对象和类的概念,同时保持了关系模型的简单性和易用性。
- 优点:支持复杂的数据结构和操作,具有良好的可扩展性和灵活性。
- 缺点:实现复杂,需要较高的技术支持。
讨论 DBMS 的优缺点:
优点:
- 数据独立性:数据的逻辑结构和物理结构分离,应用程序不需要关心数据的存储细节。
- 数据共享:多个应用程序可以共享同一组数据,提高了数据的利用率。
- 数据完整性:DBMS 提供了数据完整性约束,确保数据的准确性和一致性。
- 数据安全性:DBMS 提供了数据访问控制和加密等安全机制,保护数据免受未经授权的访问和修改。
- 数据并发控制:DBMS 支持多用户并发访问,确保数据的一致性和完整性。
- 数据恢复:DBMS 提供了数据备份和恢复机制,可以在数据损坏或丢失时恢复数据。
缺点:
- 成本高:DBMS 的开发和维护成本较高,需要专业的数据库管理员进行管理和维护。
- 复杂性:DBMS 的实现和使用相对复杂,需要专业的技术人员进行开发和维护。
- 性能问题:在处理大量数据时,DBMS 可能面临性能瓶颈,需要进行性能优化。
- 依赖性:应用程序对 DBMS 的依赖性较高,更换 DBMS 可能需要对应用程序进行大量的修改和调整。
- 安全性风险:虽然 DBMS 提供了安全机制,但仍然可能面临数据泄露和攻击等安全风险。
基本概念:数据库——一组数据,数据库管理系统——管理和控制数据的软件,数据库应用——上层程序
也就是说,我们这门课研究的范围不仅包括底层的模型,管理系统,还包括上层的应用程序,与数据库交互的代码。
要完全理解DBMS的优缺点,需要从DBMS的发展历史入手。数据库的产生是应生产需求而自然形成的。去更好地理解我们为什么要使用数据库,可以从文件系统开始。这是一个我们每天都在用的东西,我们作为单个用户(只考虑自己对文件的取用),在电脑上创建不同的文件夹归档文件,比如说我将名为“编程”的文件夹中,放入了各种编程涉及到的文档,代码。这对我们目前的需求来说是方便且合理的。为了更快拿到这个数据,我在文件夹下编写小程序,帮我快速读取文件拿到数据。这看起来非常高效了。
但当我们站在一个大公司管理者的角度重新审视这种数据管理方式,就不太高效率了。数据库通过集中管理与分离帮我们解决。
这种考虑方式的转变——范型转换,即本书的目的。
从设计思想上,这又是一次面向过程到面向对象的转变,采用更高效的方式解决问题的一种计算机科学思想。以前我们遇到的面向过程编程到面向对象编程,
从原根,阶,同余的讨论到群,环,域的讨论,这都属于我们以前见过的例子。
第四章介绍关系型数据库的核心:关系模型。“关系模型最大的优点就在于其逻辑结构简单。但这种简单的结构却有着可靠的理论基础,这正是第一代DBMS所缺乏的。”重点就是要掌握关系数据模型中的概念术语,为后续的设计做好准备。“这里一步错,后边步步错。”关于主关键字和候选关键字的选取是本章一大考点。
结合关系数据模型,解释下列概念:
(a) 关系:在关系数据模型中,关系是指一组元组的集合,每个元组包含相同数量的属性。关系可以被视为一个二维表,其中行代表元组,列代表属性。
(b) 属性:属性是关系中的一个列,它代表数据的一个特征或字段。每个属性都有一个名称和一个数据类型,用于描述元组中的特定信息。
(c) 域:域是指属性可能取值的集合。例如,如果一个属性是“年龄”,则其域可能是所有非负整数。
(d) 元组:元组是关系中的一行,它代表一个实体或记录。每个元组包含一组属性值,这些值对应于关系中的列。
(e) 内涵和外延:
- 内涵:指的是概念的本质属性,即定义一个概念所必须具备的特征。
- 外延:指的是概念所包含的具体实例或对象的集合。
(f) 维和基数:
- 维:在关系数据库中,维通常指的是一个表中的列数,即属性的数量。
- 基数:基数指的是一个表中的行数,即元组的数量。
说明数学中的关系与关系数据模型中的关系之间的联系。
在数学中,关系通常指的是两个集合之间的联系,这种联系可以是一对一、一对多或多对多的。在关系数据模型中,关系被用来表示数据实体之间的联系,这些联系可以通过外键来实现。数学中的关系理论为关系数据库的设计和实现提供了理论基础,特别是在处理多对多关系和规范化方面。关系数据模型中的操作,如选择、投影和连接,都是基于数学中的关系代数理论发展而来的。
那第三代数据库管理系统就是关系型数据库吗?
(提这个问题是因为以前写爬虫的时候用Redis,MongoDB这种新兴的比较火的非关系型数据库。)
第三代数据库管理系统(DBMS)通常指的是面向对象的数据库管理系统(OODBMS)。面向对象数据库尝试将面向对象编程的概念,如继承、封装和多态性,融入到数据库管理系统中。这种数据库管理系统试图更自然地映射现实世界中的对象和它们之间的关系。
非关系型数据库(NoSQL),又称为非结构化数据库,是与关系型数据库相对的一个概念。非关系型数据库包括多种类型,如键值存储、文档存储、列族存储和图数据库等,它们通常用于处理大规模数据集,提供高可用性和灵活性。
虽然面向对象数据库和非关系型数据库都属于第三代数据库管理系统的范畴,但它们并不是同一个概念。面向对象数据库侧重于将面向对象的概念应用于数据库,而非关系型数据库则侧重于提供不同于传统关系型数据库的存储和查询方式,以适应不同的应用场景和数据模型需求。
总的来说,第三代数据库管理系统包括面向对象数据库和非关系型数据库等多种类型,它们各自有着不同的目标和特点。
超关键字是一个属性或者属性集合,它能够唯一地标识出关系中的每个元组,候选关键字是最小的超关键字。主关键字是选出作为各元组标识的某个候选关键字。一个关系通常都必须有一个主关键字。外部关键字是一个关系中与另一个关系的候选关键字匹配的属性或属性集合。
空代表对一个元组当前取值还不知道或是不可用的属性值。
实体完整性是一种约束,它规定在基本关系中,构成主关键字的属性的值不能为空。引用完整性规定,一个外部关键字的值或者与主关系的某个元组的候选关键字的值相同,或者为空。除了关系完整性,完整性约束还包括要求必须有值、域和多样性约束,其他完整性约束称为一般性约束。
关系的性质:
- 同一关系模式中各关系模式不能重名(表名不重合)
- 每一个单元格必须确切包含一个原子值(不能空)。
- 不存在重复元组(数据不雷同)。
- 每个属性都有不同的名字(列名不重合)
- 同一属性中的各个值都取自相同的域(对于表中的某一列,该列中的所有数据值都必须属于相同的数据类型,并且遵循相同的约束条件。)
- 属性的顺序不重要
注意:以上是关系的性质,但实际的数据库管理软件不一定严格遵守关系模型。
关系模型中的视图是指一个虚关系或称导出关系,它是根据需求由底层基本关系动态导出的。视图提供了一定的安全性,并且允许设计者自定义用户模式。不是所有的视图都可更新。
还是些基础概念,建议多加实践。没有实践也没关系,把一些概念记好,防止以后实践工作中忘了回来返工查概念。
小结:
前边学到,关系模型是一种有效的信息组织方式,并且有着可靠的理论基础。
现在,我们已经确定,我们要以这样的信息组织方式来设计数据库。那么更具体地,如何得到具体的模型?
秉持“会用才是硬道理”的理念,课程进度跳到了Chap12-ER建模,
为了得到这个具体的模型,我们学习ER建模,这是一种建模技术,另一种是规范化的技术在Chap14,15,我们课程将其略过。
得到了具体模型后,为了将其直接设计实施,课程进入Chap16-19:概念数据库设计,逻辑数据库设计,物理数据库设计。
这里书本上的说法叫“方法学”——规定了设计过程每一步需要做的事。我们的课程将这个过程融入DreamHouse的实例讲解中,进行实操演示。
由于是实操演示,课程体验可能感觉很乱。但其顺序和思路基本和书上一致。
Week2:ER建模
这里的难点在于结构化约束的处理方法:
一对一(1:1)联系
多对多(:)联系
多重性的确定与表示……
关注ER模型建立时可能产生的问题:连接陷阱
两类主要的叫做:扇形陷阱和断层陷阱
通过在实操中的报错与解决逐步掌握约束的处理方法, 这样的方法会在后边概念模型(CDM),逻辑模型(LDM)的设计实施中
反复出现与演变,目的都是为了实现最合适的实体-联系。这种处理方法也会出现在期末考题中。
Week3: EER建模-概念数据库模型设计
这节课讲解了具体建出来的ER模型,重点是EER建模中子类,超类,泛化……这种概念与处理方法。
Week4: 逻辑数据库模型设计=>物理数据库模型设计
这节课主要讲解了从CDM到LDM发生的变化和需要手动修改的点,以及其原因。