SQL作业活期储蓄管理系统数据库要点Word格式.docx
- 文档编号:17506164
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:30
- 大小:829.78KB
SQL作业活期储蓄管理系统数据库要点Word格式.docx
《SQL作业活期储蓄管理系统数据库要点Word格式.docx》由会员分享,可在线阅读,更多相关《SQL作业活期储蓄管理系统数据库要点Word格式.docx(30页珍藏版)》请在冰豆网上搜索。
若发生业务则记录相应信息,修改储户的存款额。
2、概念模型设计
根据系统需求分析设计出的E-R图如下:
3、关系模型设计
根据概念模型中得出的E-R图可转换成对应的关系模型,关系模型设计如下:
转换后的关系模型为:
储户信息(账号,姓名,电话,地址,开户行编号,开户日期)
储户动态信息(账号,密码,存款额,状态,信誉)
储蓄所信息(编号,名称,存款额,负责人,电话,地址)
存取款(账号,编号,存取标志,信誉,金额,日期)
4、约束关系
(1)实体完整性
所有实体中的主码都不能为空,即实体“储户信息”的主码“账号”不能为空,实体“储蓄所信息”的主码“编号”以及“储蓄所信息”中的主码“编号”和“日期”不能为空,关系“存取款”中的主码“账号”不能为空。
另外,“储户信息”中的所有字段都不能为空,“储蓄所信息”中的“名称”和“负责人”也不能为空,关系“存取款”中的“金额”要大于0.
(2)参照完整性
参照关系“存取款”的属性“账号”和“编号”分别是被参照关系“储户”和“储蓄所信息”的外码。
因此,参照关系“存取款”的属性“账号”的值必须是被参照关系“储户信息”中某一元组的“账号”的值,参照关系“存取款”的属性“编号”的值必须是被参照关系“储蓄所信息”中某一元组的值。
参照关系“储户信息”的属性“开户行编号”是被参照关系“储蓄所信息”的外码,因此,参照关系“储户信息”的属性“开户行编号”的取值必须是“储蓄所信息”的“编号”的值。
(3)用户定义完整性
储户按信誉分为“一般”和“良好”,对于信誉为“一般”的储户,只有当储户的存款额大于储户的取款额时,才可以进行取款,也就是说信誉为“一般”的储户不可以透支金额。
对于信誉为“良好”的储户,当储户的存款额小于储户的取款额是,也可以进行取款,但最高不能超过5万元。
储户按状态分为“正常”和“挂失”。
当储户状态处于“正常”状态时,可以进行存取款,当储户状态处于“挂失”状态时,不允许进行存取款。
5、关系结构的描述
活期储蓄管理系统的关系结构描述
关系名称
属性名称
数据类型
宽度
说明
储户信息
账号
字符串
20
主键
姓名
10
不为空
开户行编号
15
开户日期
日期型
电话
地址
50
储户动态信息
密码
30
存款额
整型
状态
取值为1、0
信誉
储蓄所信息
编号
名称
负责人
存取款
引用了储户信息中的账号
引用了储蓄所信息中的编号
存取标志
金额
金额>
日期
问题讨论:
1、需求分析应尽量考虑周全并且要合理,应站在用户的角度进行需求分析。
2、设计E-R图时,要考虑好实体与实体之间的关系以及实体具有的属性。
3、约束关系应当设计合理,各个属性值的约束要设计得当。
任务2:
创建活期储蓄管理系统数据库
1掌握使用Transact-SQL语句创建数据库、数据表。
1、使用Transact-SQL语句创建活期储蓄管理系统数据库。
该数据库的要求如下:
数据库名称为:
活期储蓄。
数据主文件为:
活期储蓄_data.mdf,存储在“D:
\data”(或者是自行定义的文件夹),存储空间初始值为5MB,最大空间为100MB,文件增量10%。
数据次数据文件为:
活期储蓄_data2.mdf,存储在“D:
日志文件为:
活期储蓄_log.ldf,存储在“E:
\data”(或者是自行定义的文件夹,但是不要和数据文件在一起),存储空间初始值为5MB,最大空间为200MB,文件增量5MB。
2、使用Transact-SQL语句创建活期管理系统数据库的数据表和添加数据。
1、创建活期储蓄管理系统数据库
createdatabase活期储蓄
on
(name=活期储蓄_temp,
filename='
D:
\data\活期储蓄_temp.mdf'
size=5MB,
maxsize=100MB,
filegrowth=10%),
filegroup活期储蓄_temp1
(name=活期储蓄_temp1,
\data\活期储蓄_temp1.mdf'
filegrowth=10%)
logon
(name='
活期储蓄_log'
E:
\data\活期储蓄_log.ldf'
maxsize=200MB,
filegrowth=5MB)
2、数据库的管理
(1)收缩数据库:
分别使用SHRINKDATABASE和SHRINKFILE进行收缩活期储蓄数据库
DBCCSHRINKDATABASE(活期储蓄)
DBCCSHRINKFILE(活期储蓄_log)
(2)数据可更名
execsp_renamedb活期储蓄,活期储蓄数据库
(3)查看数据可的属性
execsp_helpdb活期储蓄
(4)数据库的附加和分离
分离:
use活期储蓄
go
sp_detach_db活期储蓄
结果:
命令已成功完成
附加:
(1)
usemaster
sp_attach_db活期储蓄,'
F:
\数据库\活期储蓄_temp.mdf'
'
\数据库\活期储蓄_log.ldf'
(2)
createdatabase活期储蓄ONPRIMARY
(NAME=N'
活期储蓄_temp'
FILENAME=N'
),
FILEGROUP[活期储蓄_temp1]
活期储蓄_temp1'
\数据库\活期储蓄_temp1.mdf'
)
LOGON
)
3、创建表
(1)储户信息表
use活期储蓄
createtable储户信息(
[账号][char](20)primarykey,
[姓名][char](10)notnull,
[开户行编号][char](15)notnull,
[开户日期]datetime,
[电话][char](15)notnull,
[地址][varchar](50)notnull
(2)储户动态信息表
createtable储户动态信息(
[密码][varchar](30)notnull,
[存款额][int],
[状态][int]check(状态='
1'
or状态='
0'
),
[信誉][int]check(信誉='
or信誉='
(3)储蓄所信息表
createtable储蓄所信息(
[编号][char](15)primarykey,
[名称][varchar](30)notnull,
[负责人][char](10)notnull,
[电话][char](15)notnull,
[地址][varchar](50)notnull,
(4)存取款表
createtable存取款(
[账号][char](20)references储户信息(账号),
[编号][char](15)references储蓄所信息(编号),
[存取标志][int]check(存取标志='
or存取标志='
[金额][int]check(金额>
0),
[日期]datetime,
4、添加数据
(1)储户信息表
insertinto储户信息(账号,姓名,开户行编号,开户日期,电话,地址)
values('
10020089'
张晓军'
1002'
2002-11-20'
(0871)22959618'
昆明'
('
10020123'
李丹娜'
1208'
2000-08-06'
(021)86129618'
上海'
10245082'
张岚'
1998-06-01'
(0871)667879668'
10204568'
王立群'
1303'
2004-01-08'
(021)89727982'
10204567'
赵庆'
2003-02-08'
(0871)28008986'
(2)储户动态信息表
insertinto储户动态信息(账号,密码,存款额,状态,信誉)
ASDZXC'
286000'
1,0),
WERERT'
1678120'
1,1),
DFGASD'
3000000'
SDFCVB'
35000'
CVBGHJ'
1200000'
1,1)
(3)储蓄所信息表
insertinto储蓄所信息(编号,名称,存款额,负责人,电话,地址)
1001'
中国建行昆明分行秋涛支行'
265000'
张三'
(0871)88049082'
秋涛北街号'
中国建行昆明分行武林支行'
395810'
王敏'
(0871)68066080'
武林南路号'
中国建行昆明分行下沙支行'
600000'
张硕'
(0871)28800088'
下沙号大街号'
中国建行昆明分行滨江支行'
245100'
李贞'
(0871)26880266'
滨江号大街号'
(4)存取款表
insertinto存取款(账号,编号,存取标志,信誉,金额,日期)
1,1,'
50000'
2003-09-28'
0,1,'
80000'
2003-10-16'
10000'
2003-12-10'
1,0,'
12000'
20000'
2003-12-16'
2004-02-08'
30000'
2004-03-16'
1、使用Transact-SQL语句创建数据库时,数据文件和日志文件最好不要放在同一个驱动器上,因为当某一个驱动器发生故障而导致数据文件丢失时,可以恢复日志文件,以便保证不损坏日志文件。
2、使用Transact-SQL语句对数据库进行附加时,使用第二种方法时我觉得相当于重新创建一个新的数据库,
当我使用第二种方法附加数据库时,提示为“该数据库已存在,请更换路径”,重新换一个路径后,命令也就成功完成了,而附加上的数据库也是一个空白数据库。
而使用”sp_attach_db”命令进行附加,便能正确的把数据库附加上(该命令上网查的)。
3、进行数据库的收缩时,SHRINKDATABASE是对数据库进行收缩,SHRINKFILE是对数据文件的收缩。
任务3:
活期储蓄管理系统数据库上的一般操作
1、熟练使用Transact-SQL为数据表添加数据;
2、熟练使用Transact-SQL语句完成查询命令。
为活期储蓄管理系统数据库的数据表录入数据,并根据需要,进行编写Transact-SQL语句的查询命令。
1、录入数据
values
('
(4)存款额表
2、数据查询
(1)查询储户的姓名和存款额
select姓名,存款额
from储户信息,储户动态信息
where储户信息.账号=储户动态信息.账号
(2)查询账号为10245082的储户的存取款记录。
select*
from存取款
where账号='
(3)查询编号为1002的储蓄所2003.10-2004.10的存取款业务详细记录。
where编号='
and日期between'
2003-10-01'
and'
2004-10-01'
(4)查询编号为1002的储蓄所的存取款业务汇总情况。
(5)查询所有储户的基本信息。
from储户信息
(6)查询储户的状态及信誉。
select姓名,存款额,状态,信誉
where储户信息.账号=储户动态信息.账号
1、录入信息时,各个属性列的值要对应好,否则会出现错误
2、在录入数据时,有时候会出现“语句已终止”的提示,这时就得检查创建表时属性值的长度是否够长,多数是长度不够时,会出现这样的提示。
3、在查询信息时,当鼠标移到带有红色波浪线出,如果出现的提示是“列名无效或无法绑定多个状态”,就得考虑是否是多个表之间进行查询了或者是所写的列名与表中的列名不对应。
。
任务4:
建立活期储蓄管理系统数据库的触发器和存储过程
1、掌握使用T-SQL语句创建触发器;
2、掌握使用T-SQL语句创建存储过程
在活期储蓄管理系统数据库的“存取款”表上创建INSERT触发器和编写验证出乎“密码”的存储过程。
1、在“存取款”表上创建触发器“存取款insert”
createtrigger存取款insert
on存取款
forinsert
as
declare@ckeint,
@jeint,
@bzint,
@xyint,
@zhchar(20),
@ztint
select@zh=i.账号,@je=i.金额,@bz=i.存取标志
frominsertedi
select@cke=a.存款额,@xy=a.信誉,@zt=a.状态
from储户动态信息a
if(@zt=0)
print'
该账号处于挂失状态!
'
else
begin
if(@bz=1)
set@cke=@cke+@je
else
set@cke=@cke-@je
if(@xy=0and@cke<
0)
抱歉,您当前的情况不能透支金额!
rollback
end
update储户动态信息
set存款额=@cke
where账号=@zh
2、验证触发器是否创建成功:
向存取款表中插入数据(相当于账号为10245082储户存款20000元)
10245082
1002
1
20000
2004.7.16
insertinto存取款
2004-07-16'
未插入数据之前的储户动态信息表
插入数据后的储户动态信息表:
3、编写验证储户“密码”的存储过程
问题要求:
将储户输入的“密码”与“用户动态信息”表中保存的“密码”值进行比较,回答正确返回“1”,不正确返回“0”。
存储过程设计:
createprocedure密码
@zhchar(20),
@mimavarchar(30),
@flagintoutput--值为1,表示输入正确!
as
ifexists(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 作业 活期 储蓄 管理 系统 数据库 要点
![提示](https://static.bdocx.com/images/bang_tan.gif)