您好,欢迎访问三七文档
华北科技学院计算机学院综合性实验实验报告课程名称《数据库原理与应用》实验学期2013至2014学年第一学期学生所在系部计算机学院年级2011专业班级计算机B112班学生姓名胡俊学号2011107014216任课教师郭红实验成绩计算机学院制华北科技学院计算机学院综合性实验报告2《数据库原理与应用》综合性实验报告开课实验室:软件开发实验室(一)2013年11月17日实验题目《银行管理》数据库设计一、实验目的利用一种DBMS作为设计平台,理解并应用课程中关于数据库设计的相关理论,能按照数据库设计步骤完成完整的数据库设计,包括需求分析、概念设计、逻辑设计、物理设计和实施。同时能够正确应用各个阶段的典型工具进行表示。二、设备与环境(1)硬件设备:PC机一台(2)软件环境:安装Windows操作系统,安装数据库管理系统SQLServer2008等。三、实验内容1.需求分析1.1全局需求银行作为一个金融机构,在人们生活中扮演者重要的角色,为生活节奏飞快的现代人提供快捷的理财服务,需要更好的管理数据信息和更新信息。1.2功能需求用户通过办理银行卡,能实现存取、挂失、转账等操作。2.概念结构设计E/R图3.逻辑结构设计将E/R图转化成一下关系模式用户信息表(用户名,身份证,电话,住址)华北科技学院计算机学院综合性实验报告3银行卡信息表(卡号,开户时间,存款类型,用户身份证号,金额,密码,是否挂失)交易明细表(卡号,交易时间,交易类型,交易金额,业务员编号)职工信息表(职工姓名,职工编号,职工性别)4.物理设计用户信息表:userInfo:字段名称说明PID身份证号必填,18位、主键customerName客户名必填Telephone电话必填,13位Address居住地址可选输入银行卡信息表:cardInfo字段名称说明cardID卡号必填,主健,curType货币种类必填,默认为RMBsavingType存款类型活期/定活两便/定期openDate开户日期必填,默认为系统当前日期balance余额必填,pass密码必填,6位数字,开户时默认为6个“8”IsReportLoss是否挂失必填,是/否值,默认为‘否’PID客户身份证外键,必填,表示该卡对应的顾客编号,一位顾客允许办理多张卡号交易信息表:transInfo字段名称说明transDate交易日期必填,默认为系统当前日期cardID卡号必填,外健,可重复索引transType交易类型必填,只能是存入/支取transMoney交易金额必填,大于0华北科技学院计算机学院综合性实验报告4remark备注可选输入,其他说明serID职工编号外键职工信息表:server字段名称说明SerID职工编号必填,主键SerName职工姓名必填,Sersex职工性别必填,建库代码IFexists(SELECT*FROMsysdatabasesWHEREname='bankDB')DROPDATABASEbankDBGOcreatedatabasebankDBon(name='bankDB_data',FILENAME='E:\bankDB_data.mdf',size=3mb,filegrowth=15%)logon(name=bankDB_log,filename='E:\bankDB_data.ldf',size=3mb,filegrowth=15%)建表:银行卡信息表华北科技学院计算机学院综合性实验报告5职工信息表客户信息表交易明细表创建视图yhkh显示用户和银行卡信息createviewyhkh(customerName,telephone,cardID,curType,balance)asselectcustomerName,telephone,CardID,curType,balancefromuserInfo,cardInfowhereuserInfo.PID=cardInfo.PID华北科技学院计算机学院综合性实验报告6对交易明细表按交易时间建立唯一索引createuniqueindexpaixuondbo.transInfo(transDate)select*fromdbo.transInfo数据查询查询张三的银行卡的信息及及交易明细表select*fromdbo.cardInfowhere(PID=any(selectPIDfromdbo.userInfowherecustomerName='张三'))select*fromdbo.transInfowherecardID=any(selectcardIDfromdbo.cardInfowhere(PID=any(selectPIDfromdbo.userInfowherecustomerName='张三')))5.实施办法(1)数据完整性约束创建默认对表cardinfo和transinfo表属性opendate、transdate设置默认为系统时间altertabledbo.cardInfoaddconstraintckd_datadefault(getdate())foropenDate触发器对交易明细表创建触发器ALTERtrigger[dbo].[jlxj]on[dbo].[transInfo]forinsertasdeclare@amoneydeclare@bchar(19)declare@cchar(4)declare@dmoneyselect@a=transMoneyfromdbo.transInfoselect@b=cardIDfromdbo.transInfoselect@c=transTypefromdbo.transInfoselect@d=balancefromdbo.cardInfowherecardID=@bupdatedbo.cardInfoset@d=@d+@a,balance=balance+@a华北科技学院计算机学院综合性实验报告7where@c='存入'andcardID=@bupdatedbo.cardInfoset@d=@d-@a,balance=balance-@awhere@c='取出'andcardID=@bprint'卡号:'+@bprint@c+':'+convert(varchar(20),@a)+'RMB'print'余额为:'++convert(varchar(20),@d)+'RMB'插入数据:INSERTINTOtransInfo(transType,cardID,transMoney,serID)VALUES('存入','6227000400000001',500,'03')..INSERTINTOtransInfo(transType,cardID,transMoney,serID)VALUES('取出','6227000400000001',500,'03').(2)安全性设计利用存储过程建立一个名称为hujun的登录账号EXECsp_addlogin'hujun','123456','master',null创建数据库用户execsp_adduser'hujun','ctt','db_owner'授予用户权限华北科技学院计算机学院综合性实验报告8grantselecttocttwithgrantoption(3)存储过程(游标)的设计设计一个存储过程jilu对交易明细表transInfo进行记录,为银行卡信息表余额跟新做准备createprocedurejilu(@cardidchar(19)output,@transtypechar(4)output,@transmoneymoneyoutput)asselect@cardid=cardID,@transtype=transType,@transmoney=transMoneyfromdbo.transInfo四、实验结果及分析本次试验花了我3天的时间,通过对银行管理数据库设计,让我对具体的设计步骤、思路、方法、技巧都有了进一步的了解。加深的我的数据库设计一个sqlserver相关功能的理解,建基本表索引、触发器、存储过程等等。但也遇到了不少问题,就拿本次设计中,当插入数据到交易明细表中,通过表的触发器量更新银行卡信息表中的余额,这个问题是我在本次设计中遇到的难点。总之对于触发器和存储过程的运用还不是很熟练,在以后学习中还得加深对这方面的理解。教师评价评定项目ABCD评定项目ABCD需求分析安全性设计概念结构设计存储过程、触发器逻辑结构设计基本概念清楚物理设计操作熟练完整性设计报告规范华北科技学院计算机学院综合性实验报告9其他:评价教师签名:年月日
本文标题:数据库综合实验报告
链接地址:https://www.777doc.com/doc-5834022 .html