SQL作业-活期储蓄管理系统数据库要点_第1页
SQL作业-活期储蓄管理系统数据库要点_第2页
SQL作业-活期储蓄管理系统数据库要点_第3页
SQL作业-活期储蓄管理系统数据库要点_第4页
SQL作业-活期储蓄管理系统数据库要点_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

计科2011级数据库应用技术实验报告学号: 姓名:李文菊实验名称任务1:活期储蓄管理系统数据设计完成时间2014年5月实验目的1、 掌握数据库中概念模型、关系模型、约束关系以及关系结构的概念;2、 掌握系统需求分析的方法;3、 学会概念模型和关系模型的设计方法。实验内容在活期储蓄管理过程中,“储户”通过“存取款”与“储蓄所”发生业务联系。试设计活期储蓄管理系统数据库的概念模型、关系模型并确定约束。实验要求1、填写实验过程中的T-SQL2、思考和记录实验中的问题,并能够找出解决方法实验过程:1、 需求分析通过对数据库用户(储蓄所业务人员)的调查,对用户的需求进行分析得知:(1)储户是指在某个储蓄所开户的人。该储蓄所称为储户的开户行。(2)一个储蓄所可以有多个储户,每个储户有惟一的账号。(3)每个储户可以在多个允许发生业务的储蓄所进行存取款。(4)储户按信誉分为“一般”和“良好”两种(分别用0和1表示)。信誉“一般”的储户不允许透支。信誉“良好”的储户可以透支,但不能超过5万元。(5)储户按状态分为:“正常”和“挂失”两种(分别用0、1表示)。状态为“正常”的储户允许存取款,状态为“挂失”的储户不允许存取款。(6)储户的信息有:账号、姓名、密码、电话、地址、信誉、存款额、开户行编号、开户日期、状态等。(7)储蓄所的信息有:编号、名称、电话、地址、负责人(8)储户进行存取款时应该提供账号、存取标志(1:表示存款,0:表示取款)、存取金额、存取日期等信息,储蓄所首先要对储户的身份进行验证,对合法的储户再根据“信誉”判断是否可以发生此次业务。若发生业务则记录相应信息,修改储户的存款额。2、概念模型设计根据系统需求分析设计出的E-R图如下:储户账号姓名电话地址开户行开户日期存取款存取标志信誉金额日期储蓄所编号名称存款额负责人电话地址3、关系模型设计根据概念模型中得出的E-R图可转换成对应的关系模型,关系模型设计如下:转换后的关系模型为:储户信息(账号,姓名,电话,地址,开户行编号,开户日期)储户动态信息(账号,密码,存款额,状态,信誉)储蓄所信息(编号,名称,存款额,负责人,电话,地址)存取款(账号,编号,存取标志,信誉,金额,日期)4、约束关系(1)实体完整性所有实体中的主码都不能为空,即实体“储户信息”的主码“账号”不能为空,实体“储蓄所信息”的主码“编号”以及“储蓄所信息”中的主码“编号”和“日期”不能为空,关系“存取款”中的主码“账号”不能为空。另外,“储户信息”中的所有字段都不能为空,“储蓄所信息”中的“名称”和“负责人”也不能为空,关系“存取款”中的“金额”要大于0.(2)参照完整性参照关系“存取款”的属性“账号”和“编号”分别是被参照关系“储户”和“储蓄所信息”的外码。因此,参照关系“存取款”的属性“账号”的值必须是被参照关系“储户信息”中某一元组的“账号”的值,参照关系“存取款”的属性“编号”的值必须是被参照关系“储蓄所信息”中某一元组的值。参照关系“储户信息”的属性“开户行编号”是被参照关系“储蓄所信息”的外码,因此,参照关系“储户信息”的属性“开户行编号”的取值必须是“储蓄所信息”的“编号”的值。(3)用户定义完整性储户按信誉分为“一般”和“良好”,对于信誉为“一般”的储户,只有当储户的存款额大于储户的取款额时,才可以进行取款,也就是说信誉为“一般”的储户不可以透支金额。对于信誉为“良好”的储户,当储户的存款额小于储户的取款额是,也可以进行取款,但最高不能超过5万元。储户按状态分为“正常”和“挂失”。当储户状态处于“正常”状态时,可以进行存取款,当储户状态处于“挂失”状态时,不允许进行存取款。5、关系结构的描述活期储蓄管理系统的关系结构描述关系名称属性名称数据类型宽度说明储户信息账号字符串20主键姓名字符串10不为空开户行编号字符串15不为空开户日期日期型电话字符串15不为空地址字符串50不为空储户动态信息账号字符串20主键密码字符串30存款额整型状态整型取值为1、0信誉整型取值为1、0储蓄所信息编号字符串15主键名称字符串30不为空存款额整型负责人字符串10不为空电话字符串15不为空地址字符串50不为空存取款账号字符串20引用了储户信息中的账号编号字符串15引用了储蓄所信息中的编号存取标志整型取值为1、0信誉整型取值为1、0金额整型金额0日期日期型问题讨论:1、需求分析应尽量考虑周全并且要合理,应站在用户的角度进行需求分析。2、设计E-R图时,要考虑好实体与实体之间的关系以及实体具有的属性。3、约束关系应当设计合理,各个属性值的约束要设计得当。实验名称任务2:创建活期储蓄管理系统数据库完成时间2014年5月实验目的1掌握使用Transact-SQL语句创建数据库、数据表。实验内容1、 使用Transact-SQL语句创建活期储蓄管理系统数据库。该数据库的要求如下:数据库名称为:活期储蓄。数据主文件为:活期储蓄_data.mdf,存储在“D:data”(或者是自行定义的文件夹),存储空间初始值为5MB,最大空间为100MB,文件增量10。数据次数据文件为:活期储蓄_data2.mdf,存储在“D:data”(或者是自行定义的文件夹),存储空间初始值为5MB,最大空间为100MB,文件增量10。日志文件为:活期储蓄_log.ldf,存储在“E:data” (或者是自行定义的文件夹,但是不要和数据文件在一起),存储空间初始值为5MB,最大空间为200MB,文件增量5MB。 2、 使用Transact-SQL语句创建活期管理系统数据库的数据表和添加数据。实验要求1、填写实验过程中的T-SQL2、思考和记录实验中的问题,并能够找出解决方法实验过程:1、创建活期储蓄管理系统数据库create database 活期储蓄on (name=活期储蓄_temp,filename=D:data活期储蓄_temp.mdf,size=5MB,maxsize=100MB,filegrowth=10%),filegroup 活期储蓄_temp1(name=活期储蓄_temp1,filename=D:data活期储蓄_temp1.mdf,size=5MB,maxsize=100MB,filegrowth=10%)log on(name=活期储蓄_log,filename=E:data活期储蓄_log.ldf,size=5MB,maxsize=200MB,filegrowth=5MB)2、数据库的管理(1)收缩数据库:分别使用SHRINKDATABASE和SHRINKFILE进行收缩活期储蓄数据库DBCC SHRINKDATABASE (活期储蓄)DBCC SHRINKFILE (活期储蓄_log)(2)数据可更名exec sp_renamedb 活期储蓄,活期储蓄数据库(3)查看数据可的属性exec sp_helpdb 活期储蓄(4)数据库的附加和分离分离:use 活期储蓄 gosp_detach_db 活期储蓄go结果:命令已成功完成附加:(1)use mastergosp_attach_db 活期储蓄,F:数据库活期储蓄_temp.mdf,F:数据库活期储蓄_log.ldf(2)use mastergocreate database 活期储蓄 ON PRIMARY ( NAME = N活期储蓄_temp, FILENAME = NE:数据库活期储蓄_temp.mdf ), FILEGROUP 活期储蓄_temp1 ( NAME = N活期储蓄_temp1, FILENAME = NE:数据库活期储蓄_temp1.mdf) LOG ON ( NAME = N活期储蓄_log, FILENAME = NE:数据库活期储蓄_log.ldf )go结果:命令已成功完成3、创建表(1)储户信息表use 活期储蓄gocreate table 储户信息(账号 char (20)primary key,姓名 char (10) not null,开户行编号 char (15)not null,开户日期 datetime,电话 char(15) not null,地址 varchar(50) not null)(2)储户动态信息表use 活期储蓄gocreate table 储户动态信息(账号 char (20)primary key,密码 varchar (30)not null,存款额 int,状态 int check(状态=1 or 状态=0),信誉 int check(信誉=1 or 信誉=0)(3)储蓄所信息表use 活期储蓄gocreate table 储蓄所信息(编号 char (15)primary key,名称 varchar (30)not null,存款额 int,负责人 char(10) not null,电话 char (15) not null,地址 varchar(50) not null,)(4)存取款表use 活期储蓄gocreate table 存取款(账号 char (20)references 储户信息(账号),编号 char (15)references 储蓄所信息(编号),存取标志 int check(存取标志=1 or 存取标志=0),信誉 int check(信誉=1 or 信誉=0),金额 int check(金额 0),日期 datetime,)4、 添加数据(1) 储户信息表use 活期储蓄goinsert into 储户信息(账号,姓名,开户行编号,开户日期,电话,地址)values(,张晓军,1002,2002-11-20,(0871),昆明), (,李丹娜,1208,2000-08-06,(021),上海), (,张岚,1002,1998-06-01,(0871),昆明), (,王立群,1303,2004-01-08,(021),上海), (,赵庆,1208,2003-02-08,(0871),昆明)(2) 储户动态信息表use 活期储蓄goinsert into 储户动态信息(账号,密码,存款额,状态,信誉)values(,ASDZXC,1,0), (,WERERT,1,1), (,DFGASD,1,1), (,SDFCVB,35000,1,0), (,CVBGHJ,1,1)(3) 储蓄所信息表use 活期储蓄goinsert into 储蓄所信息(编号,名称,存款额,负责人,电话,地址)values(1001,中国建行昆明分行秋涛支行,张三,(0871),秋涛北街号), (1002,中国建行昆明分行武林支行,王敏,(0871),武林南路号), (1208,中国建行昆明分行下沙支行,张硕,(0871),下沙号大街号), (1303,中国建行昆明分行滨江支行,李贞,(0871),滨江号大街号)(4) 存取款表use 活期储蓄goinsert into 存取款(账号,编号,存取标志,信誉,金额,日期)values(,1002,1,1,50000,2003-09-28), (,1208,0,1,80000,2003-10-16), (,1002,0,1,10000,2003-12-10), (,1303,1,0,12000,2003-12-10), (,1002,0,1,20000,2003-12-16), (,1002,0,1,10000,2004-01-08), (,1208,1,1,20000,2004-02-08), (,1208,1,1,30000,2004-03-16)问题讨论:1、使用Transact-SQL语句创建数据库时,数据文件和日志文件最好不要放在同一个驱动器上,因为当某一个驱动器发生故障而导致数据文件丢失时,可以恢复日志文件,以便保证不损坏日志文件。2、使用Transact-SQL语句对数据库进行附加时,使用第二种方法时我觉得相当于重新创建一个新的数据库, 当我使用第二种方法附加数据库时,提示为“该数据库已存在,请更换路径”,重新换一个路径后,命令也就成功完成了,而附加上的数据库也是一个空白数据库。而使用”sp_attach_db”命令进行附加,便能正确的把数据库附加上(该命令上网查的)。3、进行数据库的收缩时,SHRINKDATABASE是对数据库进行收缩,SHRINKFILE是对数据文件的收缩。实验名称任务3:活期储蓄管理系统数据库上的一般操作完成时间2014年5月实验目的1、 熟练使用Transact-SQL为数据表添加数据;2、 熟练使用Transact-SQL语句完成查询命令。实验内容为活期储蓄管理系统数据库的数据表录入数据,并根据需要,进行编写Transact-SQL语句的查询命令。实验要求1、填写实验过程中的T-SQL2、思考和记录实验中的问题,并能够找出解决方法实验过程:1、录入数据(1)储户信息表use 活期储蓄goinsert into 储户信息(账号,姓名,开户行编号,开户日期,电话,地址)values(,张晓军,1002,2002-11-20,(0871),昆明), (,李丹娜,1208,2000-08-06,(021),上海), (,张岚,1002,1998-06-01,(0871),昆明), (,王立群,1303,2004-01-08,(021),上海), (,赵庆,1208,2003-02-08,(0871),昆明)(2)储户动态信息表use 活期储蓄goinsert into 储户动态信息(账号,密码,存款额,状态,信誉)values(,ASDZXC,1,0), (,WERERT,1,1), (,DFGASD,1,1), (,SDFCVB,35000,1,0), (,CVBGHJ,1,1)(3)储蓄所信息表use 活期储蓄goinsert into 储蓄所信息(编号,名称,存款额,负责人,电话,地址)values(1001,中国建行昆明分行秋涛支行,张三,(0871),秋涛北街号), (1002,中国建行昆明分行武林支行,王敏,(0871),武林南路号), (1208,中国建行昆明分行下沙支行,张硕,(0871),下沙号大街号), (1303,中国建行昆明分行滨江支行,李贞,(0871),滨江号大街号)(4)存款额表use 活期储蓄goinsert into 存取款(账号,编号,存取标志,信誉,金额,日期)values(,1002,1,1,50000,2003-09-28), (,1208,0,1,80000,2003-10-16), (,1002,0,1,10000,2003-12-10), (,1303,1,0,12000,2003-12-10), (,1002,0,1,20000,2003-12-16), (,1002,0,1,10000,2004-01-08), (,1208,1,1,20000,2004-02-08), (,1208,1,1,30000,2004-03-16)2、数据查询(1)查询储户的姓名和存款额select 姓名,存款额from 储户信息,储户动态信息where 储户信息.账号=储户动态信息.账号(2)查询账号为的储户的存取款记录。select *from 存取款 where 账号=(3)查询编号为1002的储蓄所2003.10-2004.10的存取款业务详细记录。select *from 存取款 where 编号=1002 and 日期 between 2003-10-01 and 2004-10-01(4)查询编号为1002的储蓄所的存取款业务汇总情况。select *from 存取款 where 编号=1002(5)查询所有储户的基本信息。use 活期储蓄goselect *from 储户信息(6)查询储户的状态及信誉。use 活期储蓄goselect 姓名,存款额,状态,信誉from 储户信息,储户动态信息where 储户信息.账号=储户动态信息.账号 问题讨论:1、 录入信息时,各个属性列的值要对应好,否则会出现错误2、 在录入数据时,有时候会出现“语句已终止”的提示,这时就得检查创建表时属性值的长度是否够长,多数是长度不够时,会出现这样的提示。3、 在查询信息时,当鼠标移到带有红色波浪线出,如果出现的提示是“列名无效或无法绑定多个状态”,就得考虑是否是多个表之间进行查询了或者是所写的列名与表中的列名不对应。实验名称任务4:建立活期储蓄管理系统数据库的触发器和存储过程完成时间2014年5月实验目的1、 掌握使用T-SQL语句创建触发器;2、 掌握使用T-SQL语句创建存储过程实验内容在活期储蓄管理系统数据库的“存取款”表上创建INSERT触发器和编写验证出乎“密码”的存储过程。实验要求1、填写实验过程中的T-SQL2、思考和记录实验中的问题,并能够找出解决方法实验过程:1、在“存取款”表上创建触发器“存取款insert”use 活期储蓄gocreate trigger 存取款inserton 存取款for insertasdeclare cke int, je int, bz int, xy int, zh char(20), zt intselect zh=i.账号,je=i.金额,bz=i.存取标志 from inserted iselect cke=a.存款额,xy=a.信誉,zt=a.状态 from 储户动态信息 aif(zt=0) print该账号处于挂失状态!else begin if(bz=1) set cke=cke+je else set cke=cke-je if(xy=0 and cke0) begin print抱歉,您当前的情况不能透支金额! rollback end update 储户动态信息 set 存款额=cke where 账号=zh end结果:命令已成功完成2、验证触发器是否创建成功:向存取款表中插入数据(相当于账号为储户存款20000元)账号编号存取标志信誉金额日期100211200002004.7.16use 活期储蓄goinsert into 存取款values (,1002,1,1,20000,2004-07-16)未插入数据之前的储户动态信息表插入数据后的储户动态信息表:3、编写验证储户“密码”的存储过程问题要求:将储户输入的“密码”与“用户动态信息”表中保存的“密码”值进行比较,回答正确返回“1”,不正确返回“0”。存储过程设计:use 活期储蓄gocreate procedure 密码 zh char(20), mima varchar(30), flag int output -值为1 ,表示输入正确! as if exists( select * from 储户动态信息 where (ltrim(rtrim(zh)=ltrim(rtrim(账号)and ltrim(rtrim(mima)=ltrim(rtrim(密码) begin print 请继续操作! set flag=1 end else begin print 账号或密码错误!不能继续操作 set flag=0 end 实验结果:触发器已创建成功,向存取款中插入数据后,相应的储户动态信息表中的存款额已发生改变。创建“密码”存储过程设计时,已提示“命令已完成”。问题讨论:1、触发器与存储过程的区别:触发器不能执行execute语句调用,而是在用户执行Transact-SQL语句时自动触发执

温馨提示

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

评论

0/150

提交评论