超市销售数据库.docx
- 文档编号:4073009
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:16
- 大小:41.19KB
超市销售数据库.docx
《超市销售数据库.docx》由会员分享,可在线阅读,更多相关《超市销售数据库.docx(16页珍藏版)》请在冰豆网上搜索。
超市销售数据库
数据库系统课程设计
题目超市销售管理数据库设计
院系信息技术与工程学院
专业计算机科学与技术
姓名
学号
班级名称
指导教师
成绩
2016年12月15日
前言1
一、系统需求分析1
1、处理对象1
2、系统功能及信息处理1
3、安全性和完整性要求2
4、系统结构图2
二、概念模型3
1、分E-R图建立3
2、全局/整体E-R图4
三、关系数据模型5
1、关系模式建立5
2、用户子模式建立5
四、数据库物理设计6
五、数据库实施与测试6
1、数据库实施6
2、数据库测试6
六、总结6
附录8
前言
超市销售管理系统是为了解决超市销售管理业务方面面临的复杂业务流程和繁琐数据处理等问题,提高超市运营效率,提高经济效益,提高市场竞争力而研究开发的一款数据库软件。
在开发平台windows上,采用了SQL数据库程序设计语言予以实现;可访问SQLSEREVER2005数据库,具有商品录入、商品信息查询、交易额计算、会员打折、打印销售发票、退货、打印退货发票、记录交易细节、货架管理、商品过期警告、缺货警告等方面的功能,为超市管理提供了有效的技术保障,并且可直接作为开发整个超市管理系统时已完成的一部分模块。
一、系统需求分析
1、处理对象
系统要处理的基本对象包括营业员基本信息、会员基本信息、管理员基本信息、商品基本信息、货架基本信息、销售单基本信息、退货单基本信息等多个对象。
各个基本对象包含信息如下所示:
营业员(营业员号,姓名,收银台位置,上班时间,下班时间,月薪,联系电话);
会员(会员卡号,会员姓名,卡密码,注册时间,累计消费);
商品(商品编号,货架编号,条形码,商品名称,商品价格,现有存量,存量底线,生产日期,保质期,供货商);
销售单(销售单编号,营业员编号,会员卡号,打印时间,有无折扣);
销售商品(销售单号,商品编号,销售数量);
货架(货架编号,管理员号,货架名称);
管理员(管理员号,姓名,联系电话,上班时间,下班时间,月薪);
退货单(退货单号,商品编号,退货数量);
打印(退货单号,销售单号,营业员号,打印时间)。
2、系统功能及信息处理
本中小型超市销售管理系统大体上包含三个模块,为前台收银业务处理,前台退货业务处理以及后台销售处理功能模块,具体如下所述。
收银业务
通过扫描条形码或者直接输入商品名称(对于同类多件商品采用一次录入加数量的方式),计算本次交易的总金额,同时打印销售发票给顾客(包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号等信息)。
如果顾客是本店会员并持有本人会员卡,则在交易前先扫描会员卡,对此会员一定优惠,并将所购物品的总金额累计到该会员的总消费金额中,记录好会员信息。
退货处理
顾客持有销售发票到收银台找收银员退货,若没有相应销售发票不予以退货。
通过扫描销售发票计算本次退货处理的退货额,并打印出退货发票给顾客,系统记录好退货信息。
销售处理
作为超市后台管理部分,此系统应该具有功能包括当打印销售发票或退货发票时自动增减货架上商品数量,当货架商品不足时自动生成缺货警告信息给管理员,系统能够生成销售排行榜供管理员查看。
3、安全性和完整性要求
安全性先通过视图机制,不同的用户只能访问系统授权的视图;再通过用户授权机制,通过用户登陆来识别用户级别,根据这个级别来分配用户权限,达到数据更高层次的安全保密功能。
完整性要求用于确保各处理对象的主属性取值唯一并且一般不能为空;各处理对象的参照属性取值必须是来自于被参照属性。
可以通过用户自定义完整性(符合实际要求)来确保数据符合更高规范要求。
详细完整性要求见于系统的逻辑设计阶段。
4、系统结构图
通过对中小型超市销售管理业务及其功能方面的分析,构造出超市管理系统的总体结构图如下:
图1超市管理总体结构图
由于本系统为销售管理系统,只是超市管理系统的一部分,因此只实现了收营业务、退货处理和销售处理部分的功能。
对这三个处理模块进一步细化得到如下分结构图:
二、概念模型
1、分E-R图建立
根据分解第二层数据流程图可分别得到三个分E-R图。
2、全局/整体E-R图
由于在做局部E—R图时,只考虑了局部功能模块,这样会导致各个E—R图之间有很多不一致的地方,造成在合并各分E—R图生成全局E—R图时有很多冲突。
通过仔细分析各个分E-R图之间的联系,消除冗余,消除冲突,最终成功生成全局E-R图,如下图所示。
三、关系数据模型
1、关系模式建立
关系模型由E—R图转换而来,实际上就是要将实体、实体的属性和实体之间的联系明确表示出来,这种转换一般遵循如下规则:
一个实体型转换为一个关系模式。
实体的属性就是关系的属性,实体的码就是关系的码。
此数据库系统包括营业员、会员、管理员、商品、货架、销售单、销售商品、退货单、打印多个关系模式:
营业员(营业员号,姓名,收银台位置,上班时间,下班时间,月薪,联系电话);
会员(会员卡号,会员姓名,卡密码,注册时间,累计消费);
商品(商品编号,货架编号,条形码,商品名称,商品价格,现有存量,存量底线,生产日期,保质期,供货商);
销售单(销售单编号,营业员编号,会员卡号,打印时间,有无折扣);
销售商品(销售单号,商品编号,销售数量);
货架(货架编号,管理员号,货架名称);
管理员(管理员号,姓名,联系电话,上班时间,下班时间,月薪);
退货单(退货单号,商品编号,退货数量);
打印(退货单号,销售单号,营业员号,打印时间);
2、用户子模式建立
用户子模式可通过建立视图来表示。
视图是虚表,是从一个或几个基本表(或视图)中导出的表,在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。
定义视图可以简化应用程序、可以实现一定的权限控制。
为了满足用户需求及方便后期数据库实施阶段的设计,此系统设计了如下视图。
各视图定义:
商品保质期(商品名称,生产日期,保质期,过期日期)
下架商品(商品名称,货架名称,过期日期)
营业员基本信息(营业员号,上班时间,下班时间,月薪,联系电话)
会员总消费情况(卡号,姓名,累计消费)
商品价格(商品名称,价格)
商品存放(商品名称,货架名称)
缺货商品(商品名称,现有存量,底线存量)
货架信息(货架名称,存放商品名)
上班情况(上班时间,营业员姓名,管理员姓名)
工作人员联系方式(姓名,编号,联系电话)
工作人员工资信息(姓名,编号,工资)
四、数据库物理设计
此数据库系统建立的索引如下所述。
(1)对于基本表ShopAssistant(营业员),由于要经常对属性列Snum查询从而获得某个营业员的完整信息,并且很少对其更新,因此可以给属性列Snum建一个聚簇索引。
(2)同理对于基本表Member(会员),由于要经常对属性列Mnum查询从而获得某个会员的完整信息,并且很少对其更新,因此可以给属性列Mnum建一个聚簇索引。
(3)对于Adminastrator(管理员),可在其属性列Anum上建立唯一性索引,索引值按降序排列。
(4)同样对于基本表GoodsShelf(货架)、Goods(商品),可在其主属性上建立唯一性索引。
(5)对于基本表BillSell(销售单)、SellGoods(销售商品)、ReturnGoods(退货单)、PrintBill(打印),由于其属性值经常发生变化,权衡系统为维护索引付出的代价,可考虑不建立索引。
五、数据库实施与测试
数据库实施与测试阶段主要内容包括数据库实施和测试两个部分。
1、数据库实施
数据库及数据库对象建立
主要包括:
数据库、基本表、视图、索引、触发器以及存储过程。
相应T-SQL和PL/SQL语句详见附录.
数据入库
对各个数据表成功要录入了50条左右的测试记录,测试结果满足设计要求。
2、数据库测试
数据库测试阶段主要内容是对建立的数据库及数据库对象进行测试,对测试结果进行分析,是否满足设计要求。
六、总结
通过数据库课程设计实习,对数据库知识有了更广泛的了解,在数据库的应用方面有了很大的收获。
(2)加深了对数据库系统相关知识和SQLSERVER2008数据库相关功能的理解。
以前只停留于记忆书本上关于数据库系统的理论知识,没有切身实地的实践过,而通过这次实习我再次加深了对数据库相关功能的理解与应用。
(3)进一步掌握相关的SQL语句。
开发设计超市销售管理系统的过程中牵涉到相当多基本表的建立,视图、索引以及存储过程的设计,这让我对这些SQL语句操作更熟练了。
(4)熟悉了对项目开发的大致过程。
这次系统开发,我更加明白体验到了数据库系统开发的过程,包括系统需求分析、概念设计、逻辑设计、物理设计,再到数据库实施、系统的测试和调试,对项目(系统)开发的大致流程有了一定的了解,为以后的系统的开发打下了良好的基础。
同样在在这次实习中,我看到了自己的基础知识的薄弱性,更体验到了基础知识的重要性。
比如说对具体的SQL语句还不是很熟悉,在画E-R图、设计带输出变量的存储过程以及建立相关索引(聚簇索引)时感到有些棘手。
遇到问题不可怕,其实能遇到问题是好事,它能让我在解决问题时学到更多的新知识,更能增加我的自信。
和传统管理模式相比较,使用本系统,毫无疑问会大大提高超市的运作效率,辅助提高超市的决策水平,管理水平,为降低经营成本,提高效益,减少差错,节省人力,减少顾客购物时间,增加客流量,提高顾客满意度,增强超市扩张能力,都能提供有效的技术保障。
但超市管理系统涉及范围宽,要解决的问题多,功能复杂,实现困难,本系统只能做出其中的销售管理部分功能,只适合小型超市使用。
由于自己初次独立设计开发数据库系统,能力非常有限,加上时间仓促,本系统毫无疑问有许多的不足之处。
对于出现的以上问题,我们深表歉意,恳请老师批评指正。
附录
1、创建数据库
createdatabaseSupermarket_SM;
2、创建基本表
createtableShopAssistant(
Snumchar(10)primarykey,
Snamechar(10)notnull,
Splacechar(10),
Swtimechar(10),
Sctimechar(10),
Ssalaarynumeric(10,1),
Sphonechar(20)
)
createtableAdministrator(
Anumchar(5)primarykey,
Anamechar(15)notnull,
Awtimechar(10),
Actimechar(10),
Asalarynumeric(10,1),
Aphonechar(25)
)
createtableMember(
Mnumchar(15)primarykey,
Mnamechar(15),
Mpasswordchar(6)notnull,
MregisterTimedate,
Mexpensenumeric(10,2)
)
createtableGoodsShelf(
GSnumchar(10)primarykey,
Anumchar(5)foreignkeyreferencesAdministrator(Anum),
GSnamechar(15),
)
createtableGoods(
Gnumchar(10)primarykey,
GSnumchar(10)foreignkeyreferencesGoodsShelf(GSnum),
Gbarcodechar(20),
Gnamechar(20),
Gpricenumeric(5,2),
GSstocksmallint,
GSlimitsmallint,
Gproducetimedate,
Gtimeint,
Gsupplierchar(50)
)
createtableBillSell(
Bnumchar(15)primarykey,
Snumchar(10)foreignkeyreferencesShopAssistant(Snum),
Mnumchar(15)foreignkeyreferencesMember(Mnum),
Bdatesmalldatetime,
Bdiscountchar
(2)
)
createtableSellGoods(
Bnumchar(15),
Gnumchar(10),
Bquantitysmallint,
primarykey(Gnum,Bnum),
foreignkey(Gnum)referencesGoods(Gnum),
foreignkey(Bnum)referencesBillSell(Bnum)
)
createtableReturnGoods(
Rnumchar(10)primarykey,
Gnumchar(10)foreignkeyreferencesGoods(Gnum),
Rquantitysmallint
)
createtablePrintBill(
Bnumchar(15),
Rnumchar(10),
Snumchar(10),
Rdatasmalldatetime,
primarykey(Bnum,Rnum,Snum),
foreignkey(Bnum)referencesBillSell(Bnum),
foreignkey(Rnum)referencesReturnGoods(Rnum),
foreignkey(Snum)referencesShopAssistant(Snum)
)
3、创建索引
(1)对于基本表ShopAssistant(营业员),由于要经常对属性列Snum查询从而获得某个营业员的完整信息,并且很少对其更新,因此可以给属性列Snum建一个聚簇索引。
其相应SQL语句为:
createclusteredindexdex_SnumonShopAssistant(Snum);
(2)同理对于基本表Member(会员),由于要经常对属性列Mnum查询从而获得某个会员的完整信息,并且很少对其更新,因此可以给属性列Mnum建一个聚簇索引。
其相应SQL语句为:
createclusteredindexdex_MunmonMember(Mnum);
(3)对于Adminastrator(管理员),可在其属性列Anum上建立唯一性索引,索引值按降序排列。
其相应SQL语句为:
createuniqueindexdex_AnumonAdministrator(Anumdesc);
(4)同样对于基本表GoodsShelf(货架)、Goods(商品),可在其主属性上建立唯一性索引。
其相应SQL语句为:
createuniqueindexdex_GSnumonGoodsShelf(GSnum);
createuniqueindexdex_GnumonGoods(Gnum);
4、创建视图
相应SQL语句为:
createviewV_Salesman
as
selectSnum,Swtime,Sctime,Ssalaary,Sphone
fromShopAssistant
createviewV_member
as
selectMnum,Mname,Mexpense
fromMember
createviewV_GoodsPrice
as
selectGname,Gprice
fromGoods
createviewV_GoodsStore
as
selectGname,GSname
fromGoods,GoodsShelf
where=
createviewV_GoodsLack
as
selectGname,GSstock,GSlimit
fromGoods
whereGSstock<=GSlimit
createviewV_GoodsShelf
as
selectGSname,Gname
fromGoodsShelf,Goods
where=
createviewV_Work
as
select,,
fromShopAssistant,Administrator
where=
createviewV_Phone(name,num,phone)
as
(selectSname,Snum,Sphone
fromShopAssistant)
union
(selectAname,Anum,Aphone
fromAdministrator)
createviewV_Salary(name,num,salary)
as
(selectSname,Snum,Ssalaary
fromShopAssistant)
union
(selectAname,Anum,Asalary
fromAdministrator)
createviewV_GoodsEnd
as
selectGname,Gproducetime,Gtime,DateAdd(DAY,Gtime,Gproducetime)EndTime
fromGoods
createviewV_GoodsUnload
as
selectGname,,DateAdd(DAY,Gtime,Gproducetime)EndTime
fromGoods,GoodsShelf
whereDateAdd(DAY,Gtime,Gproducetime)<=GETDATE()
and=
createviewv_BillExpense
as
selectBnum,Gname,Gprice,Bquantity,(Bquantity*Gprice)TotalExpense
fromSellGoods,Goods
where=
5、创建触发器
(1)当打印一张销售发票时,即删除数据库中刚建立的销售发票时,相应商品在货架上的现有存量减少,相应会员总消费额增加。
其相应SQL语句为:
createtriggert1onv_BillExpense
INSTEADOFdelete
as
declare@Quantityint,
@Gnamechar(10),
@TotalExpensefloat
--@Bnumchar(10)
select@Quantity=Bquantityfromdeleted
select@Gname=Gnamefromdeleted
--select@TotalExpense=TotalExpensefromdeleted
--select@Bnum=Bnumfromdeleted
updateGoods
setGSstock=GSstock-@Quantity
where=@Gname
--updateMember
--setMexpense=Mexpense+@TotalExpense
--where@Bnum=
--and=Mnum
(2)当从过期商品名单中删除某记录时,相应商品现有存量减少.
其相应SQL语句为:
createtriggert2onV_GoodsUnload
INSTEADOFdelete
as
declare@Gnamechar(10)
select@Gname=Gnamefromdeleted
deletefromGoods
whereGname=@Gname
(3)打印一张退货发票,即删除退货单中的记录,表示R商品重新返回原货架存储(假设脱货商品不影响第二次销售),货架商品现有存量增加.
其相应SQL语句为:
createtriggert3onReturnGoods
afterdelete
as
declare@Gnumchar(10),
@Rquantityint
select@Gnum=Gnumfromdeleted
select@Rquantityfromdeleted
updateGoods
setGSstock=GSstock+@Rquantity
whereGnum=@Gnum
6、建立储存过程
(1)计算某个销售单上,每种商品的累计销售额(即输出每种商品名称,件数,单价,费用小计)。
其相应SQL语句为:
createprocedurep_TotalExpense
(@BS_Bnumvarchar,
@Bnumvarcharoutput,
@Gnamevarcharoutput,
@Bquantityintoutput,
@Gpricenumericoutput,
@TotalExpensenumericoutput)
as
select@Bnum=Bnum,@Gname=Gname,@Bquantity=Bquantity,@Gprice=Gprice,@TotalExpense=(Bquantity*Gprice)
fromv_BillExpense
whereBnum=@BS_Bnum
其验证语句为:
Declare
@T_Bnumvarchar,
@T_Gnamevarchar,
@T_Bquantityint,
@T_Gpricevarchar,
@T_TotalExpensevarchar
Executep_TotalExpense'GS-0000004',@T_Bnumoutput,@T_Gnameoutput,@T_Bquantityoutput,@T_Gpriceoutput,@T_TotalExpenseoutput
Print@T_Bnum+''+@T_Gname+''+@T_Bquantity+''+@T_Gprice+''+@T_TotalExpense
(2)计算某个销售单上,顾客消费商品总数量和总消费额。
其相应SQL语句为:
createprocedurep_BillExpense
@BS_Bnumvarchar
as
selectBnum,sum(Bquantity)TotalQuantity,sum(TotalExpense)TotalExpense
fromv_BillExpense
groupbyBnum
havingBnum=@BS_Bnum
(3)查询某件商品价格。
其相应SQL语句为:
createprocedurep_price
@Gnamechar(10)
as
selectGprice
fromV_GoodsPrice
whereGname=@Gname
(4)查询某件商品现有数量。
其相应SQL语句为:
createprocedurep
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超市 销售 数据库