数据库是一门研究数据管理的技术,它开始于本世纪60年代,经过了30多年的发展,已形成理论体系,成为计算机软件的一个重要分支。这里我们把这门课程分成两部分来学习:部分一:数据库的原理篇
这一章我们主要是学习数据库管理系统的基本概念及一些有关的概念。
信息、数据和数据处理概念
信息与数据数据:数据库系统研究和处理的对象,本质上是对信息的一种符号化表示。信息:现实世界各种事物的存在特征、运动形态以及不同事物间的相互联系等因素在人脑中的抽象反映、进而形成概念。注意:数据与信息是分不开的,二者既有联系又有区别,因此我们在学习的时候要弄清二者之间的联系与区别。
数据是信息的载体,信息是数据的内涵
数据处理数据处理:就是数据的收集、整理、组织、存储、查询、维护和传送等各种操作,这些是数据处理的基本环节,是任何数据处理任务必有的共性部分。下面我们扼要的介绍一下数据管理技术的发展数据管理技术发展大体上可分为三个阶段:自由管理阶段(50年代)文件系统阶段(60年代)数据库阶段(60年代后期)
数据库系统体系结构数据库系统有着严谨的体系结构。现在世界上有很多的数据库在运行,其类型和规模可能相差很大,但是它们的体系结构是大体相同的。美国国家标准委员会所属标准计划和要求委员会(StandardsPlanningAndRequirementsCommitee)在1975年公布了一个关于数据库标准报告.提出了数据库的三级结构组织,也就是SPARC分级结构。三级结构对数据库的组织从内到外分三个层次描述,分别称为内模式、概念模式和外模式。其中概念模式又称为模式。事实上,三级模式中,只有内模式才是真正存储数据的,而模式和外模式仅是一种逻辑表示数据的方法,但却可以放心大胆地使用它们,这是靠DBMS的映射功能实现的。这三中模式之间存在两种映射:外模式----模式之间的映射,它把用户数据库与概念数据库联系起来了。模式----内模式之间的映射,它把概念数据库与物理数据库联系起来了。数据库有两类用户,一是应用程序员,二是终端用户。其中终端用户只能对UWA(UserWorkArea)中的数据进行处理,其数据是DBMS根据用户的请求装进去的。
数据模型是数据库的框架,它形式化地描述了数据库的数据组织形式,它还是定义数据库的依据。这一章,我们主要学习数据模型,然后学习模型化的方法:
数据模型问题:什么是数据模型呢?它又具有什么功能呢?答案:数据模型是客观事物及其联系的数据描述。数据模型应具有描述数据和数据联系两方面功能。数据的描述就是指出:模型中包含那些记录类型,并对记录类型进行命名;指明各个记录类型由那些数据构成,并对数据项进行命名,每个数据项均需指明其数据类型和取值范围。数据间联系的描述就是指明:各个不同记录间所存在的联系和联系方式。实体联系模型问题:什么是实体模型呢?答案:数据模型本质上是"信息模型"的数据化表示。信息模型又称"实体联系模型",是客观事物及其自然联系在人脑中所形成的概念。问题:实体模型和数据模型的关系是什么呢?答案:从实体模型到数据模型要经历三个领域的演变过程:
现实世界→信息世界→数据世界
在这三个世界领域中,人们沿用不同的名词术语,下面我们来学习一些常用的术语。实体与属性这是信息世界中广泛使用的两个术语。实体:现实世界任何可相互区别的事物,不论是实际存在的东西,还是概念性的东西,或是事物与事物之间的联系,一律统称为实体。属性:实体所具有的性质,统称为属性。实体是靠属性来描述的。实体与属性的型与值实体和属性都有"型"与"值"之分。型是概念的内涵,值是概念的实例。实体集同一类型的实体集合称为实体集。域实体中的每个属性,都有一个取值范围,这叫作属性的"域"。域可以是整数、实数、字符串等键(key)又称为关键字,它是指在实体属性中,可用于区别实体集中不同个体的那个属性或几个属性的组合。各个实体间存在联系吗?要是有的话,它们的联系方式是怎样的呢?我们在下一节来解决这个问题。
实体间的联系方式实体之间的联系实际上反映了实体之间的语义关系。联系也是实体,因此它也可以有属性。实体间联系情况比较复杂,就其联系方式来说,我们可把它分为以下三种:1):一对一联系(简记为1:1)2):一对多联系(简记为1:n)3):多对多联系(简记为m:n)
一对一联系若两个同型实体集中,一方的一个实体唯一与另一方的一个实体相对应,则称为1:1联系。如下图所示的婚姻关系
一对多联系若两个不同型的实体集中,一方一个实体对应另一方多个实体;反之另一方一个实体最多只与本方一个实体相对应,称1:n联系.如下图所示的父子关系
多对多关系若两不同型实体集中,任何方一个实体都与对方一个或多个实体相对应,称m:n联系如下图学生与课程的关系
实体联系表示法简称E--R方法(Entity--RelationshipApproach)。这种方法是通过所谓E--R图表示实体及其联系,是P.P.Chen1976年提出的。下面我们就来学习E--R图的话画法及怎样设计E--R图。E--R图的画法E--R图中包括:实体、属性和联系三种基本图素。习惯上实体用"方框"表示,实体的属性用"椭圆框"表示,联系用"菱形框"表示。如下图所示:
实体
属性
联系
由于实体集中的个体有很多,我们不可能也没有必要一一指出个体间的对应关系,因此E--R图中只需指出实体"型"间的联系,注明联系方式,这样即简单又能表达清楚概念。E--R图的具体画法:把有联系的实体(方框)通过联系(菱形框)连接起来,注明联系方式,再把实体的属性(椭圆框)连到相应的实体上。例:下面我给出一个简单的E--R图,如下:
怎样用E--R图准确反映信息模型,设计方法虽然没有一定的规则,但我们要大体遵循以下原则E--R的设计原则(1)针对每一用户作出该用户信息的局部E--R图,确定该用户视图的实体、属性和联系。注意:能作为属性的就不要作为实体,这样有利于简化E--R图。(2)综合局部E--R图,产生出总体E--R图。注意:在综合的过程中,同名实体只能出现一次,还要去掉不必要的联系,以便消除冗余。最后我们还要说明一点:一个系统的E--R图不是唯一的,强调不同的侧面作出的E--R图可能有很大的不同。例:设某企业信息系统有下列用户:人事科处理职工档案;供应科处理采购业务;总务科处理仓库业务;生产科处理产品业务。试根据上述要求设计出能反映所有用户信息视图的总体E--R图。根据E--R图的设计原则我们可知:步骤一:先作出局部的E--R图,如下:
人事科视图
供应科视图
生产科视图
总务科视图
步骤二:综合局部E--R图,产生出总体E--R图。
综合后的E--R图
从上面综合后的E--R图中我们发现去掉了一些联系,又增添了一些新联系,这是允许的。
我们知道E--R图仅是现实世界的纯粹反映,与数据库具体实现毫无关系,但它是构造数据模型的依据。下面我们给出从E--R图出发导出关系模型的原则。E--R图导出关系模型的原则原则一:对于E--R图中每个实体,都应转换为一个关系,该关系应包括对应实体的全部属性,并应根据关系所表达的语义确定哪个属性作为"主键"。注意:键在关系模型中是实现联系的主要手段。原则二:对于E--R图中的联系,情况比较复杂,要根据实体联系方式的不同,采取不同的手段加以实现。下面我们给出一些常见的关系模型:
两实体间1:n联系这种联系是可将"1"方实体的"主键"纳入"n"方实体对应的关系中作为"外部键",同时把联系的属性也一并纳入"n"方对应的关系中。
同一实体内部个体间1:n联系这种联系可在这个实体所对应的关系中多设一个属性,用来作为与该个体相联系的另一个体的"主键"。
两实体间m:n联系对于两实体间m:n联系,必须对"联系"单独建立一个关系,用来联系双方实体。注意:该关系的属性中至少要包括被它所联系的双方实体的"主键",并且如果联系有属性,也要归入这个关系中。
同一实体内部个体间m:n联系如果同一实体内存在m:n联系,也需为这个联系单独建立一个关系。该关系中至少应包括被它联系的双方个体的"主键",如果联系有属性,也要归入这个关系中。
两个以上实体m:n多元联系这种多元联系,必须为联系单独建立一个关系,该关系中最少应包括被它联系的各个实体的"主键",若是联系有属性,也要归入这个关系中。
两实体间1:1联系这种联系可将一方的主键作为另一方的外键而将两者间的联系实体省略。
在学习关系的数学定义之前,我们要先来学习一些概念。域域是值的集合。如:{男,女},{1,2},{A,B,C}等都可以是域。注意:域要命名。如:令:D1={男,女},表示性别的集合;D2={10,13,18},表示年龄的集合。域中数据的个数叫域的基数。因此上面D1的基数是2,D2的基数是3。笛卡儿积给定一组域D1,D2,…,Dn(其中允许有相同的),则笛卡儿积定义为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n)}其中每个(d1,d2,…,dn)叫作元组;元组中的每个di叫作分量,di必是Di中的一个值;当n=1时称单元组,n=2时,称二元组,…。因此,笛卡儿积的基数等于构成该积所有域的基数累乘积。关系的定义当且仅当R是D1×D2×…×Dn的一个子集,则称R是D1×D2×…×Dn上的一个关系,记为:R(D1,D2,…,Dn)其中R为关系名,n为关系的度,Di为第i个域名。在关系对应的二维表中,行对应元组,列对应域。注意:由于笛卡儿积允许有相同的域,故当不同列取自相同域情况下,列就无法根据域名来区分。
由于关系可以表现为二维表,因此我们可以通过二维表来理解关系的性质。关系的性质一:关系中每个属性值是不可分解的。也就是表中元组分量必须是原子的。例:上面这张表就不是关系,因为表中的元组分量不是原子。也就是说不允许“表中套表”。关系的性质二表中各列取自同一各域,故一列中的各个分量具有相同性质。关系的性质三列的次序可以任意交换,不改变关系的实际意义。关系的性质四表中的行叫元组,代表一个实体,因此表中不允许出现相同的两行。注意:在实际中有的把元组称为记录。关系的性质五行的次序无关紧要,可以任意交换,不会改变关系的意义。
实体完整性约束规则这个约束规则也就是指关系中的"主键"不允许取空值。
引用完整性约束规则这条规则是限制引用不存在的记录。
用户定义的完整性约束规则
数据库设计的内容数据库设计包含两方面的内容:结构特性设计和行为特性设计。下面我们来具体说一下这两方面特性的设计。结构特性设计:指数据库总体概念的设计,它应该是具有最小数据冗余的、能反映不同用户数据要求的、能实现数据共享的系统。结构性设计是静态的。行为特性设计:指数据库用户的业务活动,它体现在应用程序中。下面我们再来说一下这两方面设计联系与区别:两者之间的联系:数据库设计要考虑结构特性和行为特性两方面,因此这两者之间要相互参照。两者之间的区别:建立数据模型的方法没有给行为特性设计提供任何依据,故导致结构设计和程序设计分离进行。结构特性是在模式和子模式中定义的,行为特性通过应用程序去实现的。有了上面这些,我们可以知道在进行数据库设计时,不能一蹴而就,要本着“反复探寻,逐步求精”的思想进行数据库设计。下面我们按数据库系统的逻辑设计、物理设计、应用程序设计等介绍设计的全过程。
数据库物理设计物理设计主要任务是:确定存储结构、数据存取方法、分配存储空间。严格说来:数据库物理设计是系统程序员的事情。故这里我只需要知道物理设计的任务是什么就行了,别的不做太多要求。经过从"概念设计->逻辑设计->物理设计",标志着数据库的框架搭设成功,下面任务就是设计应用程序并投入运行和维护。应用程序设计应用程序设计与一般的程序设计没有什么大的差别,因此一般程序设计的方法也适合于应用程序设计,其方法一般有:
自定向下,或结合由下而上灵活运用;
程序按功能模块化;
使模块便于组装和调用;
追求程序可读性,不过多采用难以理解的技巧。
有了设计方法后,就要进行程序编码(也就是具体程序设计),编码是用到语言取决于DBMS语言系统。编码完成后就是调试程序。上面的工作完成之后,数据库也就设计好了,下面的事情就是投入运行和进行维护了,下面我来学习也下数据库维护的工作有什么方面。数据库维护数据库维护的工作一般包含三个方面:
日常维护:就是对数据库中的数据随时按需要进行增、删、插入、修改或更新等
定期维护:重构重组数据库
故障维护:当数据库遭到意外破坏时,把它恢复到破坏前的状态
下面我们再用图表把数据库系统设计的流程总结一下:
掌握了以上步骤,以后我们就可以有条不紊的进行数据库应用系统设计了。
到这里数据库的原理篇,我们已经学习完了,您都掌握了吗?下面我们就要学习数据库的应用篇了,祝您在以后的学习过程能一帆风顺!(^-^)