您现在所在的位置是:首页 > 业界新闻

传统商业管理软件设计

在商业管理软件生存期中,软件设计处于需求分析及软件构造(或程序设计)阶段之间。需求分析的主要任务是明确“做什么”,而软件设计的任务是回答“怎么做”。它是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。
软件设计有很多设计方法或技巧,通过借鉴他人的经验会让这件事完成得更好。同时,设计者们也可以利用成熟的标记法将他们的想法和计划传达给开发者以及其他相关人员,使他们更好地了解这个系统。

1.1软件设计的概念与原则
1.1.1软件设计的概念
在商业管理软件开发的生命周期中,软件设计是在软件描述提供的的基础上,对软件需求进行分析以形成软件内部结构的描述说明的活动之一。它是对程序结构、数据结构、过程细节和接口细节逐步细化、评审和编写文档的过程。从技术角度上,软件设计分成体系结构设计、数据设计、过程设计和接口设计等方面的工作。设计必须实现需求分析模型中描述的所有显示的需求,也需要满足用户希望的所有隐式的需求;设计必须是可读、可理解的,使得将来易于编程、测试和维护;设计应从实现角度出发,给出数据、功能、行为相关的软件全貌。
商业管理软件设计的重要性和地位可以概括以下:
(1)软件设计是开发阶段中最重要的步骤,是将需求准确地转化为完整的软件产品的唯一途径和桥梁。
(2)软件设计的结果会最终影响软件实现的成败。
(3)软件设计是软件程序设计和软件维护的基础。

1.1.2软件设计的原则
软件设计方法经过了几十年的发展和演变,已经总结出了一些能够产生良好的软件设计的原则,这些原则都经过时间的考验,成为设计人员进行复杂软件系统设计的基础,它们包括如下的一些原则。
1.模块化
在软件设计中,为了对复杂系统的设计进行简化,往往需要对系统进行模块化分解。所谓模块化就是将整体软件系统划分成许多个逻辑上相对独立且可独立访问的模块,不同的模块通常具有不同的功能。模块是程序中逻辑上相对独立的单元,每个模块可独立地进行设计、开发和测试,最后所有模块组装在一起从而形成一个完整的软件系统。在结构化方法中,一个模块可能是一个过程、函数或子程序等,它是构成软件的基本构件。
过大的模块往往是由于分解不充分,需要对其进行分解。在进行模块化分解时,虽然所划分的模块数目增加时,每个模块的规模和开发单个模块的成本会减少;但是随着模块数目的增加,各个模块之间关系的复杂程度就会增加,从而导致设计模块间接口所需要的工作量和成本急剧变化。因此,尽管模块化可以对复杂的问题进行简化,但模块的划分并不是越小越好,而是应该使模块的大小保持适中。
2.信息隐藏
信息隐藏是指采用封装技术,将程序模块的实现细节(如操作、数据类型等等)隐藏起来,对于其他模块来说只能通过接口来对隐藏的信息进行访问。按照信息隐藏的原则,系统中的模块应设计成“黑箱”,其他模块或者模块外部只能使用模块接口说明中给出的信息。
3.模块独立性
模块的独立性是指软件系统中每个模块只能完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。模块的独立性一般采用模块间的耦合性和内聚性来进行度量。高内聚、低耦合的模块的独立性就会比较强。

1)耦合性
耦合性是衡量模块间结构性能的重要指标,它是软件系统中各个模块之间互相连接的紧密程度的度量。模块之间的连接越紧密,联系越多,耦合性就越高,独立性就越弱。影响模块间耦合程度有三方面的因素:
(i)模块之间的联系方式:模块通过什么方式进行联系。
(2)模块之间来往的信息:模块间传递什么的信息。
(3)传递信息的数量:模块间来往信息的多少。
这三个因素可用三维坐标表示,如图7-I所示,离坐标原点越远,耦合程度越高。
模块之间的联系方式有两种:直接引用和用过程语句调用。直接引用是指一个模块直接存取另一个模块的某些信息;用过程语句调用则是通过模块的名字调用整个模块,一个模块只有一个入口,所有数据来往都以参数显式出现。直接引用的模块间耦合度较高,用过程语句调用的模块间耦合程度比较低。
模块间的来往信息可作为数据使用,也可作为控制信息使用。
对于模块间来往信息的数量,很明显,模块间传递的信息量越大,它们之间的耦合程度越高。
一般模块之间的耦合度有下面7种类型:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合和非直接耦合,它们之间的高低和模块独立性之间的强弱关系如图7-2所示。
(1)非直接耦合(NondirectCoupling)。如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。非直接耦合的模块之间独立性最强。
(2)数据耦合(DataCoupling)。如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。
数据耦合时,两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递,按数据耦合开发的程序界面简单、安全可靠。因此,数据耦合是松散的耦合,模块之间的独立性比较强。在软件程序结构中必须有这类耦合。
(3)标记耦合(StampCoupling)。如果一组模块通过参数表来传递记录信息,就是标记耦合。此时,两个模块之间传递的是数据结构,如高级语言中的数组名、记录名和文件名等标记,其实传递的是这个数据结构的地址,即按结构名对此记录进行操作。由于标记耦合会使数据结构上的操作复杂化,因此,在设计中应尽量避免这种耦合。采取“信息隐藏”的方法把对数据结构和加在它上面的操作全部集中在一个模块中,可以消除这种耦合。
(4)控制耦合(ControlCoupling)。如果一个模块通过控制信息(如开关、标志等)来选择另一模块的功能,就是控制耦合。控制耦合的实质是在单一接口上选择多功能模块中的某项功能。对于控制耦合来说,一方面,它意味着控制模块必须知道所控制模块内部的一些逻辑关系;另一方面,所控制模块的任何修改,都会对控制模块产生影响。这些都会降低模块的独立性。
(5)外部耦合(ExternalCoupling)。一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,称之为外部耦合。例如,C语言程序中各个模块都访问被说明为extern类型的外部变量。外部耦合引起的问题类似于公共耦合,区别在于在外部耦合中不存在依赖于一个数据结构内部各项的物理安排。
(6)公共耦合(CommonCoupling)。若一组模块都访问同一个公共数据环境进行相互作用,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、内存的公共覆盖区、共享的通信区等。
一般而言,公共耦合会引起如下一些问题:
①所有的公共耦合模块都会与一个公共数据环境内部各项的物理安排有关,若修改某个数据,将会影响到所有的公共耦合模块。
②无法控制各个公共耦合模块对公共数据的存取,这就会严重影响模块的可靠性和适应性。
(7)内容耦合(ContentCoupling)。内容耦合是最高程度的耦合,也是最差的耦合。如果两
个模块之间发生下列情形,就称它们之间发生了内容耦合:
①一个模块可以直接访问另一个模块的内部数据。
②一个模块通过非正常入口而转入另一个模块内部。
③两个模块有一部分程序代码重叠(只可能出现在汇编语言中)。
④一个模块存在多个入口。
当存在内容耦合时,对所访问模块进行任何的变更,或者用不同的编译器对它再编译,都会造成程序的错误。目前,大多数高级程序设计语言的语法规则已经不允许出现内容耦合,它一般出现在汇编语言程序中。内容耦合是模块独立性最弱的耦合。
这七种耦合类型是由Myers从耦合的机制的角度出发提出的分类,它们按照耦合的松紧程度来进行排列,为设计人员在设计结构时提供了一个决策准则。但是,模块之间的耦合往往不只是一种类型,可能是多种类型的混合。这就要求设计人员按照这七种耦合类型进行分析和比较,并不断加以改进,以降低模块之间的耦合度。
模块之间的耦合度依赖的因素包括:
(1)一个模块对另一个模块的引用。
(2)一个模块向另一个模块传递的数据信息。
(3)一个模块施加于另一个模块的控制信息。
(4)模块之间接口的复杂程度。
因此,在进行系统模块化设计时,为了降低模块之间的耦合度,可以采用如下的一些方法:
(1)根据问题的特点和模块间传递信息的类型来选择适当的耦合类型。模块间传递信息的类型分为数据信息和控制信息两种,传送数据信息的模块的耦合度比传送控制信息的模块耦合度要低。
(2)降低模块接口的复杂性。导致模块接口复杂性的因素包括传送信息的数量、传送信息的结构和接口之间的联系方式。降低模块接1:3的复杂性可以采用分解被调用模块成更小模块、减少模块接口的参数个数、提供标准化的信息传递方式等方法来实现。
(3)把模块的通信信息放在缓冲区中,可以保持了通信流中元素的顺序,减少模块间互相等待的时间。

