在这三个世界领域中,人们沿用不同的名词术语,下面我们来学习一些常用的术语。 实体与属性 这是信息世界中广泛使用的两个术语。 实体:现实世界任何可相互区别的事物,不论是实际存在的东西,还是概念性的东西,或是事物与事物之间的联系,一律统称为实体。 属性:实体所具有的性质,统称为属性。实体是靠属性来描述的。 实体与属性的型与值 实体和属性都有"型"与"值"之分。型是概念的内涵,值是概念的实例。 实体集 同一类型的实体集合称为实体集。 域 实体中的每个属性,都有一个取值范围,这叫作属性的"域"。域可以是整数、实数、字符串等 键(key) 又称为关键字,它是指在实体属性中,可用于区别实体集中不同个体的那个属性或几个属性的组合。 各个实体间存在联系吗?要是有的话,它们的联系方式是怎样的呢?我们在下一节来解决这个问题。
实体间的联系方式 实体之间的联系实际上反映了实体之间的语义关系。联系也是实体,因此它也可以有属性。 实体间联系情况比较复杂,就其联系方式来说,我们可把它分为以下三种: 1):一对一联系(简记为1:1) 2):一对多联系(简记为1:n) 3):多对多联系(简记为m:n)
-
一对一联系 若两个同型实体集中,一方的一个实体唯一与另一方的一个实体相对应,则称为1:1联系。 如下图所示的婚姻关系
-
一对多联系 若两个不同型的实体集中,一方一个实体对应另一方多个实体;反之另一方一个实体最多只与本方一个实体相对应,称1:n联系. 如下图所示的父子关系
-
多对多关系 若两不同型实体集中,任何方一个实体都与对方一个或多个实体相对应,称m:n联系 如下图学生与课程的关系
-
实体联系表示法简称E--R方法(Entity--Relationship Approach)。这种方法是通过所谓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图中我们发现去掉了一些联系,又增添了一些新联系,这是允许的。 |
数据库有类型之分,是根据数据模型划分的。目前成熟地应用在数据库系统中的数据模型有:层次模型、网壮模型和关系模型。下面我们分别学习以下这三种模型。 层次模型 层次模型是用树结构表示记录类型及其联系的。 树结构的基本特点是: 1、有且仅有一个结点无父结点; 2、其它结点有且有一个父结点。 在层次模型中,树的结点是记录型。上一层记录型和下一层记录型的联系是1:n的。 层次模型就象下面我们给出的一棵倒立的树。如下所示: 注意:在层次式数据库中查找记录,必须指定存取路径。这种关系模型不支持m:n联系。 网状模型 网状模型中结点间的联系不受层次限制,可以任意发生联系,所以她的结构是结点的连通图。 网状模型结构的特点是: 1、有一个以上结点无父结点; 2、至少有一个结点有多于一个父结点。 如下我们给出一个网状模型的例子: 注意:虽然网状模型能反映各种复杂的关系,但网状模型在具体实现上,只支持1:n联系,对 于m:n联系可将其转化为1:n联系。 关系模型 关系模型的本质就是用若干个二维表来表示实体及其联系。 关系是通过关系名和属性名定义的。一个关系可形式化表示为: R(A1,A2,A3,…,Ai,…) 其中:R为关系名,Ai为关系的属性名。 这里我们对此不做过多的学习,在以后的章节中我们会详细的学习之。
我们知道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的数据描述语言不尽相同,采用的方式也不一样,下面我们介绍几种常见的。 问答式 问答式通过人机对话,有系统提问关系名,各个属性及其类型和长度。对话完毕,关系模式也就生成了。每个关系均需通过问答,脱离应用程序单独进行,最终生成数据库概念模式。 例如:FoxPro就是一种问答式DBMS。 语言描述式 语言描述式有专门的描述语言定义关系模型,包括:关系名,组成该关系的各各域名、数据类型、长度和取值范围。下面我们介绍一种非正式的数据描述语言。 域描述语句 域描述语句的形式如下: DOMAIN<域名>PIC IS<类型(长度)>[RANGE IS<数1>THRU<数2>] 该语句式通过DOMAIN定义域名;PIC定义数据类型和长度;RANGE定义取值范围。 关系描述语句 关系描述语句形式如下: RELATION<关系名>(<域名1,域名2,…>)KEY=(<域名i,域名j,…>) 该语句用RELATION对关系命名、定义关系中的属性和指定关系的"主键"。 关系模型的三类完整型规则 通过关系数据描述语言定义的关系是稳定的,但是关系数据库则是随时变化的。为了维护数据库中的数据与现实世界的一致性,关系数据库必须遵循以下三类完整性约束规则:
数据库设计的内容 数据库设计包含两方面的内容:结构特性设计和行为特性设计。下面我们来具体说一下这两方面特性的设计。 结构特性设计:指数据库总体概念的设计,它应该是具有最小数据冗余的、能反映不同用户数据要求的、能实现数据共享的系统。结构性设计是静态的。 行为特性设计:指数据库用户的业务活动,它体现在应用程序中。 下面我们再来说一下这两方面设计联系与区别: 两者之间的联系:数据库设计要考虑结构特性和行为特性两方面,因此这两者之间要相互参照。 两者之间的区别:建立数据模型的方法没有给行为特性设计提供任何依据,故导致结构设计和程序设计分离进行。结构特性是在模式和子模式中定义的,行为特性通过应用程序去实现的。 有了上面这些,我们可以知道在进行数据库设计时,不能一蹴而就,要本着“反复探寻,逐步求精”的思想进行数据库设计。 下面我们按数据库系统的逻辑设计、物理设计、应用程序设计等介绍设计的全过程。
数据库物理设计 物理设计主要任务是:确定存储结构、数据存取方法、分配存储空间。 严格说来:数据库物理设计是系统程序员的事情。故这里我只需要知道物理设计的任务是什么就行了,别的不做太多要求。 经过从"概念设计->逻辑设计->物理设计",标志着数据库的框架搭设成功,下面任务就是设计应用程序并投入运行和维护。 应用程序设计 应用程序设计与一般的程序设计没有什么大的差别,因此一般程序设计的方法也适合于应用程序设计,其方法一般有:
-
自定向下,或结合由下而上灵活运用;
-
程序按功能模块化;
-
使模块便于组装和调用;
-
追求程序可读性,不过多采用难以理解的技巧。
有了设计方法后,就要进行程序编码(也就是具体程序设计),编码是用到语言取决于DBMS语言系统。编码完成后就是调试程序。 上面的工作完成之后,数据库也就设计好了,下面的事情就是投入运行和进行维护了,下面我来学习也下数据库维护的工作有什么方面。 数据库维护 数据库维护的工作一般包含三个方面:
下面我们再用图表把数据库系统设计的流程总结一下:
掌握了以上步骤,以后我们就可以有条不紊的进行数据库应用系统设计了。
到这里数据库的原理篇,我们已经学习完了,您都掌握了吗?下面我们就要学习数据库的应用篇了,祝您在以后的学习过程能一帆风顺!(^-^)
源地址: |