当前位置:文档之家› 关于银行系统的数据库课程设计报告书

关于银行系统的数据库课程设计报告书

一、目的与意义 0二、设计容与要求 0三、设计原理 (1)1、数据库基本操作: (1)Ⅰ、定义基本表 (1)Ⅱ、修改基本表 (1)III、删除基本表 (1)IV、数据查询 (1)V、插入元组 (2)VI、修改数据 (2)VII、删除数据 (2)2、数据库完整性 (2)I、实体完整性定义 (2)II、参照完整性定义 (2)3、触发器 (3)I、定义触发器 (3)II、激活触发器 (3)III、删除触发器 (3)4、存储过程 (3)I、PL/SQL的块结构 (3)II、变量常量的定义 (4)III、控制结构 (4)IV、存储过程的用户接口 (5)四、总体设计方案 (5)五、详细设计 (5)1、需求分析 (5)2、流程图 (6)3、E-R图 (6)4、设计表 (6)5、关系图 (7)6、编码 (8)六、测试与调试 (11)七、收获与体会 (15)八、主要参考资料 (15)一、目的与意义本课程设计是在学完《数据库系统与应用》课程之后,让学生综合应用数据库知识,设计数据库,进行调试与测试,以加深对数据库基本知识及SQL语言的理解,提高综合应用知识的能力、分析解决问题的能力,加强数据库知识的实践技能,初步培养开发实用数据库系统的能力。

二、设计容与要求设计一个银行账户管理系统,至少能够实现存款、取款、查询、转账等基本功能,要求在在数据库实现过程中至少建立三表、不得少于四个查询、三个触发器、使用至少一个存储三、设计原理SQL是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询。

SQL是一个通用的、功能极强的关系数据库语言。

它之所以能够为用户和业界所接受,并成为国际标准,是因为它是一个综合的、功能极强同时又简捷易学的语言。

SQL语言集数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)功能于一体。

1、数据库基本操作:Ⅰ、定义基本表语句格式:CREATE TABLE <表名>(<列名> <数据类型>[ <列级完整性约束条件> ][,<列名> <数据类型>[ <列级完整性约束条件>] ] …[,<表级完整性约束条件> ] );如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

Ⅱ、修改基本表语句格式:[ ADD <新列名> <数据类型> [ 完整性约束 ] ][ DROP <完整性约束名> ][ ALTER COLUMN<列名> <数据类型> ];III、删除基本表语句格式:DROP TABLE <表名>[RESTRICT| CASCADE];RESTRICT:删除表是有限制的。

欲删除的基本表不能被其他表的约束所引用,如果存在依赖该表的对象,则此表不能被删除。

CASCADE:删除该表没有限制。

在删除基本表的同时,相关的依赖对象一起删除。

