开发信息系统的理由之一仍然是那个挑战,正如经常注意到的,软件的进步尚未与硬件的发展进度并驾齐驱,软、硬件发展差距的原因部分地归结于在软件开发过程的各个阶段中缺乏推动生产力的标准方法和工具,简而言之, “皮匠的孩子没有鞋。”
然而,最近十年,在应用开发的方法和工具有了明显的进步,有了开发战略信息系统的有效工具和方法,因此,说 “皮匠的孩子没有鞋”就不真实了,而是有鞋了。但是时常看到那鞋太贵,不合适,或有些孩子简单地拒绝穿他们。
最近十年出现的最重要工具是数据库管理系统或DBMS ------ 提供可靠、方便的存储、恢复和更新数据的方法。假设在建一个使用DBMS的应用和根本不使用DBMS的应用之间作一个选择,只有少数人认为用DBMS建立的应用是不合适的。
随着 DBMS的发展,为模型化数据和设计数据库的新逻辑设计方法已出现,最重要的和广泛地使用的方法被称为 ------ 实体-关系模型或 “ER”模型。
在 ER模型中,所有数据被看成是说明关于实体和关系的事实,如:连接或实体间的关联。例如,航空公司订座信息系统有记录有关乘客订座信息数据库。如:在”FLIGHT <运送carries>许多PASSENGER”中,数据库描述关于FLIGHT实体,PASSENGER实体和关系”运送(carries)”。
2.2 关系模型
ER模型提供查看数据的高级”逻辑”,在 ER下模型,有数据三个主要的数据模型:关系模型,层次模型和网状模型。现代 DBMS通常建立于三模型中的一个之上,基于层次模型的DBMS,用嵌套的数据结构存储数据;基于网状模型的DBMS,层次模型不适于特殊环境,其数据被组织在网的节点和连接中;基于关系模型的DBMS,所有数据被存储在二维表格中。ER模型适用于所有三种模型,但最适用于关系模型。
TEAM Team-Name Year Team-City Mets 1989 NYC Yankees 1989 NYC Dodgers 1989 LA Red Sox 1989 Boston
Figure 2.1: TEAM table
表名和所有列名被说成是构成表格模式(schema),这里是TEAM schema:
模式(schema) ------ 一组以数据定义语言来表达的语句集,该语句集完整地描述了数据库的结构。
TEAM ( team-name, year, team-city)
在关系模型中,所有数据值必须是原子的(不可再分) ------ 在一个单元中不允许存储分离的值。如果我们想存储有关1990 Mets的信息,不能简单地把1990加入到已存在的行,(Mets,1989 1990,NYC)。
相反,我们必须单独增加一行 (Mets, 1990, NYC)到数据库。
这个数据库的逻辑模型有2个实体,PLAYER、TEAM和关系”has”位于他们之间。读作”A TERM
3
Figure 2.2: 数据库模型
相应于表的每个实体,下面是PLAYER表中一些行的数据例子: PLAYER Player-name player-number team-name year BA D. Gooden 16 Mets 1989 .186 O. Herchiser 55 Dodgers 1989 .075 D. Mattingly 23 Yankees 1989 .269
Figure 2.3: PLAYER table.
位于实体间的关系 “has”通过共享”team”和”year”的值体现出来。列 “team-name”和”year”是TERM实体的键 (如果我们假定一个队一年只能在一个城市),要了解1989年Mets队有哪些球员?你必须查看PLAYER表的这些键,在3-7章中我们将了解更多的键和关系。
有关标题: 模型关系 数据模型例子
模型关系
所有三种数据模型以相似的形式表示有关实体的信息------例如:他们全都用记录表来存储详细的FLIGHT信息,不同的是关系的表示方法上。
层次和网状模型使用明确的物理指针结构来编码关系;关系模型用共享值来隐含地编码关系;ERwin使用的ER方法是使用共享键表示关系,这是关系系统的特点。
网状或层次DBMS根据物理指针结构的”导航”来访问关系信息;相对地,关系 DBMS需要使用连接在相关的表中找到匹配的值。通过隐含的存储关系,关系模型获得数据独立。关系DBMS允许物理数据存储结构的变化,而使应用代码的改变很小。日益增加的向关系DBMS迁移的主要原因是数据的独立性。
无论何时,两个实体间都有关系,一个实体中的因素引用或关联于另一个实体的因素。保持相关实体间的关系被称为参照完整性。由于关系被隐含地存储在关系模型中,需要额外的负担来保持参照完整性。今天大多数负担由程序员负责,然而,逐渐地关系DBMS提供对参照完整性的各种形式的自动支持,如触发器------依附于表的存储式过程,条件满足就触发。
无论你使用什么类型的DBMS,绘制数据库ERwin模型都是有用的。最明显的好处是数据库使用的系统文件的编制,应用开发人员用来定义系统,与最终用户的相互交流;第二个好处是提供清楚的参照完整性限制图片,在隐含的关系中,保持参照完整性在关系模型中尤其重要;第三个好处是提供一个”逻辑的” 、独立于数据库的DBMS图片,可用工具自动产生 DBMS-专用信息。因此,从属性层次图表中,ERwin产生 DB2表格模式,相同图
4
表也可用于产生其他 DBMS模式。
数据模型例子
Figure 2.4: Example of a video store data model.
2.3 什么是信息建模型?
信息模型是用来支持业务领域的数据结构和业务规则的规范,它表示一套业务信息需求。
信息建模是描述信息结构和捕获业务规则的过程,是信息系统设计的重要组成部分。对图2.4作如下说明:
? 仓库中的一部电影MOVIE有1个或多个电影拷贝MOVIE-COPY,记录信息包括
电影的名称、名字、等级、租用率。每个电影拷贝MOVI-COPY都产生它自己的记录。
? 消费者CUSTOMER租用电影-拷贝MOVIE-COPY。电影-租金-记录
MOVIE-RENTAL-RECORD记录消费者CUSTOMER租用的每个电影拷贝MOVIE-COPY。有时相同的电影-拷贝MOVIE-COPY也许租给多个消费者CUSTOMER。
? 每个电影-租金-记录MOVIE-RENTAL-RECORD也记录电影的期限日期,和一个
5
指示是否超期的状态,根据他的或她以前和商店关系,指定消费者CUSTOMER信用状态代码,它指示结帐方式:记帐、信用卡、现金。
? 当由牵连类型指定时,商店的雇员EMPLOYEE被包括在许多的电影-租金-记录中
MOVIE-RENTAL-RECORD,至少一职员包括在每个记录。由于同一天同一个职员EMPLOYEE也许多次包括在相同的租用记录中,将来通过时间邮戳来区分。 ? 消费者CUSTOMER的支付的租金被记录在电影-租金-记录
MOVIE-RENTAL-RECORD中,超期费用也记录在其中。超期通知OVERDUE-NOTICE用来提醒消费者返还磁带,有时职员被列在超期通知中OVERDUE-NOTICE。
? 商店保存雇员的工资和地址信息在雇员表EMPLOYEEs中,有时需要查看消费者、
雇员、电影名字,而不是他们的 “编号”。
这是个相对小的模型,但是它说明许多有关视频租用商店的信息。从它,我们不仅能获得业务数据库的思想,而且也到达对业务的一个好的形象描述。在这个框图中有一些不同类型的图形:实体、属性、关系和其它描述业务规则的符号。
在下列章节中,你将学到更多的不同类型的图形对象的含义,以及如何应用 ERwin创建你自己信息模型。
3 语言概述
3.1 实体、属性和关系
在这章,我们将介绍ERwin所使用的信息模型方法,以及它所提供的描述业务信息结构的强大功能的简要概述。
ERwin Motheds Guide中使用的例子是为清楚地展示而有意挑选的,如果你是信息模型的新手,你应该不被简单的例子所误导,认为 ERwin方法对你的业务应用起不了作用,实践证明该方法已经广泛地应用于从航空航天工业到银行业和财政的各个领域已近十年。
用ERwin做信息模型的主要好处之一是容易使用,它能产生一个概述信息模型工作的框图。
有关标题: 框图组件
实体和属性的基本用框图语法 候选键属性 关系定义 读模型
泛化结构(Generalization Hierarchies)和继承
框图组件
ERwin框图主要由三种主要构建块组成------实体、属性和关系,如果我们把框图看成是表达业务语句的图形语言,那么实体是名词,属性是形容词或修饰,关系是动词。用ERwin
6
构建信息模型是一件简单的事情------找出正确的名词、动词、形容词集,并把放在一起。本章我们将介绍实体和关系的基本概念,4,5,6章提供ERwin方法的高级特性的细节。
有关标题:
“实体”的定义
实体和属性的基本用框图语法
在 ERwin框图中,消费者CUSTOMER实体由一个带有名字的方框来表示,实体的所有属性在框内。实体名将总是单一的------是CUSTOMER不是CUSTOMERs,是MOVIE不是MOVIEs,是COUNTRY不是COUNTRYs。总是用单数名词,你将获得一致命名标准的好处,有助于把实体实例作为一套说明语句来 “读”框图。
Figure 3.2: Example entity.
实体框图中的水平线把属性分为两套:键和非键。线上叫做键区,线下叫做数据区。CUSTOMER的键属性是”customer-number”,非键属性是”customer-name”、”customer-address”。
标识实体的属性集称着实体的键。键属性本身是一个属性,或者独自,或者与其它键属性结合,将形成对实体的唯一标识符。主键被放置在线上方的键区域,非键属性是不能作为键的属性,它们被放置在数据区。
为了在信息模型和稍后的数据库中正确地使用消费者CUSTOMER实体,我们必须能唯一的别实例。
如何区别一个消费者?一方法是用用户姓名作为键,另一个方法是给每个消费者指定唯一编号,如图3.2。
格言
无论谁要在模型中加入一个实体,最重要的问题之一是你需要问: “我们怎样标识实例?”
这儿有句格言帮助你记得这: “No entity without identity! “
ERwin模型中的实体实例总是由键属性标识。
候选键属性
选择实体的键是重要的一步,并且需要认真地考虑,也许有几个属性,或属性组作为主键。那些被选择出来作为主键的属性、或属性组叫候选键属性,候选键必须唯一地标识实体的每一个实例,不允为NULL,如”空empty”或 “忽略missing”。通常,主键的选择需要一定的判断力,而且必须仔细选择,不能仅凭想像,例如:如果政府以姓名来标识每个纳税人,并且你碰巧是约翰史密斯,你可能花一生时间来核对到底是谁纳的税。
有关标题: 例子键选择
7