2)内聚度
内聚性是一个模块内部各个元素之间彼此相互结合的紧密程度的度量。一个模块内部各个元素之间的联系越紧密,则内聚性就越高,它与其他模块之间的耦合性就会减弱,独立性就越强。一个内聚程度高的模块应当只完成软件过程中的一个单一的任务,而不与程序其他部分的过程发生联系,即一个内聚性高的模块(在理想情况下)应当只做一件事。
一般模块的内聚性分为偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚等7种类型,它们的高低与模块独立性之间的关系如图7—3所示。
(1)偶然内聚(CoincidentalCohesion)。
偶然内聚又称为巧合内聚,是指模块内各部分之间没有联系,或者只有非常松散的联系的内聚形式。偶然内聚模块是内聚程度最低的模块。偶然内聚模块的内容往往不易理解,很难描述它所完成的功能,增加了程序的模糊性。
(2)逻辑内聚(I。ogiealCohesion)。
逻辑内聚模块把几种相关的功能组合在一起,每次被调用时,由传送给模块参数来确定该模块应完成哪一种功能。逻辑内聚模块比巧合内聚模块的内聚程度要高,模块内各部分之间在功能上存在相关关系。但是它所执行的不是一种功能。而是执行若干功能中的一种,因此它不易修改。另外,当调用时需要进行控制参数的传递,这就增加了模块间的耦合程度。
(3)时间内聚(ClassicalCohesion)。
时间内聚模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行,即把需要同时执行的动作组合在一起形成的模块为时间内聚模块。如初始化模块和终止模块。由于时间内聚模块中所有各部分都要在同一时间段内执行,各部分可以任意的顺序执行,因此内部逻辑更简单。
(4)过程内聚(ProceduralCohesion)。
过程内聚模块中操作的组合方式是允许在调用前面的操作之后,马上调用后面的操作,即使两者之间没有数据进行传递。使用流程图作为工具设计程序的时候,常常通过流程图来确定模块划分。把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如.把流程图中的循环部分、判定部分和计算部分分成三个模块,这样,它们都是过程内聚模块。
(5)通信内聚(CommunicationalCohesion)。
通信内聚是指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或者产生相同的输出数据。
通信内聚模块中往往包括了许多独立的功能,因此它们的内聚程度比过程内聚模块的内聚程度要高。但是,由于通信内聚模块中的功能部分使用了相同的输入/输出缓冲区,因而会降低整个系统的效率。
(6)信息内聚(InformationalCohesion)。
信息内聚模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的人口点。信息内聚模块包括在符号表中查找登记项、把新登记项登录到符号表中、从符号表中删除一个登记项、修改一个指定的登记项等4个功能。模块将根据不同的要求,确定该执行哪一个功能。
信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。
(7)功能内聚(FunctionalCohesion)。
功能内聚是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。功能内聚模块的功能是明确的,模块间的耦合是简单的,因此它们容易修改和维护。但是,如果把一个功能分成两个模块来处理,就会导致两个模块之间的耦合性很强。
在程序结构中,各模块的内聚和耦合是相互关联的,内聚度越高,模块间的耦合度就越低,但是这也不是绝对的。软件结构设计的目标是力求增加模块的内聚度,尽量减少模块之间的耦合度。一般而言,增加模块的内聚度比减少耦合度更重要,因此应当把更多的注意力集中到提高模块的内聚度上来。
4.深度、宽度、扇出和扇入都应适当
深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度。深度和程序长度之间应该有粗略的对应关系,当然这个对应关系是在一定范围内变化的。如果层数过多则应该考虑是否有许多管理模块过分简单了,能否适当合并。
宽度是软件结构内同一个层次上的模块总数的最大值。一般说来,宽度越大系统越复杂。对宽度影响最大的因素是模块的扇出。
模块的扇出是指一个模块直接控制(调用)的下层模块数目,如图7—4所示。扇出过大意味着模块过分复杂,需要控制和协调过多一的下级模块;扇出过小也不好。一般认为,设计得好的系统平均扇出是3或4。一个模块的扇出数过大或过小都不理想,过大比过小更严重。一般认为扇出的上限不超过7。扇出过大意味着管理模块过于复杂,需要控制和协调过多的下级。解决的办法是适当增加中间层次。
一个模块的扇入是指有多少个上级模块调用它,扇入越大则共享该模块的上级模块数目越多。但是不能为了获得高扇入而不惜代价,例如,把彼此无关的功能凑在一起构成一个模块,虽然扇人数高了,但这样的模块内聚程度必然低。这是应该避免的。观察大量软件系统后发现,设计得好的系统,上层模块有较高的扇出,下层模块有较高的扇人。
5.模块功能应该可以预测
模块的功能应该能够预测,但也要防止模块功能过分局限。
如果一个模块可以当做一个黑盒子,也就是说,只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。如果一个模块只完成一个单独的子功能,则呈现高内聚。但是,如果一个模块任意限制局部数据结构的大小,过分限制在控制流中可以做出的选择或者外部接口的模式,那么这种模块的功能就过分局限,使用范围也就过分狭窄了。

