数据库课程设计报告 附存储过程和触发器模版+数据库脚本文档模版+分析及er图Word文件下载.docx

上传人:b****5 文档编号:21287517 上传时间:2023-01-29 格式:DOCX 页数:38 大小:119.69KB
下载 相关 举报
数据库课程设计报告 附存储过程和触发器模版+数据库脚本文档模版+分析及er图Word文件下载.docx_第1页
第1页 / 共38页
数据库课程设计报告 附存储过程和触发器模版+数据库脚本文档模版+分析及er图Word文件下载.docx_第2页
第2页 / 共38页
数据库课程设计报告 附存储过程和触发器模版+数据库脚本文档模版+分析及er图Word文件下载.docx_第3页
第3页 / 共38页
数据库课程设计报告 附存储过程和触发器模版+数据库脚本文档模版+分析及er图Word文件下载.docx_第4页
第4页 / 共38页
数据库课程设计报告 附存储过程和触发器模版+数据库脚本文档模版+分析及er图Word文件下载.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

数据库课程设计报告 附存储过程和触发器模版+数据库脚本文档模版+分析及er图Word文件下载.docx

《数据库课程设计报告 附存储过程和触发器模版+数据库脚本文档模版+分析及er图Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告 附存储过程和触发器模版+数据库脚本文档模版+分析及er图Word文件下载.docx(38页珍藏版)》请在冰豆网上搜索。

数据库课程设计报告 附存储过程和触发器模版+数据库脚本文档模版+分析及er图Word文件下载.docx

图1.ER图

3.物理设计

2.1数据表设计

图2.表结构图

2.2创建表脚本

2.2.1【用户表】

(1)创建表语句

createtableADMIN

ACCOUNTchar(20)notnull,

CIPHERchar(20),

primarykey(ACCOUNT)

);

(2)插入测试数据语句

