超市销售数据库.docx

上传人:b****4 文档编号:5520337 上传时间:2022-12-18 格式:DOCX 页数:19 大小:204.92KB
下载 相关 举报
超市销售数据库.docx_第1页
第1页 / 共19页
超市销售数据库.docx_第2页
第2页 / 共19页
超市销售数据库.docx_第3页
第3页 / 共19页
超市销售数据库.docx_第4页
第4页 / 共19页
超市销售数据库.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

超市销售数据库.docx

《超市销售数据库.docx》由会员分享,可在线阅读,更多相关《超市销售数据库.docx(19页珍藏版)》请在冰豆网上搜索。

超市销售数据库.docx

超市销售数据库

超市销售数据库

 

数据库系统课程设计

 

题目超市销售管理数据库设计

院系信息技术与工程学院

专业计算机科学与技术

姓名

学号

班级名称

指导教师

 

成绩

 

2016年12月15日

图1-3销售处理结构图

二、概念模型

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、数据库实施

1.1数据库及数据库对象建立

主要包括:

数据库、基本表、视图、索引、触发器以及存储过程。

相应T-SQL和PL/SQL语句详见附录.

1.2数据入库

对各个数据表成功要录入了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

whereGoods.GSnum=GoodsShelf.GSnum

createviewV_GoodsLack

as

selectGname,GSstock,GSlimit

fromGoods

whereGSstock<=GSlimit

createviewV_GoodsShelf

as

selectGSname,Gname

fromGoodsShelf,Goods

whereGoodsShelf.GSnum=Goods.GSnum

createviewV_Work

as

selectShopAssistant.Swtime,ShopAssistant.Sname,Administrator.Aname

fromShopAssistant,Administrator

whereShopAssistant.Swtime=Administrator.Awtime

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,GoodsShelf.GSname,DateAdd(DAY,Gtime,Gproducetime)EndTime

fromGoods,GoodsShelf

whereDateAdd(DAY,Gtime,Gproducetime)<=GETDATE()

andGoods.GSnum=GoodsShelf.GSnum

createviewv_BillExpense

as

selectBnum,Gname,Gprice,Bquantity,(Bquantity*Gprice)TotalExpense

fromSellGoods,Goods

whereSellGoods.Gnum=Goods.Gnum

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

whereGoods.Gname=@Gname

--updateMember

--setMexpense=Mexpense+@TotalExpense

--where@Bnum=SellBill.Bnum

--andSellBill.Mnum=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_Gquantity

@Gnamechar(10)

as

selectGSstock

fromGoods

whereGname=@Gname

(5)查询强制下架商品名单中商品名称和过期日期。

其相应SQL语句为:

createprocedurep_GoodsUnload

as

selectGname商品名,EndTime过期日期

fromV_GoodsUnload

(6)生成缺货单。

其相应SQL语句为:

createprocedurep_GoodsLack

as

selectv_GoodsLack.Gname商品名,v_GoodsLack.GSstock现有存量,GSname货架名

fromV_GoodsLack,Goods,GoodsShelf

whereV_GoodsLack.Gname=Goods.GnameandGoods.GSnum=GoodsShelf.GSnum

(7)查询指定某个月内的销售情况。

其相应SQL语句为:

createprocedurep_RankingList

@A_monthdate=getdate

as

selectGname,Bquantity,TotalExpense

fromv_BillExpense,BillSell

wherev_BillExpense.Bnum=BillSell.Bnum

andDATEPART(YEAR,@A_month)=DATEPART(YEAR,BillSell.Bdate)

andDATEPART(MONTH,@A_month)=DATEPART(MONTH,BillSell.Bdate)

其验证语句为:

Executep_RankingList@A_month='2010-5-1018:

18';

(8)查询指定工作人员的工资。

其相应SQL语句为:

createprocedurep_SalesmanSalary

@s_Snumchar(10)

as

selectSsalaary

fromV_Salesman

whereSnum=@s_Snum

(9)在某段时间内的上班人员名单。

其相应SQL语句为:

createprocedurep_TimeWork

@T_timechar(10)

as

select*

fromV_Work

whereSwtime=@T_time

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

当前位置:首页 > 幼儿教育 > 少儿英语

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

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