1.2结构化设计方法
结构化设计方法是在传统软件工程中使用得最广的一种设计方法,是基于模块化、自顶向下细化、结构化分析等技术基础发展起来的,它为软件设计人员给出了一系列在模块层上进行设计的原理与技术。结构化设计方法的基本思想是将系统设计成由相对独立、功能单一的模块组成的结构。
结构化设计方法通常与结构化分析方法衔接起来共同使用,以数据流图为基础得到软件的模块结构。在设计过程中,它从整个程序的结构出发,利用模块结构图表述程序模块之间的关系。因此,该方法尤其适用于以变换型结构或事务型结构为目标的系统(关于这两种结构后面会具体介绍)。
结构化设计一般分为体系结构设计和构件设计两个阶段。

1.体系结构设计
体系结构设计也称为总体设计或结构设计,其目的是为了反映系统的功能实现以及模块与模块之间的联系与通信,并把系统的功能需求分配给软件结构,形成软件的模块结构图(Struc—tureChart,SC)。
体系结构设计主要包括以下内容:
(1)软件系统结构设计:划分系统功能模块,确定模块之间的关系。
(2)数据结构及数据库设计:实现需求规约说明中的数据对象的逻辑表示。
(3)设计文档的编写:包括体系结构设计说明书、数据库设计说明书和集成测试计划等内容。
(4)设计文档评审:对体系结构设计方案是否完整地实现了系统需求分析中规定的功能、性能及设计方案是否可行进行评审。

2.构件设计
构件设计是在体系结构设计的基础上进行的设计,其目的是为模块结构图中的每~个模块确定模块内数据结构、采用的算法以及如何用选定的表达工具来给出清晰的描述。
构件设计中常用的设计工具类型有图形工具、表格工具和语言工具。其中,图形工具包括程序流程图(ProgramFlowDiagram,PFD)、盒图(N—S图)和问题分析图(ProblemAnalysisDia~gram,PAD)等;表格工具类似于判定表;语言工具就是过程设计语言。
1)程序流程图
流程图是指用一些框图来表示模块中的各种操作,其特点是直观形象,灵活性强,易于理解和掌握,但具有很大的随意性。
2)盒图(N—S图)
为避免流程图在描述程序时的随意性,就用方框代替传统的程序流程图,通常也把这种图称为N—S图。盒图具有过程的作用域明确、不能随意转移控制、容易表示嵌套关系和层次关系以及强烈的结构化等特点。
3)问题分析图
是继流程图和方框图之后,又一种描述详细设计的工具。
4)过程设计语言
过程设计语言也称结构化的英语或伪码语言,它是一种混合语言,采用英语的词汇和结构化程序设计语言的语法来描述怎么实现处理的过程和操作。

1.3变换型设计与事务型设计
1.3.1变换型结构和事务型结构
信息系统的数据流图通常也可分为两种典型的结构,即变换型结构和事务型结构。
变换型结构由三部分组成:输入、数据加工(中心变换)和输出。在变换型结构中,信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。变换型结构的数据流图呈一种线性状态。
事务型结构由3层组成:事务层、操作层和细节层,功能是对接收的事务按其类型选择某一类事务处理,即数据沿输入通路到达一个处理,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。事务型结构的数据流图则呈束状,如图7—6所示,即一束数据流平行流入或流出,可能同时有几个事务要求处理。
这两种典型的结构分别可以通过“变换分析”和“事务分析”技术,导出相应的初始模块结构图。变换分析和事务分析技术的思想是首先设计出顶层模块,然后自顶向下、逐步求精,最后得到一个满足数据流图所表示的系统模块初始结构图,即系统的物理模型。

1.3.2变换型结构设计方法
变换型结构由数据输入、数据加工和数据输出三部分组成,可分三步来导出变换型的模块结构图。
1)找出系统底层逻辑输入,主加工和逻辑输出
可用下面的原则先确定系统的逻辑输入和逻辑输出:
(1)从物理输入端开始一步步向系统的中问移动,直到这样一个数据流,它已不能再被看做系统的输入,则它的前一数据流就是系统的逻辑输入,即离物理输入端最远的,但仍可视为是系统输入的那个数据流就是逻辑输入。
(2)同理,从物理输出端开始,逆数据流方向向中间移动,则离物理输出端最远的,但仍可视为系统输出的那个数据流就是逻辑输出。
(3)介入逻辑输入与逻辑输出间的加工就是主加工。通常在数据流图中多股数据流的汇合处往往是系统的主加工,主加工可能包括数据流图中多个处理框。
在变换型分析中,为了便于处理,可以先不考虑数据流图中的一些支流,如出错处理等。
2)设计顶层模块和第一层模块
图7—7在数据流图中找系统的主加工系统主加工就是顶层模块,也称为主模块或主控制模块,主模块的功能就是整个系统的功能。
在主模块设计完之后,需要设计第一层模块,方法如下:
(1)为每一个逻辑输入画一个输入模块,其功能是向主模块提供数据。
(2)为每一个逻辑输出画一个输出模块,其功能是把主模块提供的数据输出。
(3)为主处理画一个变换模块,其功能是把逻辑输入变换成逻辑输出。
这样,就完成结构图第一层的设计。当然,在设计时应注意主模块与第一层模块之间传送的数据,要与数据流图相对应,如图7-8所示。
3)设计中、下层模块
在顶层模块和第一层模块的基础之上,可以按照自顶向下、逐步求精的思想来画出以下各层模型。
输入模块也需要一个数据来源,且其功能是为调用它的模块提供数据,所以应具有变换的功能,能够将输入数据变换成调用模块需要的数据。因此,每个输人模块可以设计成两个下层模块,其中一个是输入模块,另一个是变换模块。
同理,也可以为每个输出模块设计两个下层模块:一个变换模块和一个输出模块。变换模块将调用模块所提供的数据变换成输出的形式;输出模块将变换后的数据输出。
基于上面的方法,自顶向下逐层递归,直到系统的物理输入端或物理输出端为止,就可以获得与数据流图相对应的初始结构图。在每设计出一个新模块时,也应同时给它起一个能反映模块功能的名字。

