这是我学习数据库时候的笔记,都是非常简单,非常基础的有关数据库的知识,最近整理一下,希望大家不要蛋蛋我啊,呵呵
数据库学习笔记(一)
——绪论及基本概念
一, 数据:描述事物的符号记录称为数据。
二, 数据库:指长期存储在计算机内的、有组织、可共享的数据集合。
三, 数据库管理系统:数据管理的软件,主要以下功能:
1, 数据定义:DDL(Data Definition Language)。
2, 数据操纵:DML (Data Manipulation Language)。
3, 数据库的运行管理
4, 数据库的建立和维护功能
5, 数据库的接口通讯
四, 数据库系统:在计算机系统中引入数据库后的系统,由以下部分组成:
1, 数据库
2, 数据库管理工具
3, 应用开发工具
4, 应用系统
5, 数据库管理员和数据库用户
五, 数据库管理技术的发展
1, 人工管理阶段:
特点:数据不保存,应用程序管理数据,数据不共享,数据不具有独立性。
2, 文件系统管理:
特点:数据可以长期保存,由文件系统管理数据,数据共享性差,冗余度大,数据独立性差。
3, 数据库系统阶段:
特点:1,数据结构化
2,数据的共享性高,冗余度低,易扩充
3,数据的独立性高
4,数据由DBMS统一管理和控制。
DBMS主要提供以下几个方面的数据控制:
1, 数据的安全性保护
2, 数据的完整性检查
3, 并发控制(多用户使用的协调)
4, 数据库的恢复
六, 数据模型
1, 数据模型的概念:抽象、表示和处理现实世界中的数据和信息,即现实的模拟。
2, 数据模型必须满足的要求:
1,能比较真实的模拟现实世界;
2,容易为人理解
3,便于在计算机上实现
3, 数据模型的层次:
1,概念模型:也称信息模型,按用户的观点来对数据和信息建模,主要用于数据库设计:
1, 主要功能:概念模型用于信息世界的建模。概念模型不依赖于某一个DBMS支持的数据模型。概念模型可以转换为计算机上某一DBMS支持的特定数据模型。
2, 主要特点:
(1)具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识。
(2)应该简单、清晰、易于用户理解,是用户与数据库设计人员之间进行交流的语言。
3, 概念模型的基本概念:
(1) 实体(Entity):客观存在并可相互区别的事物。
(2) 属性(Attribute):实体所具有的某一特性。
(3) 码(Key):唯一标识实体的属性集。
(4) 域(Domain):属性的取值范围。
(5) 实体型(Entity Type)相同属性的实体具有的共同的特征。
(6) 实体集(Entity Set):同型实体的集合称为实体集。
(7) 联系(Relationship)实体之间或实体内部的联系,以下几类:
i. 一对一联系
ii. 一对多联系
iii. 多对多联系(m:n)
iv. 自联系
4,概念模型的表示方法(E-R图):
1, 实体型:用矩形表示
2, 属性:用椭圆表示
3, 联系:用菱形表示。
2,数据模型:主要包括网状模型、曾是模型、关系模型,是按计算机系统的观点对数据建模,主要用于DBMS的实现。
1, 数据模型三要素:
1, 数据结构:
数据结构用于描述系统的静态特性。它是所研究的对象类型的集合。这些对象是数据库的组成部分,有两类,一类研究与数据类型、内容、性质有关的对象。例如关系模型中的域、属性、关系等;另一类研究与数据之间联系有关的对象。
2, 数据操作:反映系统的动态属性。
3, 数据的约束条件:
数据的约束条件是一组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的制约和储存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。此外,数据模型还应该提供定义完整性约束条件的机制。
3,数据模型的分类:
1, 层次模型(Hierarchical Model):
1,定义:
在数据库定义中满足下面两个条件的基本层次联系的集合为层次模型:a.有且只有一个结点没有双亲结点(根结点)
b.以外的其他结点有且只有一个双亲结点。
2,特点:
任何一个给定的记录值只有按其路径查看时,才能显出它的全部意义,没有一个子女记录值能够脱离双亲记录值而独立存在。
3,层次数据模型的约束条件:
进行插入、删除、更新操作时要满足层次模型的完整性约束条件。进行插入操作时,如果没有相应的双亲结点值就不能插入子女结点值。 进行删除操作时,如果删除双亲结点值,则相应的子女结点值也被同时删除。进行更新操作时,应更新所有相应记录,以保证数据的一致性。
4,层次模型的连接结构:
1. 邻接法:按照层次树前序穿越的顺序把所有记录值依次邻接存放,即通过物理空间的位置相邻来实现层次顺序。
2.链接法:用指引元来反映数据之间的层次联系。
4, 层次模型的优缺点:
优点:
1.数据模型比较简单,操作简单。
2.对于实体间联系是固定的,且预先定义好的应用系统,性能较高。
3.提供良好的完整性支持。
缺点:
1.不适合于表示非层次性的联系。
2.对插入和删除操作的限制比较多。
3.查询子女结点必须通过双亲结点。
4.由于结构严密,层次命令趋于程序化。
2, 网状模型(Network Model)
3, 面向对象模型(Object Oriented Model)
4, 关系模型(Realational Model)
(1) 相关概念:
i. 关系:一张二维表
ii. 元组(Tuple):表中的一行为一个元组。
iii. 属性(Attribute):表中的一列为一个属性。
iv. 主码(Key):表中的某个属性组,可以确定一个元组。
v. 域(Domain):属性取值范围。
vi. 分量:元组中的一个属性值。
vii. 关系模式:对关系的描述,一般表示为:
关系名(属性1,属性2,等等)
(2) 优缺点:
优点:
1)关系模型是建立在严格的数学概念的基础上的。
2)无论实体还是实体之间的联系都用关系来表示。对数据的检索结果也是关系(即表),因此 概念单一,其数据结构简单、清晰。
3)关系模型的存取路径对用户透明,从而具有更高的数据独立性,更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。
缺点:
由于存取路径对用户透明,查询效率往往不如非关系数据模型。因此为了提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的负担。
第一部分
七, 数据库系统的结构
1, 模式(Schema):是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及到型的描述,不涉及到具体的值。
2, 三级模式结构,如下图:
3, 逻辑模式:即模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
4, 外模式:也称子模式(Subschema),即用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图。
5, 内模式(Internal Schema):即使存储模式(Storage Schema),数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
6, 二级映象:保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
1, 外模式/模式映象:
当模式改变时,由数据库管理员对各个外模式/模式的映象作相应改变,可以使外模式保持不变,从而应用程序不必修改,保证了数据的逻辑独立性。
2, 模式/内模式映象
当数据库的存储结构改变了(例如采用了更先进的存储结构),由数据库管理员对模式/内模式映象作相应改变,可以使模式保持不变,从而保证了数据的物理独立性。
7, 数据库体系结构:
1, 单用户模式:整个数据库系统,包括应用程序、DBMS、数据,都装在一台计算机上,为一个用户独占,不同机器之间不能共享数据。
2, 主从式结构的数据库系统:指一个主机带多个终端的多用户结构。在这种结构中,数据库系统,包括应用程序、DBMS、数据,都集中存放在主机上,所有处理任务都由主机来完成,各个用户通过主机的终端并发地存取数据库,共享数据资源。
3, 分布式结构的数据库系统:分布式结构的数据库系统是指数据库中的数据在逻辑上是一个整体,但物理地分布在计算机网络的不同结点上。网络中的每个结点都可以独立处理本地数据库中的数据,执行局部应用;同时也可以同时存取和处理多个异地数据库中的数据,执行全局应用。
4, 客户/服务器结构的数据库系统:服务器:网络中某个(些)结点上的计算机专门用于执行DBMS功能,称为数据库服务器。客户机:其他结点上的计算机安装DBMS的外围应用开发工具,支持用户的应用,称为客户机。
工作原理:在客户/服务器结构中,客户端的用户请求被传送到数据库服务器,数据库服务器进行处后,只将结果返回给用户(而不是整个数据)。
8, 数据库系统的组成
1, 硬件:足够大的内存和存储空间;系统要由较高的通道能力
2, 软件:DBMS;支持DBMS的OS;有与数据库接口的高级语言及其编译系统
3, 人员:DBA,系统分析员,数据库设计人员,应用程序员,用户。
八, 数据库库技术的研究领域
1, 数据库理论
2, DBMS的研制
3, 数据库设计
关系数据库
一, 关系数据库的由来
1, 系统而严格的提出关系数据库模型的是美国IBM的E.F.Codd
2, 1970年,E.F.Codd继续完善和发展关系理论。
3, C.J.Data是关系数据库领域中最著名的独立撰稿人,学者和顾问。
二, 关系模型概述
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
1、单一的数据结构关系
关系模型中的数据结构非常单一。实体及实体间的联系都用关系表示,关系就是一张二维表。
2、关系操作
关系模型中常用的关系操作包括。关系操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作方式也成为一次一集合的方式。相应地,非关系数据模型的数据操作方式则为一次一记录的方式。
3、关系的三类完整性约束:实体完整性,参照完整性,用户定义完整性。
三, 关系数据结构及形式化定义
1, 关系
1.域:域是一组具有相同数据类型的值的集合。
2.笛卡儿积:
定义:给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡儿积为:
D1×D2×…×Dn={(d1,d2, …,dn) | di∈Di,i=1,2, …,n}
其中每一个元素(d1,d2, …,dn)叫做一个n元组或简称元组(Tuple)。元组中的每一个值di叫做一个分量(Component)。
若Di(i=1,2, …,n)为有限集,其基数为mi(i=1,2, …,n),则D1×D2×…×Dn的基数M为:mi的积。
3.关系:
定义:D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的关系,表示为:
R(D1,D2,…,Dn)
D1×D2×…×Dn表示的是域上所有可能的组合,在现实生活中很多元组是无意义的数据,而一个关系肯定包含在D1×D2×…×Dn之中,因此在数学上把关系定义为D1×D2×…×Dn的子集。
关系是笛卡儿积的有限子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性。N目关系必有n个属性。
候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该数据组为候选码。
全码:若一个关系有多个候选码,则选定其中一个为主码。主码的诸属性称为主属性。不包含在任何候选码中的属性称为非码属性。关系模式的所有数据组是这个关系模式的候选码,称为全码。
关系可以有三种类型:基本关系、查询表和视图表。
对关系的限定和扩充:
⑴ 无限关系在数据库系统中时无意义的。因此,限定关系数据模型中的关系必须是有限集合。
⑵ 通过为关系的每个列附加一个属性名的方法取消关系元组的有序性。
基本关系具有以下六条性质:
1,列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。
2,不同的列可以出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。
3,列的顺序无所谓,即列的次序可以任意交换。
4,任意两个元组不能完全相同。
5,行的顺序无所谓,即行的次序可以任意交换。
6,分量必须取原子值,即每一个分量都必须是不可分的数据项。
备注:在许多实际关系数据库产品中,基本表并不完全具有这六条性质,例如,有的数据库产品能(如FoxPro)仍然区分了属性顺序和元组的顺序;许多关系数据库产品中,例如Oracle,FoxPro等,它们都允许关系表中存在两个完全相同的元组。
四,关系模式
定义:关系的描述称为关系模式。它可以形式化地表示为:
R(U,D,dom,F)
关系模式通常可以简记为:
R(U)或R(A1,A2, …,AN)
五,关系的完整性
1、实体完整性
实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。
实体完整性规则说明如下:
⑴ 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。
⑵ 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
⑶ 相应地,关系模型中以主码作为唯一标识。
⑷ 主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“不确定”的值。
2、参照完整性
外码定义:设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreign Key),并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。关系R和S不一定是不同的关系。
注意:F不能是关系R的主码,Ks必须是关系S的主码。
参照完整性规则就是定义外码与主码之间的引用规则:
参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
或者取空值(F的每个属性值均为空值);
或者等于S中某个元组的主码值。
3、用户定义的完整性:即是针对某一具体关系数据库的约束条件。
关系数据库
六, 关系代数
关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用对关系的运算来表达查询的。
1,传统的集合运算
并(union),差(difference),交(intersection),广义笛卡儿(extended Cartesian product)
2,专门的关系运算
规定的几个记号。
⑴ 设关系模式为R(A1,A2, …,AN)。它的一个关系设为R。t∈R表示t是R的一个元组。t[Ai]则表示元组t中相应于属性Ai上的一个分量。
⑵ 若A={Ai1,Ai2, …,Aik},其中Ai1,Ai2, …,Aik是A1,A2, …,AN中的一部分,则A称为属性列或域列。t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元组t在属性列A上诸分量的集合。则表示(A1,A2, …,AN)中去掉{Ai1,Ai2, …,Aik}后剩余的属性组。
⑶ R为n目关系,S为m目关系。tr∈R,ts∈S,tr ts称为元组的连接。它是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。
⑷ 给定一个关系R(X,Z),X和Z为属性组。定义当t[X]=x时,x在R中的象集为:
Zx={t[Z] | t∈R,t[X]=x}
3,下面给出关系运算的定义:
1.选择(Selection)
σF(R)={ t | t∈R∧F(t)=’真’}
从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。
2.投影(Projection)
关系R上的投影使从R中选择出若干属性列组成新的关系。记做:
πA(R)={ t[A] | t∈R }
投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列后,就可能出现重复行,应取消这些完全相同的行。
3.连接(Join)
连接也称为 连接。它是从两个关系的笛卡儿积中选取属性间满足一定条件的元组。
连接运算中由两种常用的连接,一种是等值连接,一种是自然连接。
1,为“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡儿积中选取A,B属性值相等的那些元组,集等值连接为:
2,自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。
4.除(Division)
给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影,元组在X上分量值x的象集Yx包含S在Y上投影的集合。除操作是同时从行和列的角度进行运算。
七,关系演算
1, 元素关系演算语言ALPHA:
ALPHA语言主要有GET、PUT、HOLD、UPDATE、DELETE、DROP六条语句,语句的基本格式是:
操作语句 工作空间名(表达式): 操作条件
表达式用于指定语句的操作对象,它可以是关系名或属性名,一条语句可以同时操作多个关系或多个属性。操作条件是一个逻辑表达式,用于将操作对象限定在满足条件的元组中,操作条件可以为空。
1, GET检索操作
2, UPDATE更新操作,步骤如下:
·首先用HOLD语句将要修改的元组从数据库中读到工作空间中
·然后用宿主语言修改工作空间中元组的属性
·最后用UPDATE语句将修改后的元组送回数据库中
3, PUT插入操作,步骤如下:
·首先用宿主语言在工作空间中建立新元组
·然后用PUT语句把该元组存入指定的关系中
4, HOLD带着并发控制的GET语句
5, DELETE删除操作
·用HOLD语句把要删除的元组从数据库中读到工作空间中
·用DELETE语句删除该元组
2, 域关系演算QBE(Query By Example)
最突出的特点是它的操作方式。它是一种高度非过程化的基于屏幕表格的查询语言,用户通过终端屏幕编辑程序以填写表格的方式构造查询要求,而查询结果也是以表格形式显示,因此非常直观,易学易用。
八,关系数据库管理系统:
关系数据库管理系统简称为关系系统,是指支持关系模型的系统。一个数据库管理系统可定义为关系系统,当且仅当它至少支持:
1, 关系数据库(即关系数据结构)。也就是说,从用户观点看,数据库是由表构成的,并且系统中只有表这种结构。
2, 支持选择、投影和(自然)连接运算。对这些运算不要求用户定义任何物理存取路径。
按照E.F.Codd的思想,依据关系系统支持关系模型的程度不同,可以把关系系统分为四类:
1,表式系统。
这类系统仅支持关系数据结构(即表),不支持集合级的操作。表式系统实际上不能算关系系统。倒排表列(Inverted list)系统就属于这一类。
2,(最小)关系系统。
即上面定义的关系系统,它支持关系数据结构和选择、投影、连接三种关系操作。许多微机关系系统如FoxBASE、FoxPro等就属于这一类。
3,关系上完备的系统。
这类系统支持关系数据结构和所有的关系代数操作(功能上与关系代数等价)。目前许多中大型关系系统如DB2、 ORACLE等就属于这一类。
4,全关系系统。
这类系统支持关系模型的所有特征,特别是数据结构中域的概念,实体完整性和参照完整性。虽然DB2、 ORACLE等系统已经接近这个目标,但到目前为止尚没有一个系统是全关系系统。
尽管不同的关系系统对关系模型的支持程度不同,但它们的体系结构都符合三级模式结构,提供了模式、外模式、内模式以及模式与外模式之间的映象、模式与内模式之间的映象。表就是关系系统的模式,在表上面可以定义视图,这就是关系系统的外模式,关系系统通常都提供了定义视图即外模式的语句。内模式则是实际存储在磁盘或磁带上的文件。