insertintoadminvalues('

12201504'

'

12345'

2.2.2【商品表】

createtableSP

SCODEchar(20)notnull,

SNAMEchar(20)notnull,

STAPEchar(20),

SPLACEchar(20),

primarykey(SCODE)

insertintospvalues('

1'

乐事薯片'

食物'

广东'

2'

牛肉干'

3'

瓜子'

干果'

4'

可乐'

饮料'

5'

雪碧'

2.2.3【仓库表】

createtableCK

CCODEchar(20)notnull,

CNAMEchar(20),

CADDRESSchar(20),

primarykey(CCODE)

insertintockvalues('

南昌仓库'

南昌'

长沙仓库'

长沙'

武汉仓库'

武汉'

2.2.4【入库表】

createtableINPUT

Nintnotnull,

SCODEchar(20),

CCODEchar(20),

INNUMBERint,

INTIMEdatetime,

INREASONchar(20),

primarykey(N),

foreignkey(scode)referencessp(scode),

foreignkey(ccode)referencesck(ccode)

insertintoinputvalues('

1000'

2014-6-10'

进货'

100'

2014-6-11'

退货'

300'

200'

2014-6-12'

2.2.5【仓库管理员表】

createtableWORKER

WCODEchar(20)notnull,

WNAMEchar(20),

WPOSITIONchar(20),

primarykey(WCODE),

insertintoworkervalues('

11'

奥巴马'

员工'

12'

奥特曼'

仓库经理'

13'

奥利奥'

仓库副经理'

21'

汤姆克鲁斯'

22'

小罗伯特唐尼'

23'

尼古拉斯凯奇'

31'

大螺丝'

32'

伊瑟拉'

33'

安东尼达斯'

2.2.6【销售日志表】

createtableSALE

SNUMBERint,

SMONEYfloat(20),

STIMEdatetime,

foreignkey(scode)referencessp(scode)

insertintosalevalues('

250'

500'

2.2.7【库存表】

createtableSTORENUM

CCODEchar(20),

SCODEchar(20),

TOTALNUMint,

foreignkey(ccode)referencesck(ccode),

foreignkey(scode)referencessp(scode)

insertintostorenumvalues('

5000'

4.功能实现

4.1查询及视图设计

4.1.1商品信息查询

(1)主要功能:

根据商品编号查询商品全部信息

(2)查询设计:

select*fromspwherescode=’1’;

4.1.2仓库信息查询

根据仓库编号查询仓库全部信息

select*fromckwhereccode=’2’;

4.1.3商品销售情况查询

根据商品编号查询商品销售情况全部信息

select*fromsalewherescode=’1’;

4.1.4仓库管理员信息查询

根据管理员编号查询仓库管理员全部信息

select*fromworkerwherewcode=’12’;

4.1.5入库信息根据编号查询

根据入库时的顺序编号查询入库的全部信息

select*frominputwheren=’1’;

4.1.6入库信息根据入库时间及商品编号查询

根据入库时间及商品的编号查询入库的全部信息

select*frominputwhereintime=’2014-6-11’,scode=’2’;

4.1.7仓库全部商品库存信息查询

根据仓库编号查询该仓库的全部商品库存信息

select*fromstorenumwhereccode=’1’;

4.1.8查询某地生产的商品在某地仓库中的库存信息

查询南昌生产的商品在武汉仓库中的库存信息

select*fromstorenum

whereccodein(selectccodefromckwherecaddress='

andscodein(selectscodefromspwheresplace='

4.1.9查询库存量超过制定数额的商品名称及仓库地址

查询库存量超过1000的商品名称及仓库地址

selectsname,caddressfromck,sp,storenum

whereck.ccode=storenum.ccodeandsp.scode=storenum.scodeandtotalnum>

1000;

4.1.10查询存储某地生产的全部商品的仓库信息

查询存储南昌生产的全部商品的仓库信息

select*fromckwhere

notexists(select*fromspwheresplace='

南昌'

andnotexists(select*fromstorenumwherestorenum.scode=sp.scode));

4.1.11查询某地仓库中的员工总数

查询南昌仓库中的员工总数

selectcount(*)fromworker

whereccodein(selectccodefromckwherecaddress='

4.1.12统计因进货而入库的的商品信息并按它们的进货数量升序排列

统计因进货而入库的的商品信息并按它们的进货数量升序排列

select*frominputwhereinreason='

orderbyinnumber;

4.2存储过程设计

4.2.1input_input

商品退回或进货时,向入库表中插入信息

(2)参数说明:

序号

参数名称及数据类型(英文名称)

参数含义及说明

1

@nint

顺序号(主键)

2

@scodechar(20)

商品号

3

@ccodechar(20)

仓库号

4

@innumberint

入库数量

5

@intimedatetime

入库时间

6

@inreasonchar(20)

入库原因

(3)流程描述

声明变量接收数据并将全部数据插入入库表中

(4)代码及注释

createprocedureinput_input

(@nint,@scodechar(20),@ccodechar(20),@innumberint,@intimedatetime,@inreasonchar(20))

as

insertintoinputvalues

(@n,@scode,@ccode,@innumber,@intime,@inreason);

4.2.2drop_sale

商品退货时,根据顺序号可删除销售日志中的记录

销售日志表中的顺序号(主键)

输入接收顺序号,并根据顺序号删除销售日志中的该行信息

createproceduredrop_sale

(@nint)

deletefromsalewheren=@n;

4.2.3cipher_admin

修改该系统用户的密码

@ACCOUNTchar(20)

用户账号

@CIPHERchar(20)

用户新密码

根据输入的用户账号,使用新密码更新该账号的旧密码

createprocedurechange_admin

(@ACCOUNTchar(20),@CIPHERchar(20))

updateadminsetcipher=@cipherwhereaccount=@account;

4.2.4storenum_sp

查询某地生产的商品在某地仓库中的库存信息

@splacechar(20)

商品产地

@caddresschar(20)

仓库地址

1.输入并接收商品产地和仓库地址

2.使用select语句根据商品产地和仓库地址找出商品号,仓库号并输出与商品号,库存号相同的全部库存信息

createprocedurestorenum_sp

(@splacechar(20),@caddresschar(20))

as

select*fromstorenumwhereccodein(selectccodefromckwherecaddress=@caddress)

andscodein(selectscodefromspwheresplace=@splace);

4.2.5totalnum_caddress

查询库存量超过3000的商品名称及仓库地址

无参数及返回值

将三张表进行连接,并筛选出库存量大于3000的条目,输出其·

全部信息

createproceduretotalnum_caddress

whereck.ccode=storenum.ccodeandsp.scode=storenum.scodeandtotalnum>

3000

4.2.6ck_splace

查询存储某地生产的全部商品的仓库信息

使用select语句,根据输入的商品产地,找出某一个仓库,不存在一个商品的产地是该商品产地,这个商品没有被这个仓库储存,并输出这个仓库的全部信息

createprocedureck_splace

(@splacechar(20))

select*fromckwherenotexists(select*fromspwheresplace=@splace

andnotexists(select*fromstorenumwherestorenum.scode=sp.scode));

4.3触发器设计

4.3.1触发器1

(1)简介

触发器名称:

in_storenum

监听的表名:

Storenum//库存

监听的操作类型:

Insert

功能描述:

商品入库时,更新该商品库存量,若库存中没有该商品,则添加其商品信息入库存表

(2)详细操作流程

【详细说明该存储过程的操作过程,可以用伪代码、流程图或自然语言】

1.声明标量接收inserted表中的商品号,仓库号,入库数量

2.找出库存表中最大的顺序号(主键),加一后用标量@n接收

3.用select语句找出库存表中是否存在需入库的该商品信息

4.判断若存在该商品,则库存量加上入库数量

5.若不存在,则插入该商品信息,库存量存储为入库数量

(3)代码及注释

createtriggerin_storenumoninput

forinsertas

declare@scodechar(20),@ccodechar(20),@innumberint,@aint,@max_nint

select@scode=scode,@ccode=ccode,@innumber=innumberfrominserted

select@a=count(*)fromstorenumwherescode=@scodeandccode=@ccode

if@a>

updatestorenumsettotalnum=totalnum+@innumberwherescode=@scodeandccode=@ccode

else

begin

select@max_n=max(n)fromstorenum

insertintostorenumvalues(@max_n+1,@ccode,@scode,@innumber)

end;

4.3.2触发器2

de_storenum

Sale//销售日志

商品售出而在销售日志中插入出售记录时,更新库存,使库存中的商品数量减少出售的数量

1.声明变量从inserted表中接收商品号,出售数量

2.更新库存表,使得该商品库存量减少出售数量

createtriggerde_storenumonsale

declare@scodechar(20),@snumberint

select@scode=scode,@snumber=snumberfrominserted

updatestorenumsettotalnum=totalnum-@snumberwherescode=@scode;

4.3.3触发器1

storenum_totalnum

Storenum//库存表

Update

当更新库存表时,监控商品的库存总量,若库存总量超过5000时,

提示'

存入量超标,任意商品存储量应小于5000!

'

并回滚操作

取消之前的更新操作

1.声明变量从inserted表中接收库存总量

2.判断该库存总量是否大于5000

3.若大于5000,则提示文字,并回滚操作

createtriggerstorenum_totalnumonstorenum

forupdateas

declare@totalnumint

select@totalnum=totalnumfrominserted

if@totalnum>

=5000

begin

print('

rollbacktransaction

4.3.4触发器1

change_sale_n

Sale//销售日志(该触发器也修改并使用在入库表和库存表中)

当向销售日志表插入数据,顺序号(主键)与表中的末尾顺序号不连接时,自动修改成连接的数字(该触发器也修改并使用在入库表和库存表中)

1.声明变量接收inserted表中的需要插入顺序号

2.数出从销售日志中的总行数并赋值给变量@old_n

3.将总行数@old_n赋值给刚插入那一行的顺序号

createtriggerchange_sale_nonsale

forinsertas

declare@new_nint,@old_nint

select@new_n=nfrominserted

select@old_n=coun

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1