1.3.3事务型结构设计方法
对于事务型分析技术而言,其方法和步骤与变换分析方法大体相似,都是按自顶向下,逐步求精的原则进行。但是事务型结构由事务层、操作层和细节层组成,功能是对接收的事务按其类型选择某一类事务处理,因此它们之间的主要差别在于由数据流图到模块结构的映射方式不同,其步骤如下:
(1)以事务为中心来确定系统结构,找出事务中心和事务来源,并按功能对事务进行划分,将功能相同的事务归为同一类,建立事务模块。
(2)为每个事务处理模块建立操作层模块,其方法与变换分析方法类似,但事务处理模块可以共享某些操作模块。
(3)若必要,则为操作层模块定义相应的细节模块,并尽可能使细节模块被多个操作模块将调用模块所提供的数据变换成输出的形式;输出模块将变换后的数据输出。
基于上面的方法,自顶向下逐层递归,直到系统的物理输入端或物理输出端为止,就可以获得与数据流图相对应的初始结构图。在每设计出一个新模块时,也应同时给它起一个能反映模块功能的名字。

1.3.3事务型结构设计方法
对于事务型分析技术而言,其方法和步骤与变换分析方法大体相似,都是按自顶向下,逐步求精的原则进行。但是事务型结构由事务层、操作层和细节层组成,功能是对接收的事务按其类型选择某一类事务处理,因此它们之间的主要差别在于由数据流图到模块结构的映射方式不同,其步骤如下:
(1)以事务为中心来确定系统结构,找出事务中心和事务来源,并按功能对事务进行划分,将功能相同的事务归为同一类,建立事务模块。
(2)为每个事务处理模块建立操作层模块,其方法与变换分析方法类似,但事务处理模块可以共享某些操作模块。
(3)若必要,则为操作层模块定义相应的细节模块,并尽可能使细节模块被多个操作模块共享。
以一个图书管理事务型数据流结构为例进行说明,如图7-9所示。
在事务型分析中,一般包括分析模块和调度模块。分析模块分析事务的类型,调度模块根据不同的类型调用相应的下层模块。
例如,图7-9是一个以事务为中心的数据流图,其中,“确定事务类型”是它的事务中心,由该数据流图经事务分析所得到的模块结构图如图7—10所示。

1.4数据库设计
数据库设计(DatabaseDesign)是指对一个给定的应用环境,构造最优的数据库模式来建立数据库及其对应系统,使之能够满足有效的数据存储和处理要求。数据库设计是根据用户的需求,在特定的数据库管理系统上设计和建立数据库的过程,是软件系统开发过程中的关键技术之一。在数据库领域内,通常把使用数据库的各类系统统称为数据库应用系统。
由于数据库设计的目的是把软件系统中大量的数据按一定的模型组织起来,以实现方便、及时地存储、维护和检索等功能,是软件系统开发和建设的关键和重要组成部分之一,因此数据库设计往往比较复杂,最佳设计不可能一蹴而就,需要一种“反复探寻,逐步求精”的过程。
一般而言,数据库设计通常会包括概念设计、逻辑设计和物理设计等。

1.4.1概念设计
在设计数据库系统时,首先需要把现实世界的事物通过认识和抽象转换为信息世界的概念模型,以便于能够反映系统各部分的信息结构、信息流动情况、信息之间的约束关系及其各部分对信息的储存、加工和查询的要求。因此,数据库概念设计的目的就是面向现实世界来对应用领域中的数据需求进行理解和描述,分析并确定系统需要存储和处理什么数据。
概念设计是整个设计的前期阶段,所得到的概念模型可以看成是现实世界到机器世界的一个过渡的中间层次,它应该独立于数据库的逻辑结构和具体的数据库管理系统,同时所建立的模型应避开在计算机上的具体实现细节,可以用一种抽象的形式来表示出来。
在数据库概念设计中,经常用实体一关系图(Entity—RelationDiagram,E—R图)来建立数据模型。E—R图是指提供了表示实体、属性和关系的方法来描述现实世界中的概念模型,它最早由美籍华裔计算机科学家PeterChen发明,并在数据库设计领域得到了广泛的认同。E—R图是概念数据模型的高层描述所使用的一种数据模型或模式图,它为表述这种实体关系模式图形式的数据模型提供了图形符号。
构成E—R图的基本要素是实体、属性和关系,其表示方法如下所述。
1.实体
用矩形表示,矩形框内写明实体名。
2.属性
实体所具有的某一特性,一个实体可由若干个属性来刻画;用椭圆形表示,并用无向边将其与相应的实体连接起来,多值属性由双线连接,主属性名称下加下划线。比如学生的姓名、学号、性别都可以作为属性。
3.关系
数据对象彼此之间相互连接的方式,用菱形表示,菱形框内写明关系名,并用无向边分别与有关实体连接起来,同时在无向边旁标明关系的类型。
在E—R图中关系的类型包括如下三种类型。
1)一对一关系(1:1)
例如,一个部门有一个经理,并且每个经理只在一个部门任职,那么部门与经理之间就是一对一的关系。
2)一对多关系(1:竹)
例如,学校中班级与学生之间存在一对多的关系,即每个班级可以有多名学生,但是每个学生只能属于一个班级。
3)多对多关系(m:咒)
例如,学校教师与课程之间存在多对多的关系,即每位教师可以教多门课程,而每门课程也可以由多位教师来教。
在E—R图中,对于一对一关系,在两个实体连线方向都写上1一对多关系在两个实体连线方向分布写上1和押(多的一方);多对多关系则是在两个实体连线方向各写上扎和m。具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体。例如,某学校教学管理系统的E—R图如图7~11所示,其中教师与课程之间的关系(“教”)是多对多的,学生与课程间的关系(“学”)也是多对多的,也就是说一个学生可以学多门课程,而每门课程可以有多个学生来学。E—R图中的关系也可能有属性,例如,此系统中的课程成绩,它既依赖于某个特定的学生又依赖于某门特定的课程,因此既不能作为学生的属性也不能作为课程的属性,所以应该看成学生与课程之间的关系“学”的属性。

