目录
1.1 数据库系统概述
1.1.1 数据、数据库、数据库管理系统、数据库系统
一、数据(Data)
二、数据库(DataBase,简称DB)
三、数据库管理系统(DateBase Management System,DBMS)
四、数据库系统(DataBase System,DBS)
1.1.2 数据管理技术的产生与发展
一、人工管理阶段
二、文件系统阶段
三、数据库系统阶段
1.2 数据模型
1.2.1 两类数据模型
1.2.2 数据模型的组成要素
一、数据结构
二、数据操作
三、数据的完整性约束条件
1.2.3 概念模型
一、信息世界中的基本概念
二、两个实体之间的联系
三、两个以上实体型之间的联系
四、单个实体型内的联系
五、概念模型的一种表示方法:实体-联系图(E-R图)
六、一个实例
1.2.4 最常用的数据模型
1.2.5 关系模型
一、关系数据模型的数据结构
二、关系数据模型的操纵与完整性约束
三、关系数据模型的优点
1.3 数据库系统结构
1.3.1 数据库系统模式的概念
1.3.2 数据库系统的三级模式结构
一、模式
二、外模式
三、内模式
1.3.3 数据库的二级映像功能与数据独立性
一、外模式/模式映像
二、模式/内模式映像
1.4 数据库系统的组成
一、硬件平台及数据库
二、软件
三、人员
数据是数据库中存储的基本对象。
【定义】描述事物的符号记录称为数据。描述事物的符号可以是数字,也可以是文字、图形、图像、声音、语言等,数据有多种表示形式,它们都可以经过数字化后存入计算机。
数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。
ps:
有组织:不是杂乱无章的,比如说某一个学生的信息,第一个是姓名,第二个是学号,第三 个是性别等等,它是按照某种顺序排列的;同时,它存在计算机的C盘还是D盘等等,也是有组织的,这需要数据库管理系统来申请分配一定的存储空间。
可共享:存储到数据库里面的程序,可以有多个程序调用。比如说大学的教务系统,有选课信息,图书信息,宿舍信息等等。
数据库具有永久存储、有组织和可共享三个基本特征。
ps:
一个工厂,要生产一个冰箱,那需要很多零配件,这些可以看成不同的数据;这些零配件购买来以后需要放在仓库里面,那么这个仓库可以看做我们的数据库;这些零件放在仓库里面不能杂乱无章的放,需要有一定的规章制度来放,仓库管理员接收这些零件,按一定的顺序有组织的摆放零件,以后想需要那个零件就很容易的找出,而数据库管理系统的作用就相当于仓库管理员的作用。
数据库管理系统的主要功能包括:
1.数据定义功能
DBMS提供数据定义语言(Data Definition Language,DDL语言),用户通过它可以方便的对数据库中的数据对象进行定义。
2.数据组织、存储和管理
ps:
组织:怎样组织比较方便、高效。
存储:放到哪里,C盘还是D盘等。
管理:怎么调度。
DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、数据的存取路径等。
3.数据操纵功能
DBMS提供数据操纵语言(Data Manipulation Language,DML语言),用户可以使用DML操纵数据,实现对数据的基本操作,如 查询、插入、删除和修改 等。
ps:
我们建了一个学生信息系统,建立了某一个班级的数据表,有新的同学来了就要插入一个新同学信息进去;有的同学转专业了就要从这个班级吧他删除掉;大家原来是大一同学,过了一年以后变成了大二同学,数据就要修改;我们也可以从中查询张三这个同学的个人信息等。
4.数据库的事务管理和运行管理
数据库在建立、运用和维护时由DBMS统一管理,统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用,以及发生故障后的系统恢复。
ps:
安全性:通过记录一些日志,通过赋予一些用户不同的权限来保证安全性。
完整性:比如说有一些数据如年龄需要输入整数,就只能输入整数,不能输入小数,来保证它的完整性。比如说张三的学号在这张表上是001,那么在其他的表上就不能是其他的学号,这也需要保证其完整性。
多用户对数据的并发使用:有多个用户同时访问一张数据表,那么要保证给每一个用户的数据是正确的。
5.数据库的建立和维护功能
数据库初始数据的输入、转换功能、数据库的转储,恢复功能,数据库的重组织功能和性能监视、分析功能等。
数据库系统一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。
ps:
以学生成绩系统为例;
数据库管理员要利用数据库管理系统建立一个数据库,里面有一张成绩表,里面有同学的个人信息;软件开发出了一个功能,可以由教师操作程序录入学生的成绩;录入成绩以后,程序就会把数据交给数据库管理系统,数据库管理系统再根据自己工作的方式把数据写到数据库里面;最后,就把同学的成绩录到了数据库里面。
数据管理技术经历了 人工管理、文件系统、数据库系统3个阶段。
人工管理数据具有如下特点:
缺点:数据的逻辑结构或物理结构发生改变后,必须对应用程序作相应的修改,这就加重了程序员的负担。
用文件系统管理数据具有以下特点:
缺点:
ps:
冗余度:重复、多余。
优点:如果一个数据库里面的数据 被修改 ,或者出现了错误,另一个可以当成它的备份。
缺点:冗余度太大的话,数据库的容量就大;或者在一些数据更新的时候出现一些问题,比如说 张三 改名了,这个时候数据库里面 冗余度大,有多个 张三 就需要修改多次,这样工作量就会增加,还容易出错。
用数据库系统管理数据具有如下特点:
【定义】数据模型 也是一种模型,它是对现实世界数据特征的抽象。数据模型就是现实世界的模拟。
ps:
沙盘就是对楼层的模拟,航模就是对航天器的模拟。
数据模型应满足三方面要求:
根据模型应用的不同目的,可分为两类:
第一类是概念模型。
概念模型 也称信息模型,它是按用户的观点对数据和信息建模,主要用于数据库设计。
第二类是逻辑模型和物理模型。
ps:
数据模型通常由 数据结构、数据操作 和 完整性约束 三部分组成。
数据结构描述数据库的组成对象已经对象之间的联系(是什么样的逻辑关系:层次模型、网状模型、关系模型等等)。数据结构 是 所描述对象类型的集合,是对系统 静态特性 的描述。
数据库主要有 查询 和 更新(包括 插入、删除、修改)两大类操作。数据操作 是对系统 动态特性 的描述。
数据的完整性约束条件是一组完整性规则。
【例】在关系模型中,任何关系必须满足 实体完整性 和 参照完整性 两个条件。
ps:
实体完整性:每一个数据都应该设置一个关键字,以唯一确定一条记录,如身份证号,学号,课号等等。
参照完整性:比如说,学号是001号的学生张三在A表上叫 张三,那么在B表上也要叫 张三等等。
概念模型 是 现实世界 到 机器世界 的一个中间层次,表现为:
概念模型要求:
ps:
设计这些基本概念的根本目的:把我们现实世界当中的一些具体的事例、情况抽象成一个模型,然后数据库管理员会根据这个模型建立数据库,建表。
1.实体
客观存在并可以相互区别的事物称为实体。实体 可以是 具体的事、物,也可以是 抽象的概念或联系。
【例】一个职工、一个学生、一个部门、一门课、学生的一次选课等都是实体。
2.属性
实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。
【例】学生实体 可以由学号、姓名、性别、出生年月日、所在院系、入学时间等属性组成。(20100124666,张三,20000606,计算机学院,2008)这些属性组合起来表征了一个学生。
3.码
唯一表示实体的属性集称为码。
【例】学号是学生实体的码。
4.域
域是一组具有相同 数据类型 的值的集合。属性的取值范围来自某个域。
【例】性别的域为(男,女);若教授的退休年龄是60岁,教授在职的话,年龄的域小于60岁并且是整数;考试的成绩满分是100分,那么这个成绩的域是[0,100]。
5.实体型
具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。
【例】学生(学号、姓名、性别、出生年月日、所在院系、入学时间)就是一个实体型。
ps:
张三、李四、王五等学生都有 学号、姓名、性别、出生年月日、所在院系、入学时间 等属性。
6.实体集
同一类型实体的集合称为实体集。
【例】 全体学生就是一个实体集。
7.联系
在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反应为实体(型)内部的联系和实体(型)之间的联系。
ps:
学生里面有班长,班长是学生的一部分,班长又在管理学生,学生与学生之间也存在着一定的联系;
学生是一个实体,老师是一个实体,老师与学生之间存在一个 教与学 之间的联系;
学生是一个实体,课程是一个实体,学生和课程之间有一个 选修 的联系;
实体内部的联系通常是指组成实体的各属性,实体之间的联系通常是指不同实体集之间的联系。
1. 一对一联系(1:1)
如果对于实体集A中的每一个实体,实体集B中 至多 有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有 一对一联系,记为1:1 。
ps:
即:实体集A与实体集B是一一对应的关系。
【例】学校里面,一个班级只有一个正班长,而一个班长只在一个班级中任职,则班级与班长之间具有一对一联系。
2. 一对多联系(1:n)
如果对于实体集A中的每一个实体,实体集B中有n个实体(n>=0)与之联系;反之,对于实体集B中的每一个实体 ,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n。
ps:
一对一联系是一对多联系的特例。
【例】一个班级中有若干名学生,而每个学生只在一个班级中学习,则班级与学生之间有一对多联系。
3. 多对多联系(m:n)
如果对于实体集A中的每一个实体,实体集B中有n个实体(n>=0)与之联系;反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m>=0)与之联系,则称实体集A与实体集B有多对多联系,记为m:n。
ps:
一对多联系是多对多联系的特例。
【例】一门课程同时有若干个学生选修,而一个学生可以同时选修多门课程,则课程与学生有多对多的联系。
两个以上实体型之间也存在着一对一、一对多、多对多联系。
若实体型E1,E2,...,En之间存在联系,对于实体型Ei(j=1,2,...,i-1,i+1,...,n)中的给定实体,最多只和Ei中的一个实体相联系,则说Ei与E1,E2,...,E i-1, E i+1,...,En之间的联系是一对多的。
【例】对于课程、教师与参考书3个实体型;如果一门课程可以由若干个教师讲授,使用若干本参考书,而每一个教师只讲授一门课程,每一本参考书只供一门课程使用;则课程与教师、参考书之间的联系是一对多的。
【例】有3个实体型:供应商、项目、零件。一个供应商可以供给多个项目多种零件,而每个项目可以使用多个供应商供应的零件,每种零件可由不同供应商供给。由此可以看出 供应商、项目、零件 三者之间是多对多的联系。
同一个实体集内的各实体之间也可以存在一对一 、一对多、多对多的联系。
【例】职工实体型内部具有领导与被领导的联系,即某一职工(干部)“领导”若干名职工,而一个职工仅被另外一个职工直接领导,因此这是一对多的联系。
ps:
一个部门有10个职工,其中一个职工是部长,部长领导剩下的9个职工,那么这个部长有其他职工的所有属性(有工号啥的),那么这些就构成了一对多的联系。
ps:
可以把现实的一些需求,或者现实世界当中的一些实体和实体之间的联系通过E-R图表示出来,然后在设计数据库的时候根据E-R图把它设计成一个二维表。然后数据库管理员可以根据E-R图变成实际数据库里面的存储的数据等。
E-R图提供了表示实体型、属性和联系的方法。
实体型:用矩形表示,矩形框内写明实体名。
属性:用椭圆形表示,并用无向边将其与相应的实体型相连接起来。
【例】学生实体具有学号、姓名、性别、出生年份、系、入学时间等属性。
联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1,1:n,或 m:n)。
【注意】如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来。
【例】如果用“供应量”来描述联系“供应”的属性,表示某供应商供应了多少数量的零件给某个项目。那么这3个实体及其之间联系的E-R图如下。(当然,供应商、项目、零件自己的属性把省掉了;这个主要侧重的是 联系 自身所有的属性)。
用E-R图来表示某个工厂 物资管理 的概念模型。
物资管理涉及的实体有:
实体之间的联系如下:
完整的E-R图:
目前,数据库领域中 最常用的逻辑数据模型有:层次模型、网状模型、关系模型、面向对象模型、面向关系模型。(重点研究的是:关系模型——表格)。
关系:一个关系对应通常所说的 一张表, 如下表中的这张学生登记表。
元组:表中的一行即为一个元组
属性:表中的一列即为一个属性,给每一个属性起一个名称即为属性名。
【例】下表有6列,对应6个属性(学号、姓名、年龄、性别、系名和年级):
学号 | 姓名 | 年龄 | 性别 | 系名 | 年级 |
2005004 | 王小明 | 19 | 女 | 社会学 | 2005 |
2005006 | 黄大鹏 | 20 | 男 | 商品学 | 2005 |
2005008 | 张文斌 | 18 | 女 | 法律 | 2005 |
... | ... | ... | ... | ... | ... |
码:也称码键。表中的某个属性组(某一列),它可以唯一确定一个元组;如上表中的学号,可以唯一确定一个学生,也就成为本关系的码。
域:属性的取值范围,如人的年龄一般在0~150岁之间。
分量:元组中的一个属性值。
关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,...,属性n)。 如:学生登记表(学号,姓名,年龄,性别,系名,年级)。
【例】:学生、课程、学生与课程之间的多对多联系在关系模型中可以如下表示:
学生(学号,姓名,年龄,性别,系名,年级)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
ps:
选修 关系中,学号 来自于 学生,课程号 来自于 课程,它们之间联系的属性是 成绩。
关系数据模型的操作主要包括查询、插入、删除和更新数据,这些操作必须满足关系的完整性约束条件。
关系的完整性约束条件包括三大类:
ps:
实体完整性:给生活中的实体 编一个码,用来可以唯一确定这个实体(当然,找的 属性 可能不止一个)。
参照完整性:实体里面的属性要 参照 另外一个实体里面的属性。比如说,上面的 例题 选修 里面的 学号 要参照 学生 里面的 学号,学生 里面的 学号 有一个001的话那么 选修 里面的 学号 肯定也有一个001。
用户定义的完整性:用户自己对属性的值进行定义。
ps:
1.下一章的关系运算之类的
2.关系模型是一张二维表,数据存储的时候是一张二维表,经过操作出来以后的结果也是一张二维表。
3.透明:只管用这个数就可以了,不用管这个数是怎么放的,这个数是放到了哪里。(通过 三级模型,两级映射做到的)。
模式 是数据库中 全体数据的 逻辑结构和特征 的描述,同一个模式可以有很多实例。
【例】在学生选课数据库模式中,包含学生记录、课程记录、学生选课记录。则2003年有一个学生数据库的实例,该实例包括了2003年学校中所有学生的记录(如果该校有10000个学生,则有10000个学生记录)、学校开设的所有课程的记录和所有学生选课的记录。
ps:
模式 就是一个非常抽象的概念 ,他应该包括xxx,xxx,xxx,...
比如说一个人有眼睛、耳朵、嘴巴,这就是他的一个模式;但是一个人具体到有什么样的眼睛、耳朵、嘴巴,是大的还是小的,是圆的还是方的,我们不知道,这就是具体的实例了。
数据库系统的三级模式结构是指数据库系统由外模式、模式和内模式三级构成。
ps:
外模式:把数据库里面的数据根据用户的需求反映给用户。比如说张三查成绩,数据库返给用户的成绩:张三的成绩是90。用户在看数据的时候,只看到了一个人的所需数据。
模式:具体数据库里面的数据怎么存储的。比如说查成绩,这个成绩可能是在数据库里以一张二维表的形式存储。
内模式:数据库里面有非常多的数据,那么实际中在物理硬盘中是怎么存的,是存在C盘还是D盘,在那个文件夹里面存的。
由此可以看出,这三级模式是层层递进的。
两个模式之间的相互转换:
模式 与 内模式:想要看学生成绩的二维表,数据库管理系统会去所存放着的硬盘里面读取这个数据,内模式 和 模式之间有一个相互转换,这个就叫做 内模式到模式的映像。在数据库里面插入了李四的成绩,保存到了D盘,这个就是 模式到内模式的映像;第二天想看这个表,计算机就把D盘的数据掉到内存里面,数据库管理系统就展现到面前,这个就是内模式到模式的映像。
外模式 与 模式:考完试以后老师需要录入成绩,老师需要登录一个网页,把成绩导入进去,这个是外模式到模式的映像,用户查成绩的时候,数据库里面的成绩就被你读取了,这个是模式到外模式的映射。
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
它是数据库系统模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的应用开发工具及高级程序设计语言(如C,COBOL,FOR-TRAN)无关。
外模式也称子模式或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用相关的数据的逻辑表示。
【注意】
内模式也称存储模式,一个数据库只有一个内模式。它是数据物理结构存储方式的描述,是数据在数据库内部的表示方式。(就是存储在C盘、D盘还是哪个位置)。
数据库系统的三级模式是对数据的3个抽象级别,它把数据的具体组织留给DBMS管理,使用户能逻辑地抽象地处理数据,而不必关心数据在计算机中的具体表示方式和存储方式。
数据库管理系统在这三级模式之间提供了两层映像:
外模式/模式映像
模式/内模式映像
两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
模式描述的是数据的全局逻辑结构,外模式描述的事实数据的局部逻辑结构。
当模式改变时,由数据管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。
【例】当数据库的存储结构改变了(例如选用了另一种存储结构),由数据库管理员对 模式/内模式映像 作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性。
ps:
比如说以前是存储在D盘的A文件夹,想把A文件夹里面的数据导入到B文件夹里,数据库管理员不必关心存储到哪里的,是怎样存储的(文件、压缩等方式)。
数据库系统一般由数据库、数据库管理系统(及其开发工具)、应用系统和数据库管理员构成。
硬件资源要求:
数据库系统的软件主要包括:
开发、管理和使用数据库系统的人员主要是:数据库管理员、系统分析员和数据库设计人员、应用程序员和最终用户。不同的人员涉及不同的数据抽象级别,具有不同的数据视图,如下图:
1.数据库管理员(DataBase Administrator,DBA)
需要有专门的管理机构来监督和管理数据库系统。 DBA则是这个机构的一个(组)人员,负责全面管理和控制数据库系统。具体职责包括:
2.系统分析员和数据库设计人员
系统分析员负责应用系统的需求分析和规范说明,要和用户及DBA相结合,确定系统的硬件软件配置,并参与数据库系统的概要设计。
数据库设计人员负责数据库中数据的确定,数据库各级模式的设计。
3.应用程序员
应用程序员负责设计和编写应用系通过的程序模块,并进行调试和安装。
4.用户
这里用户是指最终用户。最终用户通过应用系统的用户接口使用数据库。