IV、数据查询语句格式:SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>] …FROM <表名或视图名>[, <表名或视图名> ] …[ WHERE <条件表达式> ][ GROUP BY <列名1> [ HAVING <条件表达式> ] ][ ORDER BY <列名2> [ ASC|DESC ] ];V、插入元组语句格式:INSERTINTO <表名> [(<属性列1>[,<属性列2 >…)]VALUES (<常量1> [,<常量2>] … )功能:将新元组插入指定表中。

VI、修改数据语句格式:UPDATE <表名>SET <列名>=<表达式>[,<列名>=<表达式>]…[WHERE <条件>];功能:修改指定表中满足WHERE子句条件的元组。

VII、删除数据语句格式:DELETEFROM <表名>[WHERE <条件>];功能:删除指定表中满足WHERE子句条件的元组。

WHERE子句:指定要删除的元组。

缺省表示要删除表中的全部元组,表的定义仍在字典中。

2、数据库完整性I、实体完整性定义单属性构成的码有两种说明方法:定义为列级约束条件;定义为表级约束条件。

对多个属性构成的码只有一种说明方法:定义为表级约束条件。

插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。

包括:①. 检查主码值是否唯一,如果不唯一则拒绝插入或修改。

②. 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改。

II、参照完整性定义在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码,用REFERENCES短语指明这些外码参照哪些表的主码。

参照完整性违约处理:①.拒绝(NO ACTION)执行----默认策略②.级联(CASCADE)操作③.设置为空值(SET-NULL)对于参照完整性,除了应该定义外码,还应定义外码列是否允许空值。

3、触发器触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程,由服务器自动激活,可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力。

I、定义触发器语法格式:CREATE TRIGGER <触发器名>{BEFORE | AFTER} <触发事件> ON <表名>FOR EACH {ROW | STATEMENT}[WHEN <触发条件>]<触发动作体>II、激活触发器触发器的执行,是由触发事件激活的,并由数据库服务器自动执行,一个数据表上可能定义了多个触发器。

同一个表上的多个触发器激活时遵循如下的执行顺序:①.执行该表上的BEFORE触发器;②.激活触发器的SQL语句;③.执行该表上的AFTER触发器。

III、删除触发器语法格式:DROP TRIGGER <触发器名> ON <表名>;触发器必须是一个已经创建的触发器,并且只能由具有相应权限的用户删除。

4、存储过程I、PL/SQL的块结构①.定义部分DECLARE------变量、常量、游标、异常等定义的变量、常量等只能在该基本块中使用,当基本块执行结束时,定义就不再存在。

②.执行部分BEGIN------SQL语句、PL/SQL的流程控制语句EXCEPTION------异常处理部分END;II、变量常量的定义①.PL/SQL中定义变量的语法形式是::变量名数据类型[[NOT NULL]:=初值表达式]或变量名数据类型[[NOT NULL]初值表达式]②.常量的定义类似于变量的定义::常量名数据类型 CONSTANT :=常量表达式常量必须要给一个值,并且该值在存在期间或常量的作用域不能改变。

如果试图修改它,PL/SQL将返回一个异常。

③.赋值语句变量名称:= 表达式III、控制结构①.条件控制语句IF-THEN,IF-THEN-ELSE和嵌套的IF语句:A. IF condition THENSequence_of_statements;END IFB. IF condition THENSequence_of_statements1;ELSESequence_of_statements2;END IF;C. 在THEN和ELSE子句中还可以再包括IF语句,即IF语句可以嵌套。

②.循环控制语句A.最简单的循环语句LOOPLOOPSequence_of_statements;END LOOP;多数数据库服务器的PL/SQL都提供EXIT、BREAK或LEAVE等循环结束语句,保证LOOP 语句块能够结束。

B. WHILE-LOOPWHILE condition LOOPSequence_of_statements;END LOOP;每次执行循环体语句之前,首先对条件进行求值,如果条件为真,则执行循环体的语句序列,如果条件为假,则跳过循环并把控制传递给下一个语句。

C. FOR-LOOPFOR count IN [REVERSE]bound1 … bound2 LOOPSequence_of_statements;END LOOP;③.错误处理:如果PL/SQL在执行时出现异常,则应该让程序在产生异常的语句处停下来,根据异常的类型去执行异常处理语句。

SQL标准对数据库服务器提供什么样的异常处理做出了建议,要求PL/SQL管理器提供完善的异常处理机制。

IV、存储过程的用户接口①. 创建存储过程:CREATE Procedure 过程名([参数1,参数2,...]) AS<PL/SQL块>;过程名:数据库服务器合法的对象标识。

参数列表:用名字来标识调用时给出的参数值,必须指定值的数据类型。

参数也可以定义输入参数、输出参数或输入/输出参数。

默认为输入参数。

过程体:是一个<PL/SQL块>。

包括声明部分和可执行语句部分。

②. 执行存储过程:CALL/PERFORM Procedure 过程名([参数1,参数2,...]);使用CALL或者PERFORM等方式激活存储过程的执行。

在PL/SQL中,数据库服务器支持在过程体中调用其他存储过程。

③. 删除存储过程DROP PROCEDURE 过程名();四、总体设计方案首先进行需求分析和结构设计,确定该系统的一些功能要求及数据的存储方法,画出流程图以及E-R图。

然后根据需求分析所得的流程图及E-R图设计表,确定属性。

再用SQL语言编写程序实现操作。

最后对系统进行调试与测试,确定系统是否完成设计要求。

五、详细设计1、需求分析银行账户管理系统主要用于用户的一些操作,包括存款、取款、查询、转账等基本操作,主要涉及到银行与用户两个实体,还有交易这个联系。

2、流程图3、E-R图4、设计表Bank表:表示银行信息,属性有名称,网点,存款总额。

其中网点号为主码。

Customer表:表示客户信息,属性有账号,,ID,开户时间,账户余额,开户银行,银行网点。

其中账号为主码。

trade表:用于记录每次交易信息,属性有流水号,,账号,交易项目,交易金额,交易时间,交易对象,余额,上次余额,网点。

其中流水号为主码。

5、关系图建立关系图其中customer表的外码银行网点参照引用bank表的主码网点;trade表的外码账号参照引用customer表的主码账号;trade表的外码网点参照引用bank表的主码网点。

相关主题