1.4.2逻辑设计
概念设计中所得的E-R图是对用户需求的一种抽象表达形式,它独立于任何一种具体的数据模型,因而也不能为任何一个具体的数据库管理系统(DatabaseManagementSystem,DBMS)所支持。数据库逻辑设计的主要工作是将现实世界的概念数据模型(概念设计阶段设计的基本E—R图)设计成一种适应于某种特定数据库管理系统所支持的逻辑数据模式,然后根据逻辑设计的准则、数据的语义约束、规范化理论等对数据模型进行适当的调整和优化,形成合理的全局逻辑结构。在数据库的逻辑设计中,也可能会需要为各种数据处理应用领域产生相应的逻辑子模式。
因此,数据库的逻辑设计步骤如下:
(1)将E-R图转换为特定的数据模型,一般有关系模型、网状模型和层次模型等。
(2)将转换出的关系模型、网状模型或层次模型向特定DBMS支持的数据模型进行转换。
(3)对数据模型进行优化。
由于目前使用的数据库大多数都是关系数据库,因此一般需要将E—R图转换为关系模型。关系模型是由一组关系的结合,通常用二维表表示,而E—R模型则是由实体、实体的属性和实体间的关系三个要素组成,所以将E—R图转换为关系模型实际上就是要将实体、属性和关系转化为关系模型,具体转换的规则如下。
(1)一个实体类型转换为一个关系模型,实体的属性就是关系的属性,实体的键就是关系的键(键也称为码)。
例如,可将“学生”实体转换为一个关系模型,如图7-12所示。其中,带下划线的属性为主属性,该主属性为关系模型主键。
注意:主键是能确定一条记录的唯一标识;外键用于与另一张表的关联,是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那它就可以是A表的外键。
(2)一对一关系(1:1)的转换。
一个l:1关系可以转换为一个独立的关系模式,也可以与任意一端的关系模型合并。
如果转换为一个独立的关系模型,则关系名就是关系模型名,与该关系相连的两个实体的键及关系本身的属性为关系模型的属性,且每个实体的键均是该关系模型的候选键。
如果该关系与某一端对应的关系模型合并,可将相关的两个实体分别转换为两个关系,并在任意一个关系的属性中加入另一个关系的主键,即需要在该关系模型的属性中1JUA另一个关系模型的键和关系本身的属性。
例如,若某学院的每个实验室只配备了一名管理员,那么实验室实体与管理员实体问便为1:1关系。根据以上介绍的原则,可以进行如图7—13所示的变换。
(3)一对多关系(1:咒)的转换。
一个1:咒关系也有两种转换方式:转换为一个独立的关系模型或者与行端对应的关系模型进行合并。
如果转换为一个独立的关系模式,则关系名就是关系模型名,与该关系相连的各实体的键以及关系本身的属性均转换为关系的属性,而关系的键为咒端实体的键。
如果将该关系与咒端关系进行合并,则1端的键及关系的属性并入”端的关系模型即可。如图7—14所示,实体“专业”和“学生”之间的关系为1:咒,则两者可使用以上的原则进行关系模型的转换。
(4)多对多关系(研:咒)的转换。
一个m:,z关系转换为一个关系模式,关系模型名为关系名,与该关系相连的各实体的键以及关系本身的属性均转换为关系的属性,而关系的键为各实体键的组合。
例如,在学校中,每位教师可以教多门课程,而每门课程也可以由多位教师来教,则实体“教师”与“课程”之间满足多对多的关系,并且需要对教师所教的每门课程进行考评,其转换方法如图7—15所示。
(5)三个及其以上实体间的多元关系转换为一个关系模型。与该多元关系相连的各实体的 键以及关系本身的属性均转换为关系的属性,关系的键为各实体键的组合。
(6)同一实体集的各实体间的关系(也称为自关系),也可以分别按上述1:l、1:押和m:以 三种情况进行处理。
(7)具有相同键的关系模式可以合并。

1.5结构化程序设计
结构化程序设计的概念最早由E.W.Dijikstra在1965年提出的。它的主要观点是采用自顶向下、逐步求精的程序设计方法来对程序进行构造。结构化程序设计的概念、方法和支持这些方法的一整套软件工具,构成了结构化革命。这是存储程序计算机问世以来,对计算机界影响最大的一个软件概念,被称为软件发展中的第三个里程碑,其影响比前两个里程碑(子程序、高级语言)更为深远。
结构化程序是由若干个基本结构组合而成,每一个结构可以包含若干条语句和其他基本结构。结构化程序设计中包含三种基本的结构:顺序结构、选择结构和循环结构,即任何程序都可由这三种基本控制结构进行构造。
1.顺序结构
顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的,其流程如图7—16所示。事实上,不论程序中包含了什么样的结构,而程序的总流程都是顺序结构的。
2.选择结构
选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。选择结构有单选择、双选择和多选择三种形式。双选择结构如图7—17所示。当语句1和语句2中的任意一个处理为空时,说明结构中只有一个可供选择的分支。也就是说,当条件不满足时,什么也没执行,所以称为单选择结构。
3.循环结构
循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么情况下执行循环?哪些操作需要循环执行?循环结构的基本形式有两种:当型循环和直到型循环,其流程如图7—18所示。
对于什么是结构化程序设计,至今还没有被普遍接受的定义。通常认为结构化程序设计包括以下几方面的内容:
(1)使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑。
(2)限制使用GOTO语句。
从理论上讲,只用顺序结构、选择结构、循环结构这三种基本结构就能表达任何一个只有一个入口和一个出口的程序逻辑。程序中可以完全不用GOTO语句,这种程序易于阅读、易于验证。
(3)选用的控制结构只准有一个入口和一个出口。
(4)白顶向下的设计、程序设计和调试。
这是把逐步求精的方法由程序模块内的设计推广到一个系统的设计与实现。这正是本书介绍的结构化方法的来源。
(5)主程序员制的组织形式。
在软件程序设计中,不同编程员的编程效率不同,差异可达一个数量级。主程序员组是指以一个非常能干的程序员为中心,即主程序员,小组中剩余成员为主程序员提供其他能力和服务。主程序员组结构可以提高编程效率并尽量减少开发系统中不必要的人与人之间的通信连线。
作为这种组织形式中的一个程序员,应具备程序设计的基本知识,对项目所在的领域有较深入的了解,熟悉开发的技术环境,能承担一定的程序编写,更为重要的是必须有高度的组织纪律性和团队精神,使自己的工作融入整个系统,与组内其他成员协调一致地工作。为此,必须严格遵守:
①不使用可能干扰其他模块的命令或函数。
②保持程序风格的一致。
③按总体设计的要求传递参数,不随意修改其内容与含义。
④按统一的原则使用标识符。
⑤按统一要求编写文档。
⑥按规定的统一格式操作公用文件或数据库。

