《工程软件开发技术》-第10 章_第1页
《工程软件开发技术》-第10 章_第2页
《工程软件开发技术》-第10 章_第3页
《工程软件开发技术》-第10 章_第4页
《工程软件开发技术》-第10 章_第5页
已阅读5页,还剩144页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

10.1数据库概念数据库是一组排列成易于处理和读取的相关信息的集合。关系型数据库模型把数据用表的集合来表示。通过建立简单表之间的关系来定义结构,而不是根据数据的物理存储方式建立数据中的关系。不管表在数据库文件中的物理存储方式如何,都可以把它看作一组行和列。在关系数据库中,行被称为记录,列则被称为字段,表是有关信息的逻辑组。数据库可以由多个表组成,表与表之间可以用不同的方式相互关联。在VisualBasic中数据库内的表格不允许直接访问,而只能通过记录集对象进行记录的操作和浏览,因此,记录集是一种浏览数据库的工具。下一页返回10.1数据库概念用户可根据需要,通过使用记录集对象选择数据。记录集有三种类型:表、动态集和快照。1.表(Table)类型表类型的Recordset对象是当前数据库真实的数据表。Table类型比其他记录集类型处理速度都快,但它需要大量的内存开销。2.动态集(DynaSet)类型动态集类型的Recordset对象是可以更新的数据集,它实际上是对一个或几个表中的记录的引用。图10-1所示对两个表的记录引用,该记录集从表一选取了学号、姓名、专业,从表二选取了课程和成绩,通过关键字学号建立表间关系。上一页下一页返回10.1数据库概念动态集和产生动态集的基本表可以互相更新。3.快照(SnapShot)类型快照类型的Recordset对象是静态数据的显示。它包含的数据是固定的,记录集为只读状态,它反映了在产生快照的一瞬间数据库的状态。快照是最缺少灵活性的记录集,但它所需要的内存开销最少。如果只是浏览记录,可以用快照类型。具体使用什么记录集,取决于需要完成的任务。上一页返回10.2数据库管理器VisualBasic所支持的不同类型的数据库可以通过相应的数据库管理系统来建立,例如,在FoxPro数据库管理系统中可以建立DBF结构的数据库。也可以使用VisualBasic的数据库管理器来管理数据库。在VisualBasic开发环境内单击“外接程序”菜单中的“可视化数据管理器”选项或在操作系统桌面上运行VisualBasic系统目录中的Visdata.exe,都可打开可视化数据管理器,它的主屏幕如图10-2所示。数据管理器文件菜单中的选项功能描述如表10-3所示。数据管理器实用程序菜单中的选项功能描述如表10-4所示。下一页返回10.2数据库管理器使用可视化数据管理器文件中的“新建”或“打开”选项,指定一个数据库文件名(可以包括路径),出现如图10-3所示的窗口。图10-3中左边的数据库窗口用于列出指定数据库所包含的表及结构。数据库窗口的操作为:(1)用鼠标右键点击数据库窗口将弹出快捷菜单,选择对应选项可用于建立新表和查询。(2)用鼠标右键点击数据库窗口内的表名将弹出快捷菜单,选择对应选项可用于打开表、删除已建立的表、修改表结构和建立表间的关联等操作。上一页下一页返回10.2数据库管理器(3)用鼠标左键双击表名或用鼠标右击数据库窗口表名,在弹出的快捷菜单中选择“打开”选项,打开表格输入对话框,对记录进行记录编辑操作。图10-3中右边的SQL语句窗口,可将SQL查询条件加入到数据库中。有关SQL的知识参见10.5节。选择数据管理器文件菜单,在新建子菜单中执行MicrosoftAccess/Version7.0MDB命令,输入数据库文件名,这里假定为D:\Student,由于是创建数据库,此时出现的数据库窗口内只有属性列表而没有任何数据列表,即图10-3所示的窗口中只有Propertise表。上一页下一页返回10.2数据库管理器用鼠标右击数据库窗口,选择快捷菜单中的“新建表”选项即可启动如图10-4所示的“表结构”对话框。其中,“表名称”文本框用于输入数据表名,在本例中输入“基本情况”。“添加字段”按钮用于向表中增加新字段,单击“添加字段”按钮,打开如图10-5所示的“添加字段”对话框。“添加字段”对话框内各选项功能描述如表10-6所示。在对应的文本框内输入字段名称,设置类型、大小和默认值等,单击“确定”按钮向表中加入指定的字段,当表结构设计完成后,单击“关闭”按钮返回到图10-4“表结构”对话框。上一页下一页返回10.2数据库管理器此时,“表结构”对话框的“字段列表”框内显示了当前表单的数据结构。如果要删除表中的字段,只要用鼠标单击该字段,再单击“删除字段”按钮。对于表中字段的修改方法是先删除再重新建立。如果要为表建立索引,单击图10-4“表结构”对话框中的“添加索引”按钮,打开如图10-6所示的“添加索引到基本情况”对话框。通过这个交互界面可以将数据表中的某些字段设置为索引,以加快查找速度。当一张表建立后,可以再建立另一张表。读者可参考表10-2再建立一个学生成绩表,以便后面的内容使用。学生成绩表中必须有一个学号字段,使其能与基本情况表关联。上一页下一页返回10.2数据库管理器当表建好后,用鼠标左键双击出现在数据库窗口中的基本情况表名,打开如图10-7所示的表格输入窗口,选择对应选项进行添加、编辑、增删记录等操作。为了便于后面内容的使用,请读者在基本情况表和学生成绩表中分别输入若干条记录。上一页返回10.3数据控件VisualBasic内嵌的Data数据控件是访问数据库的一种方便的工具,它能够利用三种Recordset对象来访问数据库中的数据,数据控件提供有限的不需编程而能访问现存数据库的功能,允许将VisualBasic的窗体与数据库进行方便的连接。要利用数据控件返回数据库中记录的集合,应先在窗体上画出控件,再通过它的三个基本属性Connect、DatabaseName和RecordSource设置要访问的数据资源。10.3.1数据控件属性1.Connect属性下一页返回10.3数据控件Connect属性指定数据控件所要连接的数据库类型,VisualBasic默认的数据库是Access的MDB文件,此外,也可连接DBF、XLS、ODBC等类型的数据库。2.DatabaseName属性DatabaseName属性指定具体使用的数据库文件名,包括所有的路径名。如果连接的是单表数据库,则DatabaseName属性应设置为数据库文件所在的子目录名,而具体文件名放在RecordSource属性中。3.RecordSource属性上一页下一页返回10.3数据控件RecordSource确定具体可访问的数据,这些数据构成记录集对象Recordset。该属性值是可以是数据库中的单个表名,一个存储查询,也可以是使用SQL查询语言的一个查询字符串。4.RecordType属性RecordType属性确定记录集类型,指定记录集的Table、DynaSet、SnapShort三种类型中的一种。5.EOFAction和BOFAction属性当记录指针指向Recordset对象的开始(第一个记录前)或结束(最后一个记录后)时,数据控件的EOFAction和BOFAction属牲的设置或返回值决定了数据控件要采取的操作。上一页下一页返回10.3数据控件属性的取值如表10-7所示。在VisualBasic中,数据控件本身不能直接显示记录集中的数据,必须通过能与它绑定的控件来实现。可与数据控件绑定的控件对象有文本框、标签、图像框、图形框、组合框、复选框、网格、DB列表框、DB组合框、DB网格和OLE容器等控件。要使绑定控件能被数据库约束,必须在设计或运行时对这些控件的两个属性进行设置:(1)DataSource属性:通过指定一个有效的数据控件将绑定控件连接到一个数据源上。上一页下一页返回10.3数据控件(2)DataField属性:设置数据源中有效的字段使绑定控件与其建立联系。绑定控件、数据控件和数据库三者的关系如图10-8所示。当上述控件与数据控件绑定后,VisualBasic将当前记录的字段值赋给控件。如果修改了绑定控件内的数据,只要移动记录指针,修改后的数据会自动写入数据库。数据控件在装入数据库时,它把记录集的第一个记录作为当前记录。当数据控件的EOFAction属性值设置为2(常数vbEOFActionAddNew)时,使用数据控件将记录指针移到记录集结束位EOF,数据控件会在缓冲区加入新的空记录。上一页下一页返回10.3数据控件如果对新记录做出改变,随后又使用数据控件移动当前记录的指针,则该记录被自动追加到记录集中。如果未对新记录作出任何操作而移动记录指针,则该新记录被放弃。10.3.2数据控件的事件1.Reposition事件Reposition事件发生在一条记录成为当前记录后。只要改变记录集的指针,使其从一条记录移到另一条记录,会产生Reposition事件。通常,可以在这个事件中显示当前指针的位置。2.Validate事件上一页下一页返回10.3数据控件Validate事件是在移动到一条不同记录之前出现。此外,当修改与删除数据表中的记录前或卸载含有数据控件的窗体时都触发Validate事件。Validate事件能检查被数据控件绑定的控件内的数据是否发生变化。它通过Save参数(True或False)判断是否有数据发生变化,Action参数判断哪一种操作触发了Validate事件。Action参数可为表10-9中的值。一般可用Validate事件来检查数据的有效性。10.3.3数据控件的常用方法数据控件的内置功能很多,可以在代码中用数据控件的方法访问数据控件属性。上一页下一页返回10.3数据控件1.Refresh方法Refresh方法能打开或重新打开数据库并能重建控件的Recordset属性内的Dynaset。如果在设计状态没有为打开数据库控件的有关属性全部赋值,或当RecordSource在运行时被改变后,必须使用数据控件的Refresh方法激活这些变化。在多用户环境下,当其他用户同时访问同一数据库和表时,Refresh方法将使各用户对数据库的操作有效。2.UpdateControls方法UpdateControls方法可以将数据从数据库中重新读到被数据控件绑定的控件内。上一页下一页返回10.3数据控件因而我们可使用UpdateControls方法终止用户对绑定控件内数据的修改。10.3.4记录集的属性与方法由RecordSource确定的具体可访问的数据构成的记录集Recordset也是一个对象,因此,它和其他对象一样具有属性和方法。下面列出记录集常用的属性和方法。1.AbsolutePostion属性AbsolutePosition返回当前指针值,如果是第1条记录,其值为0,该属性为只读属性。2.BOF和EOF属性上一页下一页返回10.3数据控件BOF判定记录指针是否在首记录之前,若BOF为True,则当前位置位于记录集的第1条记录之前。与此类似,EOF判定记录指针是否在末记录之后。3.Bookmark属性打开Recordset对象时,系统为当前记录生成一个称为书签的标识值,包含在Recordset对象的Bookmark属性中。每个记录都有唯一的书签(用户无法查看书签的值),Bookmark属性返回Recordset对象中当前记录的书签。要保存当前记录的书签,可将Bookmark属性的值赋给一个变体类型的变量。通过设置Bookmark属性,可将Recordset对象的当前记录快速移动到设置为由有效书签所标识的记录上。上一页下一页返回10.3数据控件4.NoMatch属性在记录集中进行查找时,如果找到相匹配的记录,则Recordset的NoMatch属性为False,否则为True。该属性常与Bookmark属性一起使用。5.RecordCount属性RecordCount属性对Recordset对象中的记录计数,该属性为只读属性。在多用户环境下,RecordCount属性值可能不准确,为了获得准确值,在读取RecordCount属性值之前可使用MoveLast方法将记录指针移至最后一条记录上。6.Move方法上一页下一页返回10.3数据控件使用Move方法可代替对数据控件对象的4个箭头按钮的操作遍历整个记录集。5种Move方法是:(1)MoveFirst方法移至第1条记录。(2)MoveLast方法移至最后一条记录。(3)MoveNext方法移至下一条记录。(4)MovePrevious方法移至上一条记录。(5)Movie[n]方法向前或向后移n条记录,n为指定的数值。7.Find方法使用Find方法可在指定的Dynaset或Snapshot类型的Recordset对象中查找与指定条件相符的一条记录,并使之成为当前记录。上一页下一页返回10.3数据控件四种Find方法是:(1)FindFirst方法,从记录集的开始查找满足条件的第一条记录。(2)FindLast方法,从记录集的尾部向前查找满足条件的第一条记录。(3)FindNext方法,从当前记录开始查找满足条件的下一条记录。(4)FindPrevious方法,从当前记录开始查找满足条件的上一条记录。四种Find方法的语法格式相同:数据集合.Find方法条件上一页下一页返回10.3数据控件搜索条件是一个指定字段与常量关系的字符串表达式。在构造表达式时,除了用普通的关系运算符外,还可以用Like运算符。8.Seek方法使用Seek方法必须打开表的索引,它只能在Table表中查找与指定索引规则相符的第一条记录,并使之成为当前记录。其语法格式为:数据表对象.Seekcomparison,keyl,key2……Seek允许接受多个参数,第一个是比较运算符comparison,该字符串确定比较的类型。Seek方法中可用的比较运算符有=、>=、>、<>、<、<=等。上一页下一页返回10.3数据控件在使用Seek方法定位记录时,必须通过Index属性设置索引。若在同一个记录集中多次使用同样的Seek方法(参数相同),那么找到的总是同一条记录。10.3.5数据库记录的增、删、改操作Data控件是浏览和编辑记录集的好工具,但怎么输入新信息或删除现有记录呢?这需要编写几行代码,否则无法在Data控件上完成数据输入。数据库记录的增、删、改操作需要使用AddNew、Delete、Edit、Update和Refresh方法。它们的语法格式为:数据控件.记录集.方法名上一页下一页返回10.3数据控件1.增加记录AddNew方法在记录集中增加新记录。增加记录的步骤为:(1)调用AddNew方法。(2)给各字段赋值。给字段赋值格式为:Recordset.Fields("字段名")=值。(3)调用Update方法,确定所做的添加,将缓冲区内的数据写入数据库。2.删除记录要从记录集中删除记录的操作分为三步:上一页下一页返回10.3数据控件(1)定位被删除的记录使之成为当前记录。(2)调用Delete方法。(3)移动记录指针。3.编辑记录数据控件自动提供了修改现有记录的能力,当直接改变被数据库所约束的绑定控件的内容后,需单击数据控件对象的任一箭头按钮来改变当前记录,确定所做的修改。也可通过程序代码来修改记录,使用程序代码修改当前记录的步骤为:(1)调用Edit方法。(2)给各字段赋值。(3)调用Update方法,确定所做的修改。上一页返回10.4ADO数据控件10.4.1ADO对象模型ADO(ActiveXDataObject)数据访问接口是Microsoft处理数据库信息的最新技术。它是一种ActiveX对象,采用了被称为OLEDB的数据访何模式,是数据访何对象DAO、远程数据对象RDO和开放数据库互连ODBC三种方式的扩展。ADO对象模型定义了一个可编程的分层对象集合,主要由三个对象成员Connection、Command和Recordset,以及几个集合对象Errors、Parameters和Fields等组成。图10-14示意了这些对象彼此之间的关系。表10-10是这些对象的分工描述。下一页返回10.4ADO数据控件要想在程序中使用ADO对象,必须先为当前工程引用ADO的对象库。引用方式是执行工程菜单的引用命令,启动引用对话框,在清单中选取“MicrosoftActiveXDataObject2.0Library”选项。10.4.2使用ADO数据控件在使用ADO数据控件前,必须先通过“工程|部件”菜单命令选择“MicrosoftADODataControl6.0(OLEDB)”选项,将ADO数据控件添加到工具箱。ADO数据控件与VisualBasic的内部数据控件很相似,它允许使用ADO数据控件的基本属性快速地创建与数据库的连接。上一页下一页返回10.4ADO数据控件1.ADO数据控件的基本属性(1)ConnectionString属性。ADO控件没有DatabaseName属性,它使用ConnectionString属性与数据库建立连接。该属性包含了用于与数据源建立连接的相关信息,ConnectionString属性带有4个参数,如表10-11所示。(2)RecordSource属性。RecordSource确定具体可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中的单个表名,一个存储查询,也可以是使用SQL查询语言的一个查询字符串。(3)ConnectionTimeout属性。上一页下一页返回10.4ADO数据控件用于数据连接的超时设置,若在指定时间内连接不成功显示超时信息。(4)MaxRecords属性。定义从一个查询中最多能返回的记录数。2.ADO数据控件的方法和事件ADO数据控件的主要方法和事件与Data控件的方法和事件一样,可参考10.3节。3.设置ADO数据控件的属性下面通过使用ADO数据控件连接Student.mdb数据库来说明ADO数据控件属性的设置过程。步骤1:在窗体上放置ADO数据控件,控件默认名为“Adodc1”上一页下一页返回10.4ADO数据控件步骤2:单击ADO控件属性窗口中的ConnectionString属性右边的“…”按钮,弹出如图10-15所示的“属性页”对话框。在该对话框中允许通过三种不同的方式连接数据源:“使用连接字符串”只需要单击“生成”按钮,通过选项设置自动产生连接字符串。使用DataLink文件”表示通过一个连接文件来完成。“使用ODBC数据资源名称”可以通过下拉式列表框,选择某个创建好的数据源名称(DNS),作为数据来源对远程数据库进行控制。步骤3:采用“使用连接字符串”方式连接数据源。单击“生成”按钮,打开如图10-16所示“数据链接属性”对话框。上一页下一页返回10.4ADO数据控件在“提供者”选项卡内选择一个合适的OLEDB数据源,Student.mdb是Access数据库,选择“MicrosoftJet3.51OLEDBProvider”选项。然后单击“下一步”按钮或打开“连接”选项卡,在对话框内指定数据库文件,这里为Student.mdb。为保证连接有效,可单击“连接”选项卡右下方的“测试连接”按钮,如果测试成功则关闭ConnectionString属性页。步骤4:单击ADO控件属性窗口中的RecordSource属性右边的“…”按钮,弹出记录源属性页对话框,如图10-17所示。在“命令类型”下拉式列表框中选择“2-adCmdTable”选项,在“表或存储过程名称”下拉式列表框中选择Student.mdb数据库中的“基本情况”表,关闭记录源属性页。上一页下一页返回10.4ADO数据控件此时,已完成了ADO数据控件的连接工作。由于ADO控件是一个ActiveX控件,也可以用鼠标右击ADO控件,在弹出的快捷菜单中选择“ADODC属性”菜单命令,打开ADO控件属性页对话框,如图10-18所示,一次完成步骤4的全部设置。10.4.3ADO控件上新增绑定控件的使用随着ADO对象模型的引入,VisualBasic6.0除了保留以往的一些绑定控件外,又提供了一些新的成员来连接不同数据类型的数据。这些新成员主要有DataGride、DataCombo、DataList、DataReport、MSHFlexGrid、MSChart控件和MonthView等控件。这些新增绑定控件必须使用ADO控件进行绑定。上一页下一页返回10.4ADO数据控件VisualBasic6.0在绑定控件上不仅对DataSource和DataField属性在连接功能上作了改进,又增加了DataMember与DataFormat属性使数据访问的队列更加完整。DataMember属性允许处理多个数据集,DataFormat属性用于指定数据内容的显示格式。10.4.4使用数据窗体向导VisualBasic6.0提供了一个功能强大的数据窗体向导,通过几个交互过程,便能创建前面介绍的ADO数据控件和绑定控件,构成一个访问数据的窗口。数据窗体向导属于外接程序,在使用前必须执行“外接程序”菜单的“外接程序管理器”命令,按图10-21所示的选项装入“VB6数据窗体向导”到“外接程序”菜单中。上一页返回10.5结构化查询语言10.5.1结构化查询语言结构化查询语言(SQL)是操作数据库的工业标准语言。在SQL语言中,指定要做什么而不是怎么做。不需要告诉SQL如何访问数据库,只要告诉SQL需要数据库做什么。可以在设计或运行时对数据控件使用SQL语句。SQL中最经常使用的是从数据库中获取数据。从数据库中获取数据称为查询数据库,查询数据库通过使用SELECT语句来完成。常见的SELECT语句包含六部分,其语法形式为:SELECT字段表FROM表名WHERE查询条件GROUPBY分组字段HAVING分组条件ORDERBY字段[ASC|DESC]下一页返回10.5结构化查询语言说明:字段表部分包含了查询结果要显示的字段清单,字段之间用逗号分开。要选择表中所有字段,可用星号“*”代替。如果所选定的字段要更名,可在该字段后用AS[新名]实现。FROM子句用于指定一个或多个表。如果所选的字段来自不同的表,则字段名前应加表名前缀。WHERE子句用于限制记录的选择。构造查询条件可使用大多数的VisualBasic内部函数和运算符以及SQL特有的运算符构成表达式。上一页下一页返回10.5结构化查询语言GROUPBY和HAVING子句用于分组和分组过滤处理。它能把在指定字段列表中有相同值的记录合并成一条记录。如果在SELECT语句中含有SQL合计函数,例如Sum或Count,那么就为每条记录创建摘要值。在GROUPBY字段中的Null值会被分组,并不省略。但是,在任何SQL合计函数中都计算Null值。可用WHERE子句来排除不想分组的行,将记录分组后,也可用HAVING子句来筛选它们。一旦GROUPBY完成了记录分组,HAVING就显示由GROUPBY子句分组的、且满足HAVING子句条件的所有记录。HAVING子句与已确定要选中哪些记录的WHERE子句类似。上一页下一页返回10.5结构化查询语言ORDERBY子句决定了查找出来的记录的排列顺序。在ORDERBY子句中,可以指定一个或多个字段作为排序关键字,ASC选项代表升序,DESC代表降序。在上述SQL语句中,SELECT和FROM子句是必须要有的,它告诉VisualBasic从何处来想要的数据,通过使用SELECT语句可返回一个记录集。可在SELECT子句内使用合计函数对记录进行操作,它返回一组记录的单一值。例如,AVG函数可以返回记录集的特定字段中所有值的平均数。表10-12列出了合计函数。上一页下一页返回10.5结构化查询语言10.5.2使用SELECT语句查询SELECT语句基本上是记录集的定义语句。数据控件的RecordSource属性不一定是数据表名,可以是数据表中的某些行或多个数据表中的数据组合。可以直接在Data控件和ADO控件的RecordSource属性栏中输入SQL,也可在代码中通过SQL语句将选择的记录集赋给数据控件的RecordSource属性,也可赋予对象变量。上一页返回10.6工程数据库10.6.1工程数据库的概念随着计算机系统和数据库技术的发展,应用范围正在从统计、管理等领域迅速扩大到实际工程中。工程对象名目繁多,五花八门,不同的应用彼此间差异很大,传统数据库不足以满足工程对象的要求。多年来人们在工程应用研究中,发现了许多问题,提出了许多解决方案,逐渐形成了一门新的学科领域—工程数据库。传统数据库是工程数据库的基础,而工程数据库是传统数据库发展的趋势,因此工程数据库是当前国内外数据库技术研究的重要课题之一。什么是数据库呢?如10.1节所述,数据库是以一定的组织方式存储在计算机中按着某种规则相互联系的数据的集合。下一页返回10.6工程数据库它可为有关用户所共享。图10-32给出了一个企业数据库的示意图,图中A、B和C代表用户A、B和程序C所需要的数据。重叠部分表示数据被共享。由于数据共享减少了数据冗余。管理数据库的程序被称为数据库管理系统。市场上销售的数据库管理系统有各种各样的,目前使用较多的是DB2,INGRES,ORACLE,SYSBASE和IMS等大型数据库系统以及应用在计算机上的dBASEⅢ、Iformax、Foxbase、FOXPRO等。随着数据库技术的发展,数据库的应用已经渗透到人们生产生活的各个领域。数据库应用最成熟的领域是一般的信息管理。上面提到的数据库管理系统主要应用在这个领域,被称为商用数据库。上一页下一页返回10.6工程数据库应用在过程控制方面的数据库往往具有实时性质,属于实时数据库这一类,CAD/CAM由于其工程背景及实际需求,对数据库提出了一些特殊要求,因而产生了工程数据库。为了对企业中产品设计与产品制造数据进行管理,使设计环境能与制造环境交换数据,导致了对工程数据库技术的研究。工程数据库要能处理图形数据,包括对图形的显示、存储、检索和修改,工程数据库还要能方便地表示复杂的产品结构。因此工程数据库处理的对象要比一般商用数据库复杂得多,除了能处理一般数据库支持的整数、实数、逻辑值和字符串数据外,还必须进一步能处理矢量、集合和矩阵等,要包括处理这些对象的运算符。上一页下一页返回10.6工程数据库此外必须进一步研究适合产品设计过程特点的设计事务处理技术。目前,一些适合某些工程特点的工程数据库产品也在投入市场,其中著名的有IBM公司的公用数据软件系统CDF,EDS公司的INFOMANAGER以及CDC公司的EDL等。AutoCAD的数据库是一个运行在计算机上的工程数据库系统。完全适合工程特点的数据库系统尚在研究之中。过程控制中应用的实时数据库要保存和读取过程控制中产生和需要的实时数据,这要在给定的约束时间内完成。因此需要针对具体应用环境,对现有数据库技术进行改造,在保证数据库相容性的前提下,尽量简化事务处理的措施,以减少所需要的时间;尽可能采用多处理器技术加快系统的响应时间,以满足实时控制的需求。上一页下一页返回10.6工程数据库10.6.1.1数据库技术的发展1.面向对象的数据库系统20世纪80年代到90年代在程序设计、数据库和人工智能三个领域内对面向对象的技术进行了深入研究。面向对象的数据库技术是数据库领域内的重大技术进展,它是面向对象的技术和数据库技术相结合的产物。由于面向对象的数据库系统具有满足工程应用所需要的许多特征,这就促进了面向对象的数据库技术的进一步发展。面向对象数据库最基本的概念是对象。对象是客观世界中存在的物体,是一种非结构性数据,如一个产品、一个零件、一个职工等都是对象。上一页下一页返回10.6工程数据库对象应该是可以区分的,每个对象应该有一个唯一的标识符。对象应该是运动的,每个对象应该有自己的行为特征。例如一个数据文件是一个对象,它的行为包括打开、读、写和关闭等。对象模型中的另一个基本概念是对象标识符,它代表每个对象的身份。标识符一般有三种:逻辑标识符、物理标识符以及这两种标识符的综合。对象行为是面向对象模型中的一个重要概念,这种概念是传统数据模型和语义数据模型所不具备的。对象行为的实现是方法,用户要操作某个对象必须使用与之相关的行为方法。与行为方法相关的概念有继承与多继承、行为重载、行为提炼、迟后联编和多态性等。上一页下一页返回10.6工程数据库2.知识库系统近年来一些CAD/CAM产品引入了知识处理的能力,使这些产品更有吸引力。知识库系统主要处理知识的表示、知识的存储及推理。我们采用的知识库的定义是:所研究的课题域中事实和一般规则的汇集。在传统的数据库中主要存储的是数据,即我们现在所说的事实,同时隐含地存储少量的规则用以对输入数据的完整性检查。在知识库中存储大量的事实,称为外延数据库(ExtensionalDatabase),简称EDB。知识库同时也存储大量的规则,我们称它们为内含数据库(IntensionalDatabase),简称IDB。这些规则主要用于表示某一课题领域的知识。上一页下一页返回10.6工程数据库知识库系统包括用户、知识库和知识库管理系统。图10-33给出了知识库系统结构的一个模型。知识库管理系统除了应能提供DBMS所提供的功能外,还应提供推理功能,所以它必须包含推理机。推理通常采用两种方法:一种是从事实出发,根据已知规则向上推理得出需要的结论即目标;另一种是从目标出发,使用已知规则向下推理,得出需要的事实。目前知识库系统的研究主要集中在推理机制方面,而对于知识库的内外模式结构、知识存取的并发算法的研究涉及得较少,因此一个完善的知识库管理系统投放市场还需要一个长的时间。此外知识库管理系统还应为用户提供自然语言接口,以方便用户使用。上一页下一页返回10.6工程数据库3.工程数据库系统的现状与未来1)目前的工程数据库系统(1)传统的关系或网状数据模型为基础进行扩充,满足工程数据管理的一些要求的工程数据库系统。其中具有代表性的是:TORNADO(TechnicalandOrientedNetworkOrganization)扩充的网状数据库系统。ARDBID(ARelationalDataBaseforInteractiveDesign)基于关系模型的工程数据库系统。IPIP采用关系和网状数据模型的混合型工程数据库管理系统。上一页下一页返回10.6工程数据库MLDB的多层数据库系统是一种多重结构的数据库。它把数据库从逻辑上和物理上均分为公共数据库和个人数据库。(2)支持STEP/PDES产品模型数据交换的工程数据库系统STEP(standardfortheExchangeofproductModelData)是ISO在PDES和CAD*I等研究基础上制定的一个用于不同CAD/CAM系统间进行数据交换的国际标准。随着STEP文本的发表,使目前开发的CAD/CAM系统可以直接采用STEP规范的产品定义模型(用EXPRESS语言描述)和提供STEP模型的数据交换接口,使系统内部或系统之间无需进行格式转换就可以实现产品数据的模型,提供了适合STEP产品模型数据进行直接标准界面,甚至提出了以EXPRESS支持的模型为基础开发工程数据库管理系统。上一页下一页返回10.6工程数据库STEP的EXPRESS模型作为实体类型、方法和全局规则的组成,它是一个“准面向对象的数据模型”。与面向对象模型的主要区别是:实体中不包括方法;用户定义的类型不包括方法和继承的概念;结构类型不包括元组类型。(3)采用面向对象数据模型的工程数据库系统(OOEDBMS)。尽管人们将传统数据模型的数据库系统用于工程环境文献进行了大量工作,目前仍然还没有一个满意的商品化的工程数据库管理系统,能全面满足工程应用的要求。因此,人们不得不探索新的数据模型、开发满足CAD/CAM的工程数据库管理系统。其中,基于面向对象数据模型数据库管理系统特别受到人们的青睐。上一页下一页返回10.6工程数据库2)工程数据库系统的发展趋势尽管人们对OODBMS投入了大量工作,目前要使OODBMS真正用于工程实际环境,仍有不少技术问题待进一步研究:(1)发展OODB的形式化理论。(2)附加一些语义模型概念。(3)增加演绎功能,支持智能CAD/CAM的开发。(4)改善OODBMS的性能。(5)消除程序设计语言与数据库管理语言和数据库结构之间的不匹配。上一页下一页返回10.6工程数据库(6)研究OODB的设计工具为面向对象数据提供友好和有效的设计辅助工具。(7)支持CIMS环境下异构数据库集成。(8)希望工程数据库的DDL和DML要与STEPESS相匹配,减少中间转换环节,提供系统集成效率。在CIMS环境下,工程数据库不仅确保CAD/CAM系统内部实现数据交换和共享,而且需要与工厂的管理信息、车间控制信息、调度信息和质量信息实现信息交换和共享,因此,工程数据库必须采用开放式体系结构。由此可见,要满足工程环境对数据库的各项要求,工程数据领域还有许多研究工作,工程数据库系统再经过一段路程将走向成熟。上一页下一页返回10.6工程数据库10.6.1.2工程数据的特点工程数据是指CAD/CAM应用的数据,包括产品设计制造过程中要用到的各种类型数据、机械零部件数据、加工组织和资料数据、材料清单和设计分析数据等。工程中需要处理的数据是非常多的,如图形数据,每种产品的零、部件的制图和几何模型,这些数据都必须存放在数据库内,就一个企业而言,零件的件数多达成千上万件。所以CAD/CAM数据库的规模至少也要几千兆字节的容量。CAD/CAM设计者使用这样大的数据库要求实时响应,支持试探性和交互性的设计过程。上一页下一页返回10.6工程数据库一般说来,设计过程是不断摸索的过程,这样,设计者可利用上次设计步骤的中间设计数据结果,再次尝试改进设计。根据CAD/CAM系统特点和应用数据特点实现数据库功能时,在工程数据库系统应考虑到下面几个重要的机构:(1)在逻辑上是管理综合的CAD/CAM工程数据库,而在物理上是管理分开的数据库的分布式数据库管理机构。这种方法可以用来解决大型数据库响应速度问题,并能支持反复试验的过程。(2)具备由设计者在任何时刻定义数据结构的能力,并管理动态定义数据结构和预定义数据结构之间相互配合的动态数据结构的控制机构。上一页下一页返回10.6工程数据库后一机制属于数据模型,是面向数据结构的,故提出了所谓多层数据库(multi—layereddatabase)。多层数据库涉及数据库层次的两个基本结构:多重组织的数据库、自描述的数据结构。由于大型数据库按照数据库的用途在物理上是可分割的,因此在大型数据库的环境下,分布式数据库系统为支持反复试验的设计过程提供了一种手段,并可缩短周转时间。在已经提出的多重组织的数据库中,CAD/CAM数据库从逻辑上可分为全局数据库和局部数据库。全局数据库保存公用数据、图形数据、产品和零件数据、材料特性数据和机械数据等。上一页下一页返回10.6工程数据库这些公用数据应当为标准化的数据,并且是要提供产品设计数据。全局数据库保存永久性的数据。局部数据库为个别设计者占有,且仅将设计者感兴趣的数据组织起来。当一个设计者开始产品设计时,根据实际工作的要求,亦可从全局数据库取出设计物件的有关数据,存放到局部数据库的指定区内。为了支持反复试验过程,如设计处理顺序和设计处理的中间结果数据的演变信息均被保存在局部数据库内。使得设计者能把当前的设计结果与以往的设计结果比较,以作出评价,并从前一个设计步骤上再次尝试产品的设计工作。在设计结束后,可将该局部数据库的有关产品设计数据按照全局数据库的结构传送到全局数据库。上一页下一页返回10.6工程数据库全局数据库和局部数据库之间的相互关系见图10-34。图10-35为利用实体关联模型指出多重组织的数据库的逻辑数据结构的主要部分。一个样品的实体类的数据库描述,它表示实体类的数据结构描述。因此,一个样品的数据库描述如图10-36所示。所以,设计者或系统管理员在任何时刻都可定义数据库,这就在一定程度上实现了动态数据库结构。集成化CAD/CAM系统中的数据类型包括:(1)工程设计和分析数据。上一页下一页返回10.6工程数据库其中一部分是各种设计规范和标准以及产品的技术参数,这些数据是提供设计过程选用的静态数据;另一部分是设计过程中生成的数据,如产品的结构分析、性能分析、图形、尺寸公差、技术要求、材料热处理等数据,这些数据具有高度的动态性。(2)产品模型数据。包括基本要素,产品零、部件的几何、拓扑信息,零、部件的整体几何特征信息,几何变换信息和其他特征信息,这类数据量大,数据结构复杂。(3)产品图形数据。零件图、部件图和装配图的数据。(4)专家知识和推理规则。主要包括智能CAD、CAPP系统中专家的经验知识和推理规则。上一页下一页返回10.6工程数据库(5)产品的加工数据。计算机辅助制造中,需要查找一系列的标准和工艺数据,同时还生成大量的加工数据,这些数据同样具有动态特性。集成化CAD/CAM系统中工程数据具有下列特点:(1)数据结构复杂。(2)数据联系复杂。(3)数据的一致性。(4)数据的使用和管理复杂。因此集成化CAD/CAM系统中的工程数据库应具有下列特点和功能要求:上一页下一页返回10.6工程数据库(1)动态处理模式变化的功能:由于产品设计过程和工艺设计过程中产生的数据是不断变化的,要求工程数据库管理系统能支持动态描述数据库中数据的能力,使用户在一定授权条件下既能修改数据库中的值,又能修改数据结构的模式。(2)能描述和处理复杂的数据类型:由于工程数据结构复杂,语义关系十分丰富,因此工程数据库管理系统不仅要支持用户定义复杂的类型,而且还要支持多对多关系、递归关系等复杂数据结构的描述。上一页下一页返回10.6工程数据库(3)支持工程设计事务:工程设计事务是长达以小时、天或周计的长事务,长时间封锁某一设计对象,将严重地影响到设计的并行性。同时,长时间的设计数据的丢失,不仅是时间的损失,而且是设计者劳动成果的损失。因此必须解决工程长事务中对设计对象的封锁、恢复、共享等问题。(4)设计信息流的一致性和完整性控制:设计过程是并行协作过程,设计者应使自己的早期设计数据供协同工作的其他设计者共享,以便使设计任务并行开展。工程数据库管理系统必须提供一定的控制机制,确保设计对象的一致性和完整性。(5)版本控制管理:设计是一个设计—分析—再设计的反复过程。上一页下一页返回10.6工程数据库设计者经常要对设计过程进行回溯,并重新进行新一轮设计。版本管理应能记录设计过程中的历史数据,使设计回溯到一个合理的阶段,不致使整个设计推翻重新开始。同时设计对象的版本管理应能提供多个设计者并行更新同一设计对象机制,以提高设计的并行性。(6)支持分布环境:CAD/CAM系统中,数据管理往往分布于工程活动的全过程,应用系统的地理位置也可能是分散的,且各地的数据库有的是面向全局的,有的是面向局部的。在这种分散环境下,分布数据处理自然是工程数据库管理系统的一个重要功能。上一页下一页返回10.6工程数据库(7)权限控制:分布数据处理自然是一个众多设计者共同参与的设计环境,同时每一个设计子任务,由于专业方面的原因,在某种程度上,具有相对独立性。由于不同人员都可使用数据库,为了安全起见,对设计对象、数据库资源以及各类设计人员给予一定的权限范围,可以控制一些非法用户访问或修改数据库。(8)用户管理:数据库管理系统对于数据操纵语言(DML—DataManipulationLanguage)应提供与工程设计常用算法语言的接口,并提供适用环境要求的用户界面。工程数据库管理系统的研究和开发工作始于20世纪70年代末期。上一页下一页返回10.6工程数据库其发展的开始阶段,一般仍采用传统的数据模型,而且以网状和关系模型为主,同时在用户界面和数据结构的扩充等方面具有一定的工程应用特点。另一方面是对传统的数据模型进行改进和混合,使它适合工程应用环境,已有一些实验性的、具有一定实用价值的工程数据库管理系统得到开发和应用,但仍有一定的局限性,不便于各种数据模型之间转换。10.6.1.3工程数据库系统工程数据库系统是满足工程设计与制造、生产管理与经营决策支持环境的数据库系统。工程数据库系统包括工程数据库、工程数据库管理系统和工程数据库的终端用户。上一页下一页返回10.6工程数据库工程数据库存储产品图形、图像数据、包括产品和零件的二维图形及三维图形;图形管理数据;产品文字数据包括产品与零件信息,如零件的材质、公差和表面粗糙度等以及产品结构信息,如产品和部件的组成及其装配关系等;设计所需参数和设计分析数据,如资源数据、设备数据、设计分析参数等;加工工艺数据,如加工及工装设备、加工工艺规程、加工工序、数控加工代码(NC)等数据(文件)。以上数据既有大量的格式化数据也有许多非格式化数据。工程数据库管理系统(EDBMS)管理工程数据库中的数据,提供生成、检索、修改图形数据和文字数据的操作,以及对用户的设计事务进行处理,实行规定的设计约束。上一页下一页返回10.6工程数据库工程数据库管理系统需要提供程序设计接口以备CAD软件和其他软件工具调用。工程数据的终端用户通常是工程设计人员,如产品设计工程师、工艺师和其他工程人员。在工程数据库中,数据库的模式通常是由设计人员确定的,而不是由数据库管理员和系统分析员确定。工程项目的负责人负责工程数据的管理,如决定数据使用的权限。工程数据库系统(EDBS)作为支持工程应用的数据库系统,与传统商用数据库系统有很大区别。上一页下一页返回10.6工程数据库主要表现在:EDBS要求其数据模型能支持复杂数据类型、复杂数据结构、丰富的语义关联、数据模式的动态定义和修改以及版本管理能力;要求EDBMS具有支持长事务的工程事务处理能力,具有友好的用户接口及支持数据库的相容性。前面我们已经讨论了面向对象数据库系统的一些特点,这些特点多数都适合工程数据库系统的需求。因此,将面向对象的数据库系统经扩充而适合于工程数据库系统特殊需求的“面向对象的工程数据库系统”是目前竟相开发的目标。上一页下一页返回10.6工程数据库由于工程数据库的特殊要求,而面向事务处理的商用数据库管理系统缺乏必要的支持手段。人们一般通过下列途径满足工程数据管理提出的要求。(1)在现有商用事务DBMS外层增加一层软件,弥补商用事务DBMS用于工程环境的不足。(2)增加现有DBMS的功能,满足工程环境数据管理的要求。(3)建立专用的文件管理器,把现有的DBMS作为一项应用。(4)研究新的数据模型,开发新的工程数据库管理系统,使它具有新的功能和性能满足工程数据管理的要求。上一页下一页返回10.6工程数据库前三种方法可在原有事务数据库管理系统的基础上加某些功能,满足工程应用的要求。优点是易于实现,开发工作量小。缺点是忽视了工程数据库的整体要求,增加了界面之间的转换,使整个系统的效率下降。第四种方法是从满足工程数据的要求出发,开发新的工程数据库管理系统,其优点是可以满足工程数据的数据模型,这样系统效率高,缺点是技术难度和投资大,开发工作量大,开发周期长。为了满足企业对工程数据库的迫切需要,目前一些实用的工程数据库系统,大多采用前三种方法组成。对于开发新一代EDBMS将选用第四种方法。上一页下一页返回10.6工程数据库工程设计过程是一反复迭代,逐步求精的过程,往往需要持续相当长的时间。传统数据库的事务处理方法,已无法支持这类应用,必须寻找新的解决措施。方案之一即从数据库系统的结构入手,设计分层结构的数据库系统,在此基础上,引入嵌套事务的概念,解决工程环境中的长事务处理问题。工程数据库的分层结构示意图如图10-37所示。全局数据库存放一个企业公共的、标准和规范方面的数据,包括已经提交的设计结果数据。项目数据库存放与某一设计项目有关的公共数据,为项目组成人员所共享。其初始值是全局数据库的子集。上一页下一页返回10.6工程数据库个人数据库存放特定用户设计过程中的临时工作数据、为特定用户所独占,其初始值是项目数据库的子集。实现这种分层结构的核心技术是checkin、checkout机制(包含用户权限、完整性、一致性校验)。当一个设计项目开始时,由checkout从全局数据库提取所需数据,并初始化项目数据库,设计完成时,通过checkin把设计结果写回全局数据库。项目组中的指定用户,利用checkout从项目数据库提取所需数据,并初始化其专用的个人数据库,用户对个人数据库中的数据修改(即进行设计)以后,通过checkin向项目数据库提交。上一页下一页返回10.6工程数据库这种全局、项目、个人数据库中的checkin、checkout机制,其实质就是一种事务的嵌套关系。它的基本思想是将事务的一致性和恢复要求区别处理,通过数据库层,逐步减小事务的并发粒度,达到支持长事务的目的。个人数据库为某个用户所独占,用户可直接使用短事务的处理方法操作数据库,即使是对同一个数据,他也不必时时关心是否与其他个人数据库中的数据一致,只有在向项目数据库进行checkin操作时,才做一致性检查;同样,这种关系也存在于不同的项目数据库之间。这种技术的好处十分明显,它允许数据库系统在一定阶段,一定范围内的数据不一致性现象存在,这是对试探性设计过程的极好支持。上一页下一页返回10.6工程数据库开放性和可扩展性是工程环境对数据库技术提出的另一个重要性能指标。这是因为工程环境多为一个综合系统,由多个相互的分散结点(如CAD结点,CAPP结点,CAM结点)组成。其硬、软设备往往来自不同的厂商(事实上,单一厂商目前已无力提供性能价格比皆优的硬软设备),异构的分布式数据处理环境已不可避免。同时,工程设计过程自动化是一个渐进的过程,系统在运行过程中已经积累了大量的数据和应用软件,必须在系统更新和扩充时,予以妥善处理。解决这种异构的分布式集成问题的代表性方案是采用开放性客户/服务器结构,这种结构的示意图如图10-38所示。上一页下一页返回10.6工程数据库图10-38(a)是未采用开放性客户/服务器结构时的系统结构,这时,多个应用工具(可能分散在多个网络结点上)都要通过一个或若干个信关(GATEWYR)来与两个或多个数据(库)打交道,这种结构的一个明显弱点是信关的局限性,很难产生一个通用而标准的信关为所有的应用服务,用户必须购置许多不同的信关来满足各种不同的应用,而且,厂商能否提供所有信关仍然是一个问题。图10-38(b)是采用开放性客户/服务器体系结构的系统结构图。这时,多个应用工具可以通过一对(或若干对)客户/服务器来与多个数据(库)打交道。上一页下一页返回10.6工程数据库这种结构的一个显著优点是可以把原先由五花八门的信关组成的互连结构,通过一个标准的通用客户/服务器接口来完成。很明显,这种结构标准要求很高,需要不同的计算机厂商的产品对其开放(或自动向其兼容)。在开放性客户/服务器结构中,各种应用(客户)可以使用自己的“方言”向开放客户提出数据服务申请,开放客户经相应检查后,将这种申请转译为开放服务器可以接受的标准申请,开放服务器接受申请以后,或去数据(库),或去另一个客户存取相关数据。并按标准格式发送给开放客户,开放客户再将相关数据翻译成委托客户“方言”能够接受的数据格式。上一页下一页返回10.6工程数据库开放性客户/服务器的工作流程可用图10-39简要说明。开放性客户/服务器结构同时涉及硬件和软件两个方面的问题。从硬件方面来讲,这种结构意味着把一项工作可以分散到若干个处理机上完成;从软件方面来讲,则意味着一项工作可由若干个不同的软件功能模块来完成。一个开放性客户/服务器通常是一个可编程的程序接口,它至少应在三个层次上提供标准化及通用的接口,才能实现系统的互连,第一层是网络层(含OS),这是整个系统互连的基础。上一页下一页返回10.6工程数据库它应当提供支持在诸如TCL/IP、DECNET、NOVELL等网络协议基础上的标准协议;第二层是数据库实用程序层,该层至少应能提供以一种标准语言接口(如SQL)为基础,控制和管理客户应用程序内通信的编程接口;第三层是应用层(客户层),它应能提供“方言”向开放客户的申请机制。唯有这三层的协调工作,才可实现网络与数据库,数据库与应用的相对独立性。10.6.2工程数据库与传统关系型数据库的比较语义数据模型包括:E-R模型、函数数据模型、语义网络数据模型、超级图形数据模型。结构式数据模型包括:层次数据模型、网状数据模型、关系数据模型、格网数据模型、拓扑数据模型。上一页下一页返回10.6工程数据库在这里首先介绍E-R模型,三种传统数据库模型。在此基础上进一步介绍层次数据库,网状数据库,关系数据库设计中的规范化问题。10.6.2.1传统数据库的模型与体系结构1.E-R模型E-R模型(Entity-Relationshipmodel),即实体—联系模型,于1976由PeterChen提出,企图在三种传统数据模型之上建立统一的概念模型,更加客观地模拟现实世界中事物。它独立于具体的计算机数据库系统,不依赖于具体的DBMS。在数据库设计过程中,它是概念型设计的有效工具,因此在一些书籍中又把它称作E-R方法。上一页下一页返回10.6工程数据库利用E-R方法所建立起来的概念模型称作E-R模型。由于E-R模型属于概念模型,勿需考虑数据的具体值、数据结构、存取路径、存取效率等多方面问题,因此在系统分析之后,逻辑设计之前进行概念模型设计是十分重要的。它仅使得数据库设计步骤清晰,降低设计工作的复杂性,同时增加了设计人员和用户之间的共同语言。目前E-R方法广泛地被数据库设计人员所采用。2.E-R模型的组成E-R模型引用了三个抽象概念,分述如下。1)实体上一页下一页返回10.6工程数据库现实世界中存在的客观事物或对象称作实体。实体可以是人,也可以是物;可以是客观存在的,也可以是抽象的概念。例如工厂、机关、学校、商店、学生、工人、产品、零件等都可以看作为客观存在的实体。具有共性实体的集合,称作实体集。实体集有型与值之分。在E-R模型图中用矩形框表示。框内写上实体的名字。如图10-40(a)所示。2)联系实体与实体之间存在的关系称作联系。如教师与学生之间存在“教授”联系;厂长与工人存在“领导”联系;零件与材料存在“消耗”联系。上一页下一页返回10.6工程数据库“联系”本身也有型与值之分。同一类型的联系所组成的集合称作联系集。在E-R图中用菱形框表示,框内标出联系名。见图10-40(b)。联系包括一对一(1∶1)一对多(1∶m)联系。如校长和学校,厂长和工厂属于一对一联系。厂长和工人,校长和教师属于一对多联系。产品和零件,学生和课程属于多对多联系(见图10-41)。在同一个实体集内部各成员之间也可能存在某种关系,这些关系也可以用“联系”来表示。3)属性用来说明实体(或联系)某方面特征的描述称作属性。上一页下一页返回10.6工程数据库它也有型与值之分。见图10-40(c)。框内标出属性名。同一个实体(或联系)集中的每个实体应具有相同的属性。例如学生实体可以有学号、学生名、性别、年龄。课程实体有课程号、课程名、两者的“联系”属性为成绩(见图10-42)。成绩属性既不属于学生,也不属于课程,只能属于“选修”联系上的属性。联系本身允许有属性,也可以没有属性,根据具体情况而定。实体与属性和实体与“联系”之间用无向线连接,表示它们之间的联系和从属关系。实体、联系和属性三个抽象概念是有明确区分的,各有自己的含意,但是对某一个具体的对象或事物,究竟算作实体,还是联系或属性,则是相对的。上一页下一页返回10.6工程数据库一个实体在某种情况下看作联系,在另一种情况下可能看作属性。关键取决于应用背景和用户需求。3.E-R模型的建立对复杂的应用系统,要求系统分析员仔细了解用户的业务活动,搞清用户对系统的要求,确定系统边界,画出用户业务活动图和数据流程图。在此基础上,利用E-R方法建立系统的E-R模型。首先建立应用系统各部分的局部E-R模型,然后建立总体的E-R模型。1)局部E-R模型的建立在系统分析基础上,把系统划分成几个部分,对每部分建立它的局部E-R模型。上一页下一页返回10.6工程数据库关键问题是正确选择实体和属性以及实体间的联系。正确与否的标准,要看能否满足用户对系统的使用要求。例如,从某工厂供应科的业务活动和使用要求,建立起来的局部E-R模型如图10-43所示。它把产品及生产产品所用的材料作为实体。产品和材料实体间的联系为“使用”。产品的属性有:产品编号、产品名、型号和价格。材料的属性有:材料编码、材料名、价格、库存量。“使用”联系的属性为用量。根据生产科的业务活动和使用要求,确定产品和零件作为实体。产品和零件实体间的联系为“组成”。它的局部E-R模型如图10-44所示。上一页下一页返回10.6工程数据库产品的属性有:产品编码、产品名、型号、主要性能。零件的属性有:零件编码、零件名、材料名、材料用量。“组成”联系的属性为零件数量。同一实体在不同业务部门的属性可能不同。从图10-43和图10-44看到,供应科感兴趣的是产品价格,生产科感兴趣的是产品主要性能。就实体而言,供应科感兴趣是“产品”及生产产品所需要的材料;生产科感兴趣的是组装产品需要的零件。在建立局部E-R模型过程中,根据用户需求,检查每一项使用,确保模型能够满足数据流程图对数据处理的要求。2)总体E-R模型的建立上一页下一页返回10.6工程数据库在各个局部E-R模型(又称局部E-R图)建立的基础上,综合后可得到系统的总体E-R模型(又称总体E-R图),见图10-45。综合时需注意如下两问题:(1)局部模型间的相同实体应该合并成一个实体,实体中的属性应包含局部模型中实体的属性。图10-45中产品实体,原有4个属性,现有5个属性。(2)在不同局部模型中的实体之间,允许添加联系和属性。图10-45中实体“零件”和“材料”之间增加了“消耗”联系及其属性“定额”。属性“用量”,可以通过“零件数量”和“定额”导出,因此可以消去。上一页下一页返回10.6工程数据库“产品”可以通过“零件”与“材料”建立联系,因此产品与材料之间的“使用”联系也可以消去。一般来说,凡是由基本数据可以计算出来的数据均可看作冗余数据;凡是由基本联系可以导出的联系均可看作冗余联系。冗余数据和冗余联系的存在,不仅浪费存储空间,同时会增加数据管理的困难,在增、删、改操作中易破坏数据的一致性。在个别情况下,为了提高查询操作效率,有意保留一定量的冗余信息也是必要的。通过对两个局部模型的综合分析,得到两个部门的总体E-R模型,见图10-46。上一页下一页返回10.6工程数据库总体E-R模型建立之后,结合具体计算机数据库系统,着手建立数据模型。目前使用的数据库系统可分为三种数据模型:关系模型、网状模型、层次模型。(1)关系数据模型。在这种数据模型中,存储与数据库中的所有实体以及实体间的真实相关性,都用“关系”的概念来描述。关系定义为一组在结构上完全相同的K元组(KTUPIES),这些K元组由数据元素组成。关系的描述由它的各个域(名字和值的类型)描述构成。(2)层次数据模型。这种模型表示实体及不同实体间的层次关系。每一实体被表示其层次关系。这样,树即为一组“与根记录相关的记录”,其中每一相关记录不能脱离根记录而存在。上一页下一页返回10.6工程数据库(3)网状数据模型。这种模型可描述实体间的任何关系(包括分层关系)。每一实体被表示成一个记录,它可以属于多个记录,而导致一网状结构。网状结构可采用两记录间链路集(LINK-SET)的概念来表示。4.事物型商用数据库系统的体系结构1975年,美国ANSI/SPARC数据库管理系统研究组的研究报告提出了数据库三级结构的建议,即一个数据库的数据模式结构从逻辑上可分为外部级、概念级和内部级三级。该结构已成为目前世界上各种类型和各种应用数据库系统的体系结构的依据。数据库系统的三级模式结构是概念模式、外模式和内模式。如图10-47所示。上一页下一页返回10.6工程数据库外模式又称子模式或用户模式,是数据库用户看到的数据视图,它是三级结构中最接近于用户的级。每个用户必须以自己观点使用一个外部模式来对数据库的部分数据结构进行逻辑描述。即描述用户视图中记录的组成、相互联系、数据项的特征、数据的安全性和完整性约束条件等。概念模式又称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述。一个数据库允许许多不同的外部模式,但只有一个概念式,它描述整个数据库的逻辑结构,包括现实世界中实体的性质与联系,定义记录、数据项、数据的完整性约束及记录之间的联系。概念模式通常简称模式。上一页下一页返回10.6工程数据库子模式是模式的一个子集,从一个模式可以导出不同的子模式。内模式又称存储模式,是数据在数据库系统内部的表示,即为数据的物理结构和存储方式的描述,包括各种存储记录的类型、索引及索引字段、记录的物理存储顺序等。数据库系统的三级模式是数据的三个抽象级别,使用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中的表示和存储。为了实现三个抽象层次的联系和转换,数据库系统在三级模式中提供两个映像:外模式/概念模式映像和概念模式/内模式映像。10.6.2.2工程数据库的系统结构上一页下一页返回10.6工程数据库在通常的工程应用中,工程数据可被分为两大类:①标准数据,也称稳定数据,它大部分是设计的最终结果,或是公共信息,这类数据能在一定的时间内保持不变。②设计过程数据,也称不稳定数据,它随着设计的进行而变化,包括值的变化与模式的变化。现在,越来越多的人认识到,在工程设计方面的信息处理中,一般用的事务管理型数据库管理系统已经很不方便,甚至无法满足复杂的设计要求。这一方面表现在传统的数据模型(如层次、网状、关系)不能满足工程设计的复杂需要,另一方面也表现在通用事务型的数据库管理系统的体系结构不能满足使用的需要。其原因有三:上一页下一页返回10.6工程数据库(1)工程设计过程是按照给定的、具有多种限制的目标定义最优概念模式的过程,因此,那些已有的数据库管理系统(DBMS)中固定静止的模式所描述的信息仅能用于具有固定结构的设计项目的参数设计。(2)仅仅用传统的程序设计语言来描述设计过程所要描述的一切是不适用的。(3)在现有的工厂环境下,许多数据和应用已经存在并且在生产中发挥着重要的作用,新系统不可能废弃或重新构造它们。这些数据和应用可能是存在于多个计算机系统和多个数据库系统之上,若要共享这些旧数据,传统的和现有的DB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论