sql数据库原理与应用课程报告.docx
《sql数据库原理与应用课程报告.docx》由会员分享,可在线阅读,更多相关《sql数据库原理与应用课程报告.docx(21页珍藏版)》请在冰豆网上搜索。
sql数据库原理与应用课程报告
《数据库原理与应用》课程报告
-超市管理信息系统数据库设计
姓名:
谯林
学号:
2
专业:
11信息管理与信息系统
目录ﻩ2
超市信息管理3
1超市信息系统简介ﻩ4
1.1信息系统介绍4
2 系统逻辑设计5
2.1系统功能模块5
3数据库设计6
3.2逻辑设计ﻩ7
3.3物理设计ﻩ7
4.1存储过程11
4.1.1多表查询11
4.1.2查询商品均价12
4.1.3查询商品平均数量ﻩ13
4.1.4查询销售总价ﻩ14
4.1.5查询采购总价15
4.1函数ﻩ18
4.1.1计算每种商品的销售总价ﻩ18
4.1.2计算采购支出总价ﻩ19
超市信息管理
随着社会经济的发展和计算机的发展,企业管理也开始逐渐引进科学的信息管理方法以代替传统的手工方式。
信息管理系统能实现强大的自动化管理和实时监控的作用,这对于提升企业管理水平有着重要作用。
国家政策的支持和技术的发展,使得信息管理系统逐渐在企业中发展普及。
在这种情况下,超市等零售商为了更好的管理和提升工作效率,也逐渐开始引进信息管理系统。
因此,有必要设计一个超市管理系统来帮助零售企业更加科学合理高效的管理。
。
信息管理系统的设计,其中一个重要的就是系统的数据库设计。
这里选择微软开发的SQLSERVER作为平台,利用国际通用的数据库语言T-SQL语言进行编程开发。
其中最重要的就是做存储过程来实现一次性的快捷查询,修改等功能。
。
1超市信息系统简介
1.1 信息系统介绍
信息系统是由计算机硬件、网络和通讯设备、计算机软件、信息资源、信息用户和规章制度组成的以处理信息流为目的的人机一体化系统。
信息系统的五个基本功能:
输入、存储、处理、输出和控制。
输入功能:
信息系统的输入功能决定于系统所要达到的目的及系统的能力和信息环境的许可。
存储功能:
存储功能指的是系统存储各种信息资料和数据的能力。
处理功能:
基于数据仓库技术的联机分析处理(OLAP)和数据挖掘(DM)技术。
输出功能:
信息系统的各种功能都是为了保证最终实现最佳的输出功能。
控制功能:
对构成系统的各种信息处理设备进行控制和管理,对整个信息加工、处理、传输、输出等环节通过各种程序进行控制。
1.2实现的功能
(1)查询超市的进出货情况和负责人
(2)查询商品的平均价格
(3)查询商品的平均进货数量
(4)查询销售的总金额
(5)查询采购的总金额
2系统逻辑设计
2.1 系统功能模块
图2.1系统功能模块
3 数据库设计
3.1概念设计
E-R模型如下图3.1所示:
图3.1E-R图
3.2 逻辑设计ﻩ
数据库逻辑设计去除了所有冗余数据,提高了数据吞吐速度,保证了数据的完整性,清楚地表达数据元素之间的关系。
将关系模型转化为逻辑模型:
员工信息(员工ID,姓名)
岗位信息表(岗位ID,岗位名称)
员工岗位分配信息(员工ID,岗位ID,当前状态)
会员信息表(会员ID,姓名,类型ID,积分,余额)
会员类型(类型ID,类型名称)
销售记录表(记录ID,会员ID,收银员ID,销售日期)
销售明细表(明细项目ID,商品条码,数量,售价,销售记录ID)
采购记录表(采购单ID,采购员ID,供应商ID,采购日期,当前状态,物流编号,承运商ID,发货日期,到货日期)
采购明细表(采购项目ID,商品条码,数量,采购单价,采购单ID)
供应商记录表(供应商ID,供应商名称)
承运商信息(承运商ID,承运商名称)
仓库信息表(仓库ID,仓库名称)
超市信息表(超市ID,超市名称)
入库记录表(入库单ID,库管员ID,仓库ID,入库日期,承运商ID,采购单ID)
入库明细表(项目ID,商品条码,数量,入库单ID)
出库记录表(出库单ID,库管员ID,仓库ID,出库日期,超市ID)
出库明细表(项目ID,商品条码,数量,出库单ID)
商品定价记录表(定价ID,经理ID,定价日期)
商品定价明细表(项目ID,商品条码,计量单位,销售价格)
商品信息表(商品条码,商品名称)
3.3 物理设计
根据E-R图和逻辑设计总共设计了20个表,员工信息表、会员信息表、采购记录表、销售记录表表等各种表的关系如图3.2所示:
图3.2表关系图
报表主要是对各个流程信息的统计报表,其中主要包括的有员工信息表、岗位信息表、出库明细表、入库明细表、采购明细表、采购记录表,销售明细表,销售记录表对上述表进行统计安排,该超市信息系统可以储存一个庞大的超市的商品流动信息,具体如下:
(1)员工信息表:
表3.1员工信息表
字段名称
说明
数据类型
大小
主键外键
是否为空
员工ID
员工编号
int
/
主键
否
员工姓名
员工姓名
nvarchar
12
否
否
(2)岗位信息表:
表3.2岗位信息表
字段名称
说明
数据类型
大小
主键外键
是否为空
岗位ID
岗位ID
int
/
主键
否
岗位名称
岗位名称
nvarchar
12
否
否
(3)出库明细表:
表3.3出库明细表
字段名称
说明
数据类型
大小
主键外键
是否为空
项目ID
出库编号
int
/
主键
否
商品条码
商品编号
int
/
否
否
数量
出库数量
int
/
否
否
出库单ID
出库记录
int
/
是
否
(4)入库明细表:
表3.4 入库明细表
字段名称
说明
数据类型
大小
主键外键
是否为空
项目ID
出库编号
int
/
主键
否
商品条码
商品编号
int
/
否
否
数量
入库数量
int
/
否
是
入库单ID
入库记录
int
/
是
是
(5)销售明细表
表3.5 销售明细表
字段名称
说明
数据类型
大小
主键外键
是否为空
明细ID
明细ID
int
/
主键
否
商品条码
商品条码
int
/
是
否
数量
销售数量
int
/
否
否
售价
销售价格
smallmoney
/
否
否
销售记录ID
销售ID
int
/
是
否
(6)销售记录表
表3.6销售记录表
字段名称
说明
数据类型
大小
主键外键
是否为空
记录ID
销售ID
int
/
主键
否
收银员ID
收银员ID
int
/
外键
否
会员ID
会员ID
int
/
外键
否
销售日期
销售日期
smalldatetime
否
否
(7)采购记录表
表3.7采购记录表
字段名称
说明
数据类型
大小
主键外键
是否为空
采购单ID
采购ID
int
/
主键
否
采购员ID
采购员ID
int
/
外键
否
供应商ID
供应商ID
int
/
外键
否
采购日期
采购日期
smalldatetime
/
否
否
当前状态
当前状态
nvarchar
12
否
否
物流编号
物流编号
int
/
否
否
承运商ID
承运商ID
int
/
否
否
发货日期
发货日期
smalldatetime
/
否
否
到货日期
到货日期
smalldatetime
/
否
否
(8)采购明细表
表3.8 采购明细表
字段名称
说明
数据类型
大小
主键外键
是否为空
采购项目ID
采购项目ID
Int
/
主键
否
商品条码
商品条码
int
/
外键
否
数量
商品数量
int
/
否
否
采购单价
采购单价
smallmoney
/
否
否
采购单ID
采购记录
int
/
外键
否
4存储过程与函数
4.1存储过程
4.1.1多表查询
功能说明:
用存储过程多表查询谁采购的,谁供应的,谁承运的
源代码:
use超市数据库
go
createproc 查询采购
as
select a.采购员ID,a.供应商ID,a.承运商ID
from采购记录表a
inner join员工信息b
ona.采购员ID =b.员工ID
innerjoin承运商信息c
onc.承运商ID =a.承运商ID
innerjoin供应商记录表d
on a.供应商ID =d.供应商ID
select *from员工信息
select * from 供应商记录表
select * from 承运商信息
go
use超市数据库
go
exec 查询采购;
go
4.1.2查询商品均价
功能说明:
用存储过程实现查询所有商品的均价
源代码:
use超市数据库
Go
createproc查询所有商品均价
@采购均值intoutput
As
begin
select
@采购均值=AVG(采购单价)
from采购明细表
end
Go
declare
@采购均价int
exec查询所有商品均价
@采购均价output
print'商品采购均价='+convert(nchar(12),@采购均价)
go
4.1.3查询商品平均数量
功能说明:
用存储过程实现查询所有商品的平均数量
源代码:
use 超市数据库
go
createproc查询所有商品平均数量
@采购均数intoutput
as
begin
select@采购均数=AVG(数量)from采购明细表
end
go
declare
@采购均数int
exec 查询所有商品平均数量
@采购均数output
print '商品平均数量='+convert(nchar(12),@采购均数)
go
4.1.4查询销售总价
功能说明:
用存储过程实现查询查询销售总价
源代码:
use超市数据库
go
createtype dbo.销售临时表as Table
(
明细项目IDint notnull,
数量intnotnull,
售价smallmoneynotnull,
销售总计intnotnull
)
Go
createfunction查询销售总价函数()
returns@销售收入table
(
明细项目IDintnot null,
数量intnotnull,
售价 smallmoney notnull,
销售总计 intnotnull
)
as
begin
declare@明细项目IDint;
declare@数量 int;
DECLARE@售价 smallmoney;
declare @销售总计int;
DECLARE@errorSumint;
set@errorSum=0;
DECLARE MyCur CURSOR
LOCALSCROLL
FOR
SELECT明细项目ID,数量,售价 FROM销售明细表
OPENMyCur
FETCHNEXT FROMMyCur
INTO@明细项目ID,@数量,@售价
set@errorSum=@errorSum+@@ERROR
WHILE@@FETCH_STATUS=0
BEGIN
select @销售总计=数量*售价 from销售明细表
where@明细项目ID=明细项目ID
insert into@销售收入 values(CONVERT(nvarchar(12),@明细项目ID),CONVERT(nvarchar(12),@数量),CONVERT(nvarchar(12),@售价),CONVERT(nvarchar(12),@销售总计)
ﻩ FETCHNEXTFROM MyCur
INTO@明细项目ID,@数量,@售价
END
ﻩreturn
end
go
createproc调用销售总价函数的存储过程
as
begin
select 明细项目ID,数量,售价,销售总计 from查询销售总价函数()
end
go
exec 调用销售总价函数的存储过程
go
4.1.5查询采购总价
功能说明:
用存储过程实现查询查询采购总价
源代码:
use超市数据库
go
createtypedbo.采购临时表1 asTable
(
采购项目IDintnotnull,
数量intnotnull,
售价smallmoneynot null,
采购总计 intnotnull
)
Go
createfunction查询采购总价函数()
returns @采购支出table
(
采购项目IDint not null,
数量int notnull,
售价smallmoneynotnull,
采购总计int notnull
)
as
begin
declare@采购项目IDint;
declare@数量 int;
DECLARE@采购单价smallmoney;
declare @采购总计int;
DECLARE@errorSumint;
set@errorSum=0;
DECLAREMyCurCURSOR
LOCAL SCROLL
FOR
SELECT采购项目ID,数量,采购单价FROM 采购明细表
OPENMyCur
FETCHNEXTFROMMyCur
INTO@采购项目ID,@数量,@采购单价
set @errorSum=@errorSum+@@ERROR
WHILE@@FETCH_STATUS=0
ﻩ BEGIN
ﻩselect@采购总计=数量*采购单价 from采购明细表
where@采购项目ID=采购项目ID
ﻩ insertinto @采购支出
values(CONVERT(nvarchar(12),@采购项目ID),CONVERT(nvarchar(12),@数量),CONVERT(nvarchar(12),@采购单价),CONVERT(nvarchar(12),@采购总计))----
ﻩ FETCHNEXTFROMMyCur
INTO @采购项目ID,@数量,@采购单价
END
return
end
go
createproc 调用采购总价函数的存储过程
as
begin
select 采购项目ID,数量,售价,采购总计from查询采购总价函数()
end
go
exec调用采购总价函数的存储过程
go
4.1函数
4.1.1计算每种商品的销售总价
功能说明:
用函数实现计算每种商品的销售总价
源代码:
use超市数据库
go
createtype dbo.销售临时表asTable
(
明细项目IDintnotnull,
数量intnotnull,
售价 smallmoneynotnull,
销售总计int notnull
)
Go
createfunction 查询销售总价函数()
returns @销售收入table
(
明细项目ID intnotnull,
数量intnotnull,
售价smallmoneynot null,
销售总计int notnull
)
as
begin
declare@明细项目IDint;
declare@数量int;
DECLARE@售价smallmoney;
declare @销售总计int;
DECLARE@errorSumint;
set@errorSum=0;
DECLAREMyCurCURSOR
LOCALSCROLL
FOR
SELECT明细项目ID,数量,售价FROM销售明细表
OPENMyCur
FETCHNEXTFROMMyCur
INTO @明细项目ID,@数量,@售价
set@errorSum=@errorSum+@@ERROR
WHILE@@FETCH_STATUS=0
BEGIN
ﻩ select@销售总计=数量*售价from销售明细表
where@明细项目ID=明细项目ID
ﻩ insertinto @销售收入
ﻩvalues(CONVERT(nvarchar(12),@明细项目ID),CONVERT(nvarchar(12),@数量),CONVERT(nvarchar(12),@售价),CONVERT(nvarchar(12),@销售总计))----
FETCHNEXTFROMMyCur
INTO @明细项目ID,@数量,@售价
ﻩEND
return
end
go
select*from查询销售总价函数()
go
4.1.2计算采购支出总价
功能说明:
用函数实现计算采购支出总价
源代码:
use超市数据库
go
createtypedbo.采购临时表1 asTable
(
采购项目IDint not null,
数量int not null,
售价smallmoney notnull,
采购总计intnotnull
)
Go
createfunction 查询采购总价函数()
returns@采购支出table
(
采购项目IDintnot null,
数量 intnot null,
售价smallmoneynotnull,
采购总计intnot null
)
as
begin
declare@采购项目IDint;
declare@数量int;
DECLARE@采购单价smallmoney;
declare@采购总计int;
DECLARE @errorSum int;
set@errorSum=0;
DECLAREMyCurCURSOR
LOCALSCROLL
FOR
SELECT采购项目ID,数量,采购单价FROM采购明细表
OPENMyCur
FETCHNEXTFROMMyCur
INTO@采购项目ID,@数量,@采购单价
set @errorSum=@errorSum+@@ERROR
WHILE@@FETCH_STATUS=0
BEGIN
select@采购总计=数量*采购单价 from采购明细表
where@采购项目ID=采购项目ID
insertinto@采购支出
values(CONVERT(nvarchar(12),@采购项目ID),CONVERT(nvarchar(12),@数量),CONVERT(nvarchar(12),@采购单价),CONVERT(nvarchar(12),@采购总计))----
ﻩFETCHNEXTFROMMyCur
INTO@采购项目ID,@数量,@采购单价
ﻩEND
return
end
go
select*from查询采购总价函数()
总结
首先通过文章开始对超市信息管理系统的概念对题目大体做了介绍和铺垫,然后又具体介绍了超市信息管理系统,之后进行数据库设计,包括ER图,功能模块说明,逻辑设计说明,物理设计说明。
针对超市管理系统本身的特点和对系统的功能要求,选用数据库系统选用SQLserver。
论文最后添加了部分代码,包括存储过程和函数。
总的来说,此次数据库设计基本达成了目标,用SQL平台进行T-SQL语言编程基本实现了简单的超市管理的要求。
在过程中遇到了困难,通过查资料,看代码,看实例,与同学交流,克服了困难。
从中体会到了团队协作,独立精神的重要性。
。
ﻬ教师审阅意见:
审阅意见:
成绩:
教师(签名):
批阅日期:
说明:
1.请使用A4纸打印或复印空表;
2.内容不得抄袭、照搬;
3.若实验内容、实验总结篇幅不够,可另附A4纸张;
4. 设计类课程,要求提交实验成果纸质版和实验作品电子版。