1.6案例分析:系统设计
1.概述
1)部门0A工程的范围及开发原则
OA是一种跨多种学科的技术,主要包括:计算机技术、通信技术、系统科学、行为科学、社会学、经济学和管理学等。oA面对的信息是数据、文字、声音和图像多种形式,这就表明OA工程的复杂性及艰巨性;国外事实证明,OA又是一项耗资圈套的工程项目,所以,部f-iOA工程必须从实际出发,既不能在低水平应用上徘徊,又不能包罗万象,试图一蹴而就。
在开发部门OA工程的过程中必须坚持统一规划、有限目标和扩展的原则,自始至终应用系统工程的方法,正确划分OA边界,确立不同时期的实现目标,避免风险及圈套失误,确保OA工程的完成。
在软件开发上,以密切结合计划工作需要为中心,同时做好成熟、实用的通用软件包的移植、推广和更新工作。
在技术上,尽量采用实用化、工程化成果,避免采用不成熟技术。
用户介入的原则应该是系统建设整体生命周期始终遵循的原则。设计者应在人一机友好接口及用户培养、训练上下功夫。
2)实现部门办公自动化系统的基础条件
成功地开发办公自动化系统必须具备下述条件:
高层领导的支持;
业务部门的配合;
有一定技术力量;
资金落实;
信息源充分。
2.系统目标
1)目标设定的依据
部门OA系统的目标设定过程如图7-19所示,它是根据省经济信息系统的总目标以及部门计划工作的科学化要求而确定的。另一方面,它又以部门的办公环境、资源环境为依据,所以说,系统目标的确定既考虑到了客观需要,又考虑到了实现的可能。
2)目标描述
部门办公自动化系统工程的总目标是:用现代化手段辅助部门的办公活动,改善办公环境,提高办公效率与质量,增进计划工作的科学性、及时性及准确性。总目标分解为功能目标及实施目标两部分。前者是站在用户角度,明确系统所应提供的服务功能,后者是站在系统开发者的立场,明确分阶段的实施内容。
功能目标通过分析用户的需求,提出了系统的主要开发目标,在分析了现行系统现状后,根据用户需求和现状导出了系统的总的功能目标,它表示oA系统最终实现的功能,基本上满足了用户的需求。
3.系统结构
根据系统的功能,画出部门OA系统的全局业务处理流程图,如图7—20所示。整体系统主要分成各专业处室管理子系统群,综合处管理子系统群,投资处管理子系统群和办公室管理子系统群,各子系统群又包括相应的子系统及相应的工具。系统采用分布式系统结构,共享型软件和数据分布存放,独享型软件和数据放入用户自己的工作站。
1)系统的硬件结构
系统的硬件结构如图7-21所示。
2)系统的软件功能结构
系统的软件功能结构(软件实施目标结构图)如图7—22所示。在图7—22中,把整个部门OA系统看成是由独享型、共享型和工具型子系统构成。独享型子系统仅仅供一个处室使用,其他各处室不能访问;当然,如果得到允许,可以采用人工方式共享信息。共享型子系统供全部门共享。工具型子系统为用户提供工作中的工具,以方便某些处理,它们不用单用户方式进行程序设计。共享型子系统和工具型子系统放入服务器上或分布式存放,采用多用户方式进行程序设计。独享型子系统和共享型子系统又分别可以分为事务型、管理型和决策型三类子系统,分别对应于OA系统模式中的事务型、管理型和决策型办公系统。这里提出了系统的总的功能目标,它是通过用户需求和现行系统分析以后导出的。
4.应用系统的软件功能模式
在通常OA系统中按其办公活动所处理的信息范围,可分为事务型(基本型)办公系统,管理型办公系统,决策型(综合型)办公系统三个层次。OA系统三个层次之间的嵌套关系如图7—23所示。
在部门OA系统中,根据系统目标及信息需求调查与环境分析结果,并通过大量的专项调查与分析工作,使对应用系统用户需求的识别明朗化,可以说部门OA系统中,应用软件的开发项目基本覆盖了OA系统软件功能模式的三个层次,只是目前对各层次的开发尝试有所不同。
(1)事务型办公系统:部门办公室担负着全部门各种文件、资料的收发,登记查询传递、统计,报表处理等任务,全年处理各种类型文档量达十万份,大量的收、发、印、存等重复工作,强度大,效率低,易出错,信息利用率低,这种现状急需改变。办公室信息处理的特点及性质归属于典型的事务型办公系统。
(2)管理型办公系统:在这样的综合性管理机构中,计划经济对信息的综合管理、加工、利用等是各业务处的日常工作的主要组成部分,因此在开发过程中,管理型办公系统这一OA层次是系统用户需求最迫切、利用最频繁的层次。它主要是建立起各种管理信息系统,支持各专业领域的数据采集处理和数据分析。辅助专业人员改善办公环境,提高工作效率与质量?增进计划工作的科学性、及时性。
(3)决策型(综合型)办公系统:该部门是国民经济宏观管理、控制的综合性部门,由此提出OA系统的最终目标是建立辅助决策的办公系统,即OA系统的最高层次,来满足部门用户的最高需求。
5.系统环境
部门内部信息主要有参阅文件、办理文件、专题研究报告、计划、规划、项目审批、管理文件和报告,计划实施工作情况,统计分析,简报、资料,法规、标准、定额,刊物、书籍、外文资料等。
信息流向方面,部门信息流向包括部门内部各处室之间信息流向和部门办公楼与外部的信息联系两部分:
(1)部门内部各处室:通过大量数据的汇总、分析,将各处室之间信息交换量的大小按高、中、低进行划分。为使信息流向更加清晰,在此只对交换量较大的信息的传递过程给予描述。描述了以办公室为核心的信息交换关系如图7—24所示。
(2)部门办公楼与外部的信息联系:主要包括部门与省委、省政府、省人大,省政府各委、办、厅、局,各地州市人民政府和部门各下属单位之间的信息联系。
6.系统的网络结构及物理配置
1)网络设计的主导思想
网络设计主要遵循以下原则:
(1)立足于系统环境和信息需求的调查、分析,着眼于部门0A系统实际应用的需要。
(2)既要在尽可能短的时间内建成并投入使用,又要兼顾系统的先进性、生命力,便于系统将来的扩充和发展。
(3)充分利用现有设备资源,以降低投资费用,并使部门用户完成从单机应用到联网应用这两个阶段较平滑的过渡。
(4)服从国家统一总局。
2)oA系统信息网络的总体方案
OA系统信息网络采用局域网+主机的结构形式,这是国外oA系统中大量使用的一种形式,也是拟在部f-1OA系统中实际采用的方案。

