(20), (3), ());
或
( (8) , (10), (1), (20), (3));
(二)外键约束 (参照完整性)
格式: (属性名) 表名(属性名) [ [ ]]
指明删除参照关系的元组时,同时删除参照关系中的元组。
(三)属性值上的约束 和
如果要求某属性为空,在定义时在数据类型的后面加上 。 如, ( (8), (10) , (1), (20), (3), ());
在表中,要求男生的年龄在15-25之间,女生的年龄在15-24之间。 如, ( (8), (10) , (1), (20), (3), ())
( >=15 (('M' <=25) ('F' <24)));
(四)全局约束
全局约束是指一些较复杂的完整性约束,会涉及到多个属性间的联系或多个关系间的联系。分为两种:基于元组的检查子句和断言。
1)使用子句对单个关系的元组值加以约束,可以在关系的定义中的任何地方加上及约束条件;
2)断言: <断言名> (<条件>)
例如,在教学数据库模式中加一个约束,不允许男同学选修“张勇”教师的课。 -1 (
( * ( C '张勇')
( 'M')));
又如,在中有一个约束,每门课最多允许50名男同学选修。 -2
(50>=( ()
'M' ));
36 / 56
(五)授权与销权,数据控制应具有这样的功能,通过和将授权通知系统并存入数据字典;当用户提出请求时,检查其授权情况。 授权语句格式:
<权限>[,<权限>]... [<对象类型><对象名>] <用户>[,<用户>]... [ ];
与 :参数可以将权限授给所有用户;后者使获得授权的用户还可以将此权限授给其它用户。
例如,将对供应商S、零件P及项目J的所有操作权限授给用户1及2。 S, P, J 12;
将S的插入权限授组1,并允许将此权限授给其他用户。 S 1 ;
把数据库中建立表的权限授给用户1。 1;
收回授权语句格式: <权限>[,<权限>]...
[ <对象类型><对象名>] <用户>[,<用户>]...;
例如, S , P, J 12;
S 1 ;
S ;
() S 1; --将权限的控制定位在某一个属性上
6、触发器,触发器是一种特殊类型的存储过程,它是通过事件触发而执行的。主要特点是,当被声明的事件发生时触发器被激活;触发器激活后不会立即执行,而是先测试触发条件;如果触发条件满足,则由执行与该触发器相连的动作。
创建触发器,不同数据库使用的触发器语法不同。
例:假定银行数据库关系模式为: (, ) (, , ) (, )
假定银行在处理透支时,不是将账户余额设成负值,而是将账户余额设置为零,并且建立一笔贷款,其金额为透支金额。这笔贷款的贷款号应该等该透支帐户的账户号。采用-99标准创建触发器如下:
<0 ( , );
(, , ); 0
<0是触发条件;
... 子句用来将多行语句集成为一个复合语句。其中前两条 语句表示在和关系中建立新的贷款业务,语句用来将账户余额清零。
子句建立一个变量,用来存储已经被更新或删除的行的旧值。 可以被和语句使用,可以存放经过更新的新值。
或 子句可以用来指向临时表,使之容纳所有被影响的行。临时表不能使用触发器,但可以用触发器。
37 / 56
触发器在事件之前被激发,可以避免非法更新。
例9.45:仓库管理数据库中有如下关系, (, ),表示仓库中某种商品的现有量。 (, ),表示仓库中存有某种商品的量小量。
(, ),表示某种商品小于最小量时要订购的数量。 (, ),表示定购某种商品的量。
我怀疑应该是 ,
<= ( = ) > ( = )
( , = )
删除触发器: {}[]
10.系统开发与运行
1、软件工程知识
软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。其目的是提高软件生产率,提高软件质量,降低软件成本。
在经历60年代的软件开发危机后,人们开展了软件开发模型、开发方法、工具与环境的研究,提出了瀑布模型、深化模型、螺旋模型和喷泉模型等开发模型,出现了面向数据流方法、面向数据结构的方法和面向对象方法等开发方法,以及一批计算机辅助的软件工程工具和环境。
2、软件生存周期:可以分为6个阶段。计划制定、需求分析、设计、编码、测试、运行维护。
计划制定: 确定待开发软件系统的总目标,对其进行可行性分析,并对资源分配,合理安排进度计划。
参加人员有,用户、项目负责人和系统分析员。
该阶段产生的文档有,可行性分析报告和项目计划书。
需求分析: 确定系统功能、性能、数据及界面等要求,从而确定系统的逻辑模型。
参加人员有,用户、项目负责人和系统分析员。
产生的文档有,需求规格说明书。
软件设计: 分为概要设计和详细设计。
概要设计参加人员为,系统分析员和高级程序员;详细设计参加人员有,高级程序员和程序员。
该阶段产生的文档有,设计规格说明书(可以分为概要设计说明书和详细设计说明书)。
编码: 产生的文档为源程序清单。
测试: 文档为测试计划和测试报告。
运行及维护
38 / 56
3、软件开发项目管理基础知识
成本管理:有两种方法。 开发费用 = 人月数 * 每个人月的代价 开发费用 = 源代码行数 * 每行平均费用
风险分析:涉及3个概念,一是关心未来,第二是关系变化,第三是要解决选择问题。风险分析实际包括4个活动:风险识别、风险预测、风险评估和风险控制。
进度管理:有两种安排方式,一是交付日期已确定,另一个是仅确定了大致的日期,最终交付日期由开发部门确定。常用两种图形描述方法。
甘特图,横轴表示时间,纵轴表示任务,水平线表示任务的进度安排。它可以很好的描述任务间的并行性,但不能反映任务间的依 赖关系,不能确定整个项目的关键;
图, 是一个有向图,图中的箭头表示任务,图中的结点称为事件,表示流入结点的任务的结点和流出结点的任务的开始。仅当流入结点的任务都结束时,该事件才出现,流出结点的任务才能开始。每个任务有一个松驰时间。为了表示任务间的关系,图中还可以加入一些空任务(虚线表示)。一个事件有事件号、出现该事件的最早时刻、最迟时刻。松驰事件为0的任务构成了关键路径。图不能反映任务的并行性。
人员管理:主程序员组、无主程序员组、层次式程序员组。
4、软件开发方法:主要掌握3种方法,分别是结构化方法、面向对象方法和原型法。
结构化方法:是目前最成熟的开发方法之一,分为结构化分析和结构化设计。
面向对象方法:从现实世界中客观存在的事物出发来构造软件系统。软件系统适用的业务范围称作软件的问题领域,把问题领域中事物的特征抽象地描述成类,由类建立的对象作为系统的基本构成单位,它们的内部属性与服务描述了客观存在的事物的静态和动态特征。对象类之间的继承关系、聚集关系、消息和关联反映了问题域中事物之间实际存在的各种关系。
原型法:在获得一组基本需求后,快速地加以实现,随着用户和开发人员对系统理解的加深而不断进行补充和细化,是一种动态定义技术。
5、软件开发环境:是指支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成。环境集成机制为工具集成和软件开发、维护及管理提供统一的支持,通常包括数据集成、控制集成和界面集成。有几个特征,环境的服务是集成的;环境的服务可用于各种软件开发活动;环境应支持小组工作方式。
6、9126软件质量模型
由3个层次组成,分别是:质量特性--质量子特性--量度指标。
质量特性(质量子特性):
功能性(适合性、准确性、互用性、依从性、安全性) 可靠性(成熟性、容错性、易恢复性) 易使用性(易理解性、易学性、易操作性) 效率 (时间特性、资源特性)
可维护性(易分析性、易改变性、稳定性、易测试性) 可移值性(适应性、易安装性、一致性、易替换性)
软件质量模型,从软件产品的运行、修正和转移3个方面确定了11个质量特性。 产品运行(正确性、可靠性、易使用性、效率、完整性) 产品修正(可维护性、灵活性、可测试性) 产品转移(可移值性、复用性、互用性)
7、软件质量保证:是指为提高软件质量而进行的有计划、有组织的活动。
软件质量保证包括的7个主要活动相关的任务:应用技术方法、进行正式的技术评审、软件测试、标准的实施、控制变量、量度、记录保存和报告。
8、软件过程能力评估
软件产品的质量取决于软件开发过程。
39 / 56
软件过程评估,是软件改进和软件能力评价的前提。
软件过程评估的意义:是软件过程改进的需要。软件过程不断改进是软件工程的基本原理之一;软件过程改进是软件生存周期的基本过程之一。 是降低软件风险的需要。
软件能力成熟度模型:是对软件组织进化阶段的描述。分为5个成熟度级别,初始级-可重复级-已定义级-已管理级-优化级。比较有名的一个基于模型的产品是成熟度调查表,可以用于一个机构软件过程实力、弱点和风险。
8、系统分析的目的和任务:对现行系统做进一步的详细调查,将调查所得到的文档资料集中,对组织内部整体管理善和信息处理过程进行分析,为系统开发提供所需资料,并提交系统方案说明书。
系统分析的主要步骤是:由现实系统得出物理模型--抽象出逻辑模型--优化出新的逻辑模型--逻辑模型具体化,得到新系统的物理模型。最终编写系统方案说明书。
9、结构化分析方法:采用“自顶向下、逐层分解”的开发策略。
数据流程图:在逻辑上描述系统的功能、输入、输出和数据存储。的基本成分有,数据流、加工、数据存储、外部实体。它们各有特定的图形表示。
分层数据流图的画法: 1)画系统的输入和输出; --称为顶层图
2)画系统的内部,将顶层图的加工分解成若干个加工,并用数据流连接; --称为0层图
确定加工的方法:在数据流的组成或值发生变化的地方应画一个加工;也可根据系统功能确定加工。 确定数据流方法:用户把若干个数据看作一个单位来处理时,可把这些数据看成是一个数据流。 3)画加工的内部;
4)重复第3步的分解过程至所有的加工都足够简单。
对图和加工进行编号: 顶图不必编号;
0层图只有一张,图中的加工号可以是0.1, 0.2, ...或是1, 2, .. 子图号就是父图中被分解的加工号
子图中的加工号同样由图号、圆点和序号组成
注意分析教材513页的实例:某考务处理系统有如下功能:对考生送来的报名单进行检查; 对合格的报名单进行检查;
对阅卷站送来的成绩清单进行检查,并根据考试中心指定的合格标准审定合格者; 制作考生通知单送给考生; 生成各种报表。
画图中应注意的问题:适当地为数据流、加工、数据存储及外部实体命名; 画数据流而不是控制流;
一个加工的输出数据流不应与输入数据流同名;
允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出数据流流向两个不同的加工; 保持父图与子图平衡;
在自顶而下的分析过程中,如果一个数据存储首次出现时只与一个加工有关,那么可以把它作为内部文件而不必画出
保持数据守恒,即一个加工的输出数据流中的数据必须直接从该加工的输入数据流中获得或产生; 每个加工都必须有输入、输出数据流;
在整套数据流图中,每个数据存储都必须有读的数据流和写的数据流。
数据词典:就是为数据流图中的每个数据流、文件、加工,以及更细节的数据项做出说明。其中对加工的说明称为“小说明”或“加工逻辑说明”。常用的加工逻辑说明方法有3种:结构化语言、判定表和判定树。结构化语言分为内外两层,外层有严格的语法,而内层语法灵活,接近于自然语言。
10、统一建模语言:它提供了9种基本元素的图形,分别是:类图、对象图、用例图、序列图、协作图、状态图(活动图、构件图、部署图)。
由3个要素构成:的基本构造块、支配这些构造块如何放置在一起的规则、运用于整个语言的一些公共机制。
在提供的图中,可以采用类图,对逻辑数据库模式建模;状态图,用于接口、类和协作的行为建模,并强调对象行为的事件顺序;活动图,用于系统的功能建模,并具强调对象间的控制流。
11、系统分析报告:数据流图、数据字典和加工说明应该成为系统分析报告的主体。并且一份完整的系统分析报告应该包括如下内容。
40 / 56