提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
本篇文章内容选自《数据库系统概论》,主要参考王珊、杜小勇、陈红编著的版本,同时结合黑皮书进行补充。封面镇楼。
补充:为满足部门小白的学习需要,将黑皮书和第五版的pdf放到网盘里面了:
链接:https://pan.baidu.com/s/1dqe_FsY258-TSFClyCw6KA
提取码:wpsa
(第6版博主也没有pdf,从学校这边买的教材)
一、数据库相关概念
1.与传统方法(计算机问世之后)对比
(1)文件处理系统
在20世纪60年代,文件处理系统是传统的操作系统所支持的。如:在系统中增加新的学生、教师和课堂;为课程注册学生并产生花名册等等。但这种系统中存储信息有以下弊端:
1、数据的冗杂和不一致。冗杂指的是相同的信息在不同的地方重复出现,导致空间被浪费。不一致则是同一个数据但有不同的副本。举例:小明是一个天才,他同时报名了家里蹲大学的音乐系和数学系,因此,音乐系和数学系的文件里面都有一份关于小明的档案(冗杂),有一天,小明不想读书了,于是像学校申请退学,但他是向数学系申请的,于是数学系的文件里面显示小明退学了,但音乐系的文件里面小明还是他们的在读学生(不一致)。
2、数据独立性弱,访问困难。独立性弱指的是当逻辑结构改变时,文件结构也必须跟着改变,不能拥有独立的主权(bushi)。访问困难指的是在独立性弱的条件下,如果提出一些设计者没有考虑到的需求,那么就无法进行访问,除非你把设计师喊回来再写一份。
(2)数据库系统
基于上古手段(计算机问世之前保存文件手段)和传统手段在使用中暴露的问题,我们新设计的数据库系统具有了以下几个特点:
1、整体数据的结构化。整体数据的结构化指的是数据库中的数据不再是仅仅针对某一个应用,而是面向整个体系(组织、企业)的多种应用需求。即用十分严谨的联系将组织或企业内的数据相互交连。
2、数据的共享性强,冗余度低且易于扩充。由于数据可以被从多方接入,因此减少了数据冗余的风险,同时大家都可以接入这个数据也使得在扩写数据时不需要进行中间商赚差价。
3、数据的独立性强。独立性分为物理独立性和逻辑独立性。物理独立性是指当存储结构改变时,不需要改变应用程序就可以正常使用。逻辑独立性是指数据库的逻辑结构(设计思想)改变时用户程序也可以不变。对于独立性不能理解可以看三级模式结构部分。
4、数据的安全性问题。之前提到了共享性强的优点,因此为了保护数据不被用心险恶的间谍更改,每个用户只能按规定对部分数据进行使用和处理。
5、数据的完整性检验。由于博主还没学到那里,只能用浅薄的见解稍微解释。数据库管理系统对数据进行一定条件的约束,以保证数据符合规范,正确并有效。
6、数据的原子性。当数据在传输的时候,你可以将这个过程理解为将一个球从管道这一头推到另一头,如果这时候系统发生故障,也就是管道崩塌,你是留在里面被管壁砸死还是回到入口处就体现了原子性了。众所周知,在以前的认识里,原子是不可分的最小单位(其实我认为应该喊量子性)。数据在传输过程中也是不可分的,即不会在传输过程中遭受意外丢失部分数据。
7、程序的并发控制。当多个用户的并发进程同时存取、提前数据时可能会相互干扰导致得到错误的结果。因此要对多用户的并发操作加以控制,以保证一个用户事务的执行不受别人影响。
2.相关概念介绍
(1)数据
数据(data)是数据库中存储的基本对象。描述事物的符号记录称为数据。数据可以是数字、文字、图形、图像、音频、视频等。对于数据而言,其含义称为数据的语义,数据与其语义是不可分的。例如:给你一个数字:18,你可以理解为18分,可以理解为18°,可以理解为18cm,也可以理解为18kg,因此,对一个确定的数据,我们要根据其语义来解读其内容。
(2)数据库
数据库(database,DB)是长期存储在计算机内有组织、可共享的大量数据的集合,简单理解就是存放数据的仓库。
(3)数据库管理系统
数据库管理系统(database management system,DBMS)是位于用户和操作系统之间的数据管理软件,可以理解为管理数据库的员工。具有数据定义功能(data definition language,DDL)(对数据进行定义,作用可类比python的def),数据操纵功能(data manipulation language,DML)(实现查询、插入、删除和修改等功能,可理解为函数的作用)等功能。
(4)数据库系统
数据库系统(database system,DBS)是由DB、BDMS、应用系统和数据库管理人员(database administrator,DBA)组成的存储、管理、处理和维护数据的系统。是包括管理系统以内各种系统的大系统。
二、数据建模
数据建模首先要建立概念模型,然后将概念模型转换为数据模型。
1.概念模型
(1)概念简述
概念模型是现实师姐到信息世界的第一层抽象,可以看成是现实世界到机器世界的一个中间层次。其中包含了一些必须掌握的概念:
1)实体(entity):客观存在并可相互区别的事务。如:一个职工、一个学生、一个部门、一门课等。
2)属性(attribute):实体所拥有的某一特性。如:姓名,性别,年龄,学历。多种属性的集合可以构成一个实体。
3)码(key):唯一标识实体的属性。如对于学生来说,“学号”是key,对于中国人来说,“身份证号”是key。
4)实体类型(entity type):通过实体名以及构成实体的各种属性来抽象实体这个概念,就可以得到实体类型了。
5)实体集(entity set):同一个实体类型的实体的集合就是一个实体集。如全体学生是一个实体集。
6)联系(relationship):分为实体内部间属性的联系和实体间的联系。内部联系如国籍和籍贯,实体间联系如卡车与国际车型指标。
(2)E-R模型
实体之间的联系有1:1,1:n,m:n三种类型。其中m:n类型下有一种经典模型:实体—联系模型(entity-relationship model),简称E-R模型。其构成的E-R图可用下面两张来理解。
E-R模型远不止这么简单,其中较为典型的是ISA联系、基数约束和Part-of联系,由于第6版没有这部分内容,博主在第5版找到一些讲解,下面进行非常非常简单的介绍。
ISA联系(is a)是一种父类与子类之间的联系。它有个很牛的特性,就是子类能够继承父类的所有属性。如研究生是学生的子类,本科生也是学生的子类,他们都可以继承学生的属性。
基数约束则是规定参与联系的每个实体之间可以在联系中出现的最少次数和最多次数。
Part-of联系是部分联系。即两个实体之间存在着包含关系。
2.数据模型
(1)层次模型
在层次模型中,数据结构的单位是基本层次联系(两个记录之间一对一或一对多的联系)
其特点有:1)有且只有一个结点没有双亲,2)根以外的其他结点有且只有一个双亲。整个模型呈现出层次感,从上到下十分清晰。
(2)网状模型
网状模型是对层次模型的一个改良,去掉了层次模型的两个特点也是缺点,允许存在两个结点间的多种联系(复合联系),图b与图c能十分直观的看出这个改良点。
其特点为:1)允许一个以上结点没有双亲,2)一个结点也可以有多个双亲。
马克思告诉我们,世界是复杂联系的,联系又是多样的。因此网状模型这种层层叠叠多种联系的模型能够更加客观真实地描述我们的现实世界(特别是中国的人情社会)。
(3)关系模型
关系模型相比较层次模型和网状模型,它更依赖与严格的数学概念。在数据库中,我们认为一个关系就是一个二维表,其中的每一行是一个元组,每一列是一个属性,二维表中的每个单元格是码,码从域中提取出来,也可以理解为域是所有码的集合。我们提取出某一行,里面的任一一个单元格是一个分量。而一个二维表所体现的关系就是一种关系模式。
关系必须是规范化的,不然你父亲就要喊你爸爸了。在一定规范条件下关系才能成立,其中最基本的一条是关系的每一个分量必须是一个不可分的数据项。这里的不可分不只是说在域中能不能再分下去,而是你的关系在理论上是否已经不可再分了。典型的例如联系方式有qq、微信、电话、邮箱等,这就不是 规范化的关系。
3.数据模型三要素
(1)数据结构
数据结构描述数据库的组成对象以及对象之间的联系,是对所描述对象类型的集合,是对系统静态特性的描述。数据库系统中人们通常会按照其数据结构的类型来命名数据模型。
(2)数据操作
数据操作是对数据库中各种对象的值允许执行的操作的集合。主要是查询和更新两大类操作。
(3)完整性约束
完整性约束是一组完整性规则,可以理解为对数据库数据形式内容的一种约束条件。
三、数据库系统的三级模式结构
1.三级模式结构
(1)模式
模式是用户可以看到的公共数据视图,是一种对型的描述。如这个人是白种人,是黄种人,这是对型的描述,而五官精美,手指修长,眼睛狭长是对内容的描述。模式又叫做逻辑结构,是相对稳定的。一个数据库对应一个模式,根据DDL语言严格定义模式。
(2)外模式
外模式也叫子模式或用户模式,是数据库对外提供服务的窗口。不同的用户可能有不同的外模式,也可能有相同的外模式。外模式的设置是数据库保证其安全性的体现,不同的用户有不同的外模式使其能够使用和更新的数据。需要注意的是,一个应用程序只能有一个外模式(你的管理员页面肯定不会弹出游客页面吧)。
(3)内模式
内模式也叫物理模式或存储模式。一个数据库只有一个内模式。它是对数据物理模式和存储方式的描述,是内部数据的组织方式。可以理解为你玩lol时背后的数据本质。
2.数据库的两级映射
(1)外模式/模式映像(外模式在前面)
对于每个外模式,都有一个外模式/模式映象来定义该外模式与模式之间的对应关系。可以理解为函数中f将x映射到y上的作用,是外模式与模式的一个桥梁。外模式决定了应用程序,而模式以及一个外模式/模式映像决定一个外模式,当模式改变时,通过DBA调整外模式/模式映像,可以确保应用程序不变(可以理解为x直接决定y,而g(z)直接决定x,当z改变时只要调整函数g使z总能映射为x就行)因此,外模式/模式映像保证了数据与程序的逻辑独立性,即数据的逻辑独立性。
(2)模式/内模式映像(内模式在后面)
数据库只有一个模式,只有一个内模式,因此模式/内模式映像是唯一的,定义了全局逻辑结构(模式)与存储结构(内模式)之间的关系。当内模式改变时,DBA通过调整模式/内模式映像使模式不变(可参考外模式例子)因此,模式/内模式映像保证了数据与程序的物理独立性,即数据的物理独立性。
总结
数据库管理系统是一个非常庞大的系统,它一直在发展完善。在处理数据时我们会建立数据模型,其中要借助概念模型的帮助。而数据库系统本身的三级模式结构也在一定程度上保证了数据的独立性和安全性。
以上是博主对书本第一章内容的简单概括,如有错误,还请纠正。