1.7案例分析:办公室管理子系统分析与设计
本部分以办公室管理子系统为例,介绍结构化分析与设计的步骤和方法。
1.部门办公室的基本情况
在现有系统中,部门办公室的职责分三大部分,即政务、事务和刊物编辑。政务包括:会议组织、文电处理、秘书事务、档案管理、图书资料以及信息、信访、保密、保卫等工作;事务包括:接待、财务、财产管理、房屋管理、车队、食堂、医务及其他行政事务工作;刊物编辑包括:《计划工作》、《内情能报》和《信息快报》。
人员设备情况,办公室有人员29人,不含车队及服务社,工作主要分为以下几个方面:后勤保障,文秘,财务,档案,刊物编辑,打字,车队和服务社。
2.部门对办公室各项工作的要求
I)主要功能
办公室的主要功能包括六部分,如图7—25所示。
工资管理:管理全部门机关所有工作人员的工资发放。
财务管理:管理全部门的财务运行活动,统计报表,预决算处理。
住房管理:管理全部门机关所有房屋情况,如面积、造价、各类等。
固定资产管理:管理全部门100元以上的固定资产的基本情况,如汽车、设备等。
收发文管理:管理全部门所有的收文、发文、办理等全过程,以协调各处室之间、领导之间公文流动关系。
档案管理:管理全部门的档案,以供检索、查找之用。
2)性能
用户要求能节约大量的手工劳动和重复劳动,响应时间能够容忍,无其他特殊性能要求。
3)输入与输出
(1)工资管理:数据来源于人事处,可一次性输入其中主要部分,量约44KB,类型为数字型与字符型,部分信息每月输入一次,数量少,约3.6KB。输出三种表格,即工资条(发给职工,每月一次),-r资表(财务存档,每月一次),工资汇总表(财务存档用,每月一次)。
(2)财务管理:数据来源于部门内的财务活动及与外单位发生财务联系时所获得的各种凭证、单据,每天都有,量不定。以数字型为主,输出财务月报、季报、半年报、年报和预决算报表,报财政厅存档用。
(3)住房管理:数据来源于办公室资料,量不大,约40KB,可一次性输入绝大部分,当有新房屋建成、旧房屋被拆毁、人员搬迁时发生数据变化,频度不定,类型为数字型与字符型。输出为所存储的数据,以备检索,频度不定,供办公室存档之用。
(4)固定资产管理:数据来源于办公室资料,量不大,约60KB,可一次性输入绝大部分,当新增固定资产或原有固定资产折旧期满报废或被毁坏时发生数据变化,频度不定,类型为字符型和数字型。输出为所有存储的数据,以备检索,频度不定,供办公室使用。
(5)收发文管理:数据来源于中共中央、国务院、省委、省政府、省直各部、委、办、厅、局、各计划单列部门、本部门各处室及其他有关部门,量大,每天约300~500份文件,但只要求计算机处理其中的100份,其中部门每年发文1000多份,类型为文本型,输入存储量约20KG/天。输出供本部门工作人员使用,量及频度不定。
(6)档案管理:数据来源于档案室和收发文管理期限已到的资料,经常性的输入量同收发文管理,但由于历史上残留了大量的档案需进计算机,因此,历史资料的收集、整理量将是巨大的,达几兆之多,类型为文本型,输出供本部门工作人员使用,量及频度不定。
4)处理流程和数据流程
处理流程如图7—26所示,数据流程如图7—27所示。
5)在安全与保密方面的要求
收文、发文及档案管理中(其余系统无保密方面要求)存储的数据分为以下四个密级:绝密、机密、秘密和一般。
对前三类要求系统提供严格的安全与保密措施,按规定授权的人员方有资格查看相应的文件,只有文件主本人才能修改和删除文件。
6)本办公子系统与其他处室的关系
办公室是全部门的日常活动的中心,它同部门内所有的处室均有联系,根据需要可能要求共享其他子系统的信息,也可能向其他各处室提供信息。
其他处室要求略。
3.办公室处理流程图及数据流程图的描述
(1)工资数据:由人事处提供的反映每个职工每月的工资单项的详细信息,是进行工资管理的基础数据。主要包括姓名、基职工资、浮动工资、奖金和房租费等,类型为数字型和字符型。
(2)工资条:反映部门每一职工每月工资存档资料,由姓名、基职、浮动、奖金和水电费等构成,类型为数字型和字符型。
(3)工资表:反映部门每一职工每月的工资情况的表格,用于财务存档,由姓名、基职和浮动等构成,为数字型和字符型数据。
(4)工资汇总表:反映部门及各处室每月单项工资总额,用于财务存档,由基职、浮动、奖金和水电等组成,为数字型和字符型数据。
(5)工资文件:用于存储工资数据,反映部门、处室、职工的完整工资情况,由姓名、基职、浮动、奖金和水电等组成,为数字型和字符型数据。
(6)财务凭证:进行财务处理的基本原始资料和依据,有发票、报销清单和差旅费报销清单等多种。
(7)财务月报:反映财务处理的每月各项主要单项值,由人员经费(工资、补助工资、离退休人员费用等)、公用经费(公务费、设备购置费等)、“工资”目开支职工等组成,多为数字型数据。
(8)预算报表:反映下年预计支出经费的详细数据,内容有工资、补助工资、职工福利费、公务费、设备购置费、修缮费、业务费、其他费用、主要副食品价格补贴和离退休人员费用等,为数字型数据。
(9)决算报表:反映本年各项经费的详细数据。根据工资、补助工资、职工福利费、离退休人员费用、公务费、设备购置费、修缮费、业务费、其他费用、差额补助费和主要副食品价格补贴的訇J分;反映全年预算数,财政部门拨款累计数、银行支出累计数、实际支出累计数,实际支出累计数为年度预算数%,数据均为数字型。
(10)财务文件:反映财务文件的相关主要单项的信息数据,主要有预算、决算单项数据等,为数字型数据。
(11)固定资产数据:反映部门机关内百元以上的固定资产的详细情况,由资产名称,所属处室名称和价格等组成,为数字型和字符型数据。
(12)固定资产表:反映部门机关百元以上固定资产的表格,是进行固定资产管理的基础数据,主要有固定资产名称、所属处室名称和价格等内容,为数字型和字符型数据。
(13)固定资产文件:存储部门机关固定资产的详细数据,主要数据有固定资产名称、所属处室名称和价格等,多为数字型和字符型数据。
(14)房屋信息:主要是提供部门机关房屋使用的基本情况,主要数据项有房屋地点、编号、使用者姓名和房屋面积等,多为数字型和字符型数据,是进行房屋管理的基础信息。
(15)房屋表:提供给办公室房屋管理人员的房屋情况,主要信息有房屋地点、编号、居住者姓名和房屋面积等,多为数字型和字符型数据。
(16)房屋文件:存储部门房屋的各项主要数据,是进行房屋管理信息修改的基础,主要数据有房屋地点、编号、使用者姓名和面积等,为数字型和字符型数据。
(17)发出文件:是由部门各处室起草或办公室起草的有关某一问题部门的文件,发出文件送给相关部门或厅局,由文号、标题、正文和议题词等构成,是文本型文件。
(18)发文信息(草拟文件):由部门处室起草报办公室、部门领导审批的文件草稿,主要由标题、正文和主题词等构成,是文本型文件。
(19)发文文件:存储部门机关发出的相关文件,作为文件资料储存,其元素是一个个发出文件。
(20)收入文件:由中共中央、国务院、各部委办、厅局发送部门的中央级文件,省委、省政府、各部委办厅局发送部门的省级文件,各地州市县及省计划直列单位发送部门的文件、请示、报告,均送办公室,由办公室送相关处室、领导阅或作相应处理,为文本型文件,由文号、发文单位名称、标题和正文等构成。
(21)收文文件:存储各单位发送部门的文件,由收入文件作为其基本元素。
档案信息:反映部门档案的基本信息,有文件档案、基建档案等,多为文本型。
(22)档案文件:存储部门档案的基本信息,其元素是各类档案资料。
(23)查询要求:查询者根据需求按一定内容进出查阅范围的限制条件。
(24)查询结果:根据查询者的查询要求,对数据库进行相应查访,得出相应的结果。
其他处室描述略。
4.数据库系统建设
数据库建设是决定部门OA系统能否正常运行的基础工作,没有合格数据,OA系统便是“无米之妇”。必须采取一套行之有效的行政管理措施,确保系统必须的数据来源。
(1)有关处室负责采集、整理、标准化和规范化的责任。
(2)每个系统必须由有关处室设立专职或兼职的数据建设人员。
(3)不能把数据建设看成是工作之外的额外负担,而应当当成本职工作来抓。
(4)由于数据建设不成功造成系统开发失败,责任在用户;由于软件开发不成功造成系统开发失败,责任在开发者。
(5)不尽事宜由部门0A领导小组协调。
从所见到的资料来看,国内所开发的信息系统有大多数都是失败的,其中关键的原因在于数据系统建设的失败。所以必须高度重视数据系统的建设,否则,投入了大量人、财、物的同时,OA系统无法正常运行并发挥应有效益,实际上等于失败。
以下为办公室管理子系统中的数据库设计。
数据库软件选择方面,选用ORACLE关系型数据库管理系统及SQL数据库语言、FoxbasePlus关系型数据库管理系统及数据库语言。
办公室管理子系统主要是管理省部门中的各种文件和资产的信息,所以从数据库设计的角度来讲,涉及两类实体,即用户和相关文件信息;管理的是两类实体以及它们之间的关系。其中,用户包括:一般工作人员(主要从事查询工作)和文件信息管理员(主要从事文件和信息的管理工作)。用户实体主要有以下一些属性:账号(即职工编号)、密码、权限、姓名、性别和出生年月等个人信息;文件和相关信息主要包括工资、财务、固定资产、档案、房屋、收文文件和发文文件等条目。办公室管理子系统的E—R图如图7—28所示。
由于一般用户只具有查询和上传(确定上传后不可重复上传)权限,因此有必要设置具有更高权限的管理员账号,在对用户账号管理的同时,从事对各种文件、信息的修改删除工作,所以还需要有一个存储管理员用户名和密码的管理员表。依据上面的E—R图,可以设计10张逻辑表:用户表、工资表、财务报表(包括预算报表和决算报表两张)、固定资产表、档案表、房屋信息表、收文文件表、发文文件表和管理员表,各逻辑表的结构如表7—1所示。
为了能将逻辑表表达的信息存人数据库,方便数据库进行方便的处理,接着将逻辑表转化为数据库表(即物理表)。根据逻辑表,得出办公室管理子系统各个表的物理结构,如表7—2~表7-11所示为相应逻辑表的物理表结构。
根据用户的职位职责的不同,用户被分配不同的权限。一般用户仅能查询本人的相关信息,例如职工号,姓名,个人工资等方面信息。办公室管理人员可以查询办公室管理子系统内部的整体信息,档案管理人员除具有一般用户权限外还具有对档案的上传、修改、删除等的权限。系统管理员添加、删除、修改账户、文件和信息等的权限。第一年的预算报表同第二年的决算报表存在一定的关联关系,其他各表相互独立。

文章来源:秘奥软件网,中小企业信息化领跑者!全国咨询热线:400-9908-527_www.misall.com

最新新闻: