超市数据库设计,超市数据仓库设计
大家好,超市数据库设计相信很多的网友都不是很明白,包括超市数据仓库设计也是一样,不过没有关系,接下来就来为大家分享关于超市数据库设计和超市数据仓库设计的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
超市数据库维护工作有哪些
一、备份系统数据
SYBASE系统的备份与恢复机制保证了在系统失败时重新获取数据的可能性。SQL Server提供了两种不同类型的恢
复机制:一类是系统自动完成的恢复,这种措施在每次系统启动时都自动进行,保证了在系统瘫痪前完成的事务都
写到数据库设备上,而未完成的事务都被回退;另一类是人工完成的恢复,这是通过 DUMP和 LOAD命令来执行人
工备份和恢复工作。因此定期备份事务日志和数据库是一项十分重要的日常维护工作。
1、备份数据库
每一个数据库都应在创建之后卸出,从而提供一个装入基点。在此之后按排定的时间周期表卸出。比如每周五卸出
数据库。对一般数据库系统卸出数据库周期建议为每周一次。
除了按计划周期卸出数据库之外,还需在每次运行没有日志的操作后卸出数据库。例如:
·每次强制地运行了 DUMP TRAN WITH NO_LOG(因为数据库的磁盘空溢出);
·每次用 sp_dboption允许 select into/bulkcopy做快速拷贝,或用 SELECT INTO命令创建一个永久性的表,
或使用了 WRITETEXT命令。
卸出数据库的命令为:
DUMP DATABASE database_name
TO dump_device
database_name是要卸出的数据库名称,dump_device是卸出设备的名称。用系统过程 sp_helpdevice可以获得
设备的信息。
下面一条命令用来卸出数据库 my_db:
DUMP DATABASE my_db
TO db_bk_dev
2、备份事务日志
如果事务日志与数据库放在同一个设备上,则事务日志不应与数据库分开备份。master数据库和小于 4M的用户
数据库就是这种情况。一般数据库系统的数据库和日志分别放在不同的设备上,因此,可以用 DUMP TRAN命令单
独备份日志。
备份事务日志的周期直接影响数据的恢复程度,因此建议每天备份。
备份事务日志的命令格式为:
DUMP TRANsaction database_name
[TO dump_device]
[WITH TRUNCATE_ONLY|WITH NO_LOG|WITH NO_TRUNCATE]
其中 database_name是要备份事务的数据库名称,dump_device是备份设备名称,仅当包含了 WITH
TRUNCATE_ONLY或 WITH NO_LOG子句时,才可以备份到设备。
注意:如果总是用 DUMP DATEBASE(备份数据库及其日志),而不用 DUMP TRAN,事务日志将不会刷新,而变得
非常庞大。
对于 master数据库和小型数据库每次运行 DUMP DATEBASE之后应当运行 DUMP TRANsaction命令刷新日志。
下面一条命令备份数据库 db160的事务日志到备份设备上:
DUMP TRANsaction db160
TO db_log_bk_dev
WITH TRUNCATE_ONLY
3、备份数据库及其日志间的相互作用
在至少卸出一次数据库前,卸出事务日志是毫无意义的。下图显示了备份数据库及其日志间的关系
如果在星期二下午5:01出现非硬件故障,需要做的所有工作是装入磁带5(参见下一节:数据恢复),由于磁带5
是下午5:00刚备份的,因此只有备份和装入之间的一分钟内的数据损失。
但是,如果在星期二下午4:49失效会怎么样呢?在这种情况下,要装入磁带1(在星期五下午5:00的卸出)。然
后,依次装入磁带2,3以及4。这样,系统将恢复到星期二上午10:00点的状态,星期二的大部分工作丢失了。此
例显示了经常卸出事务的重要性。
二、万一系统失败时恢复数据库系统
如果用户数据库存储的设备失效,从而数据库被破坏或不可存取,通过装入最新的数据库备份以及后来的事务日志
备份可以恢复数据库。假设当前的事务日志存在于一个并没有毁坏的设备上,带着 WITH NO_TRUNCATE选项的
DUMP TRANsaction命令卸出它。
要恢复数据库按如下步骤去做:
1、如果日志存在于一个分离的设备上,用带着 NO_TRUNCATE选项的 DUMP TRANsaction命令卸出被毁坏的或者不
可存取的用户数据库事务日志。
2、用下面的查询检查设备分配已毁坏数据库的设备使用情况。必须为同一目的赋同样的空间块。
下面的查询显示了分配给数据库 mydb设备使用和尺寸情况:
SELECT segmap,size FROMsysusages
WHERE dbid=
( SELECT dbid FROM sysdatabases WHERE name=“mydb”)
3、检查查询的输出。在 segmap列的‘3’代表数据分配,‘4’代表日志分配。size列代表 2K数据块的数
目。注意此信息的次序、使用和尺寸部分。例如,输出为:
segmapSize
--------------------
310240//实际尺寸为:20M
35120//实际尺寸为:10M
45120//实际尺寸为:10M
31024//实际尺寸为:2M
42048//实际尺寸为:4M
4、用 DROP DATABASE命令删除毁坏设备上的数据库。如果系统报错,用DBCC DBREPAIR命令的 DROPDB选项。
5、删除数据库后,用 sp_dropdevice删除毁坏了的设备。
6、用 DISK INIT初始化新的数据库设备。
7、重建数据库。用 CREATE DATABASE命令从老的 sysusages表拷贝所有的行,并包含第一逻辑设备。
对上例,命令为:
CREATE DATABASE mydb
ON datadev1=20,datadev2=10
LOG ON logdev1=10
8、用 ALTER DATABASE命令重建其余入口。在此例中,在datadev1上分配更多的空间,命令为:
ALTER DATABASE mydb ON datadev1=2
9、用 LOAD DATABASE重新装入数据库,然后用 LOAD TRAN装入前面卸出的日志。
LOAD DATABASE命令语法是:
LOAD DATABASE database_name
FROM dump_device
LOAD TRANsaction命令的语法是:
LOAD TRANsaction database_name
FROM dump_device
卸出数据库和事务日志的缺省权限归数据库所有者,且可以传递给其他用户;装载数据库和事务的权限也归数据库
所有者,但不能传递。
二、产生用户信息表,并为信息表授权;
系统维护人员的另一个日常事务是为用户创建新的信息表,并为之授权。创建表以及为表授权的方法已经在讲过,
在此只将有关命令语法写出来。
·创建表的命令为:
CREATE TABLE table_name
( column_1 datatype [NULL| NOT NULL| IDENTITY],
column_2……
)
go
ALTER TABLE table_name
ADD PRIMARY KEY(column_list)
go
·删除表的命令格式为:
DROP TABLE table_name
go
·为表授权的命令格式为:
GRANT{ALL|permission_list}
ON table_name TO user_name
go
·收回权限的命令格式为
REVOKE{ALL|permission_list}
ON table_name FROM user_name
go
三、监视系统运行状况,及时处理系统错误;
系统管理员的另一项日常工作是监视系统运行情况。主要有以下几个方面:
1、监视当前用户以及进程的信息
使用系统过程:sp_who
说明:该命令显示当前系统所有注册用户及进程信息,如下表是某系统的信息。
SpidStatusLoginamehostnameblkdbnamecmd
---------------------------------------------------------------
1RunningSascosysv0MasterSELECT
2SleepingNULL0MasterNETWORK HANDLE
3SleepingNULL0MasterDEADLOCK TUNE
4SleepingNULL0MasterMIRROR HANDLER
5SleepingNULL0MasterHOUSEKEEPER
6SleepingNULL0MasterCHECKPOINT SLEEP
从左向右依次显示:进程号、当前状态、注册用户名、主机名、占用块数、数据库名以及当前命令。
如果监视时发现进程总数接近最大连接数(用系统过程:sp_configure“user conn”查看)时,应下掉不活动
或无关进程,以保证系统正常运做;另外亦可监视非法用户或用户使用不属于自己使用范围的数据库等情况。
2、监视目标占用空间情况
使用系统过程:sp_spaceused
说明:该过程显示行数、数据页数以及当前数据库中由某个目标或所有目标所占用的空间。如下表是某数据库日志
表的信息:
NameRow_totalreserveddataIndex_sizeunused
------------------------------------------------------------
SyslogsNot avail32KB32KB0KBNot avail
日常要监视的主要目标有:用户数据库、数据库日志表(syslogs)以及计费原始数据表等。如果发现占用空间过
大,对日志表要进行转储;对其他目标则应扩充空间或清楚垃圾数据。
3、监视 SQL Server统计数字
使用系统过程:sp_monitor
说明:sp_monitor显示SQL Server的历史统计数字,下表是某系统的统计数字:
Last_runCurrent_runSeconds
---------------------------------------------------------------
May 13 2000 1:27PMMay 13 2000 3:01PM5678
CPU_busyIO_busyIdle
---------------------------------------------------------------
16(6)-0%0(0)-0%5727(5672)-99%
Packets_receivedPackets_sentPacket_errors
---------------------------------------------------------------
21(17)100(97)0(0)
Total_readTotal_writeTotal_errorsConnections
--------------------------------------------------------
785(366)311(113)0(0)3(2)
上表依次给出该系统本次运行统计的上一次时间、本次时间、间隔秒数、CPU占用、IO占用、收发包情况、系统读
入写出情况等信息
四、保证系统数据安全,周期更改用户口令;
为保证系统数据的安全,系统管理员必须依据系统的实际情况,执行一系列的安全保障措施。其中,周期性的更改
用户口令是比较常用且十分有效的措施。
更改用户口令是通过调用系统过程sp_password来实现的。Sp_password的语法为:
sp_password caller_password,new_password [,loginame]
其中caller_password是登录口令(老口令),new_password是新口令,loginame是登录名称。
数据库课程设计实例
数据库课程设计
题目:小型超市管理系统
1、项目计划
1.1系统开发目的
(1)大大提高超市的运作效率;
(2)通过全面的信息采集和处理,辅助提高超市的决策水平;
(3)使用本系统,可以迅速提升超市的管理水平,为降低经营成本,提高效益,增强超市扩张力,提供有效的技术保障。
1.2背景说明
21世纪,超市的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。技术的提升和管理的升级是超市业的竞争核心。零售领域目前呈多元发展趋势,多种业态:超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市营业者努力追求的目标。
1.3项目确立
针对超市的特点,为了帮助超市解决现在面临的问题,提高小型超市的竞争力,我们将开发以下系统:前台POS销售系统、后台管理系统,其中这两个子系统又包含其它一些子功能。
1.4应用范围
本系统适应于各种小型的超市。
1.5定义
(1)商品条形码:每种商品具有唯一的条形码,对于某些价格一样的商品,可以使用自定义条形码。
(2)交易清单:包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号。
(3)商品积压:在一定时期内,远无法完成销售计划的商品会造成积压。
(4)促销:在一定时期内,某些商品会按低于原价的促销价格销售。
库存告警提示:当商品的库存数量低于库存报警数量时发出提示。
(5)盘点:计算出库存、销售额、盈利等经营指标。
1.6参考资料
《数据库原理及设计》陶宏才编清华大学出版社
《SQL Server 2000实用教程》范立南编清华大学出版社
《SQL Server 2000编程员指南》李香敏编北京希望电子出版社
《轻松搞定 SQL Server 2000程序设计》Rebecca M.Riordan编
《软件工程规范》Watts S.Humphrey编清华大学出版社
《软件工程理论与实践》 Shari Lawrence Pfleeger编清华大学出版社
《软件需求分析》 Swapna Kishore编机械工业出版社
《软件工程思想》林锐编
2、逻辑分析与详细分析
2.1系统功能
(1)、零售前台(POS)管理系统,本系统必须具有以下功能:
商品录入:根据超巿业务特点制定相关功能,可以通过输入唯一编号、扫描条形码、商品名称等来实现精确或模糊的商品扫描录入。该扫描录入方法可以充分保证各种电脑操作水平层次的人员均能准确快速地进行商品扫描录入。
收银业务:通过扫描条形码或者直接输入商品名称(对于同类多件商品采用一次录入加数量的方式)自动计算本次交易的总金额。在顾客付款后,自动计算找零,同时打印交易清单(包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号)。如果顾客是本店会员并持有本人会员卡,则在交易前先扫描会员卡,并对所购物品全部实行95折优惠,并将所购物品的总金额累计到该会员的总消费金额中。会员卡的有效期限为一年,满一年未续卡者,该会员卡将被注销。
安全性:OS登陆、退出、换班与操作锁定等权限验证保护;断电自动保护最大限度防止意外及恶意非法操作。
独立作业:有的断网收银即在网络服务器断开或网络不通的情况下,收银机仍能正常作业
(2)、后台管理系统,本系统必须具备以下功能
进货管理:根据销售情况及库存情况,自动制定进货计划(亦可手工制定修改),可以避免盲目进货造成商品积压。按计划单有选择性地进行自动入库登记。综合查询打印计划进货与入库记录及金额。
销售管理:商品正常销售、促销与限量、限期及禁止销售控制。综合查询各种销售明细记录、各地收银员收银记录以及交结账情况等。按多种方式统计生成销售排行榜,灵活察看和打印商品销售日、月、年报表。
库存管理:综合查询库存明细记录。库存状态自动告警提示。如库存过剩、少货、缺货等。软件为您预警,避免库存商品积压损失和缺货。库存自动盘点计算。
人员管理:员工、会员、供货商、厂商等基本信息登记管理。员工操作权限管理。客户销售权限管理。
(3)系统结构
系统总体结构
模块子系统结构
功能商品录入子系统要求能快速录入商品,因此必须支持条形码扫描。
功能收银业务子系统能计算交易总额,打印交易清单,并根据会员卡打折。
功能进货管理子系统可以根据库存自动指定进货计划,进货时自动等级,以及提供查询和打印计划进货与入库记录的功能。
功能销售管理子系统可以控制某商品是否允许销售,查询每种商品的销售情况并产生年、月、日报表,同时可以生成销售排行榜。
功能库存管理子系统提供查询库存明细记录的基本功能,并根据库存的状态报警,以及自动盘点计算。
功能人员管理子系统提供基本信息登记管理,员工操作权限管理,客户销售权限管理的功能。
2.2、流程图
前台管理系统
顶层DFD图
第0层DFD图
第1层DFD图
2.3、户类型与职能
(1)、员工(营业员):
通过商品条形码扫描输入商品到购买清单
操作软件计算交易总金额
操作软件输出交易清单
对会员进行会员卡扫描以便打折
(2)、:超市经理
操作软件录入商品,供货商,厂商
操作软件制定进货计划
查询打印计划进货与入库记录
操作软件控制商品销售与否
查询打印销售情况
操作软件生成销售排行榜
查询库存明细记录
根据软件发出的库存告警进行入货
操作软件进行盘点计算
(3)、总经理:
基本信息登记管理
员工操作权限管理
客户销售权限管理
2.4、统开发步骤
确定参与者和相关的用况
为每个用况设计过程
建立顺序图,确定每个脚本中对象的协作
创建类,确定脚本中的对象
设计,编码,测试,集成类
为过程编写系统测试案例
运行测试案例,检验系统
2.5、系统环境需求
系统模式
本系统采用C/S模式作为开发模式
硬件环境
服务器端:
高性能的计算机一台,
普通的双绞线作为连接。
客户端:普通的计算机或者工作站,
普通的双绞线作为连接。
软件环境
服务器端:安装SQL Server 2000的服务器版本,
安装windows 2000服务器版本,
配置了诺顿等必须的防毒软件。
客户端:安装SQL Server2000的服务器版本,
安装了VB等可视化开发工具软件,
安装windows2000服务器版本。
2.6、系统安全问题
信息系统尽管功能强大,技术先进,但由于受到自身体系结构,设计思路以及运行机制等限制,也隐含许多不安全因素。常见因素有:数据的输入,输出,存取与备份,源程序以及应用软件,数据库,操作系统等漏洞或缺陷,硬件,通信部分的漏洞,企业内部人员的因素,病毒,“黑客”等因素。因此,为使本系统能够真正安全,可靠,稳定地工作,必须考虑如下问题:为保证安全,不致使系统遭到意外事故的损害,系统因该能防止火,盗或其他形式的人为破坏。
系统要能重建
系统应该是可审查的
系统应能进行有效控制,抗干扰能力强
系统使用者的使用权限是可识别的
3、基于UML的建模
3.1语义规则
用例模型(use cases view)(用例视图)的基本组成部件是用例(use case)、角色(actor)和系统(system)。用例用于描述系统的功能,也就是从外部用户的角度观察,系统应支持哪些功能,帮助分析人员理解系统的行为,它是对系统功能的宏观描述,一个完整的系统中通常包含若干个用例,每个用例具体说明应完成的功能,代表系统的所有基本功能(集)。角色是与系统进行交互的外部实体,它可以是系统用户,也可以是其它系统或硬件设备,总之,凡是需要与系统交互的任何东西都可以称作角色。系统的边界线以内的区域(即用例的活动区域)则抽象表示系统能够实现的所有基本功能。在一个基本功能(集)已经实现的系统中,系统运转的大致过程是:外部角色先初始化用例,然后用例执行其所代表的功能,执行完后用例便给角色返回一些值,这个值可以是角色需要的来自系统中的任何东西。
UML:是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示;它不是一种可视化的程序设计语言而是一种可视化的建模语言;不是工具或知识库的规格说明而是一种建模语言规格说明是一种表示的标准;不是过程也不是方法但允许任何一种过程和方法使用它。
用例(use case):
参与者(actor):
3.2、UML模型
3.21、系统UML模型
3.22、子系统UML模型
(1)零售前台(POS)管理系统用例视图
(2)后台管理系统用例视图
3.3、系统实现图
4、超市销售系统概念设计文档
(1)、系统ER图
(2)、系统ER图说明
1)商店中的所有用户(员工)可以销售多种商品,每种商品可由不同用户(员工)销售;
2)每个顾客可以购买多种商品,不同商品可由不同顾客购买;
3)每个供货商可以供应多种不同商品,每种商品可由多个供应商供应。
(3)、视图设计
1)交易视图(v_Dealing)——用于查询交易情况的视图;
2)计划进货视图(v_PlanStock)——用于查询进货计划的视图;
3)销售视图(v_Sale)——用于查询销售明细记录的视图;
4)入库视图(v_Stock)——用于查询入库情况的视图。
5、逻辑设计文档
(1)、系统关系模型
a)商品信息表(商品编号,商品名称,价格,条形码,促销价格,促销起日期,促销止日期,允许打折,库存数量,库存报警数量,计划进货数,允许销售,厂商编号,供货商编号)
b)用户表(用户编号,用户名称,用户密码,用户类型)
c)会员表(会员编号,会员卡号,累积消费金额,注册日期)
d)销售表(销售编号,商品编号,销售数量,销售金额,销售日期)
e)交易表(交易编号,用户名称,交易金额,会员卡号,交易日期)
f)进货入库表(入库编号,入库商品编号,入库数量,单额,总额,入库日期,计划进货日期,入库状态)
g)供货商表(供货商编号,供货商名称,供货商地址,供货商电话)
h)厂商表(厂商编号,厂商名称,厂商地址,厂商电话)
(2)、系统数据库表结构
数据库表索引
表名中文名
MerchInfo商品信息表
User用户表
Menber会员表
Sale销售表
Dealing交易表
Stock进货入库表
Provide供货商表
Factory厂商表
商品信息表(MerchInfo)
字段名字段类型长度主/外键字段值约束对应中文名
MerchID int 4 P Not null商品编号
MerchName Varchar 50 Not null商品名称
MerchPrice Money 4 Not null价格
MerchNum Int 4 Not null库存数量
CautionNum Int 4 Not null库存报警数量
PlanNum Int 4 null计划进货数
BarCode Varchar 50 Not null条形码
SalesProPrice Money 4促销价格
SalesProDateS Datetime 8促销起日期
SalesProDateE Datetime 8促销止日期
AllowAbate Int 4 Not null允许打折
AllowSale Int 4 Not null允许销售
FactoryID Varchar 10 F Not null厂商编号
ProvideID Varchar 10 F Not null供货商编号
用户表(User)
字段名字段类型长度主/外键字段值约束对应中文名
UserID varchar 10 P Not null用户编号
UserName Varchar 25 Not null用户名称
UserPW Varchar 50 Not null用户密码
UserStyle Int 4 Not null用户类型
会员表(Menber)
字段名字段类型长度主/外键字段值约束对应中文名
MemberID Varchar 10 P Not null会员编号
MemberCard Varchar 20 Not null会员卡号
TotalCost Money 4 Not null累积消费金额
RegDate Datetime 8 Not null注册日期
销售表(Sale)
字段名字段类型长度主/外键字段值约束对应中文名
SaleID Varchar 10 P Not null销售编号
MerChID Varchar 10 F Not null商品编号
SaleDate Datetime 8 Not null销售日期
SaleNum Int 4 Not null销售数量
SalePrice Money 4 Not null销售单额
交易表(Dealing)
字段名字段类型长度主/外键字段值约束对应中文名
DealingID Varchar 10 P Not null交易编号
DealingPrice Money 4 Not null交易金额
DealingDate Money 4 Not null交易日期
MemberID Varchar 10会员卡号
UserName Varchar 10 F Not null用户名称
入库纪录表(Stock)
字段名字段类型长度主/外键字段值约束对应中文名
StockID Varchar 10 P Not null入库编号
MerchID Varchar 10 F Not null入库商品编号
MerchNum Int 4 Not null入库数量
MerchPrice Money 4 Not null单额
TotalPrice Money 4 Not null总额
StockDate Datetime 8 Datetime入库日期
PlanDate Datetime 8 Datetime计划进货日期
StockState Int 4 Not null入库状态
供货商表(Provide)
字段名字段类型长度主/外键字段值约束对应中文名
ProvideID varchar 10 P Not null供货商编号
ProvideName Varchar 50 Not null供货商名称
ProvideAddress Varchar 250供货商地址
ProvidePhone Varchar 25供货商电话
厂商表(Provide)
字段名字段类型长度主/外键字段值约束对应中文名
FactoryID varchar 10 P Not null厂商编号
FactoryName Varchar 50 Not null厂商名称
FactoryAddress Varchar 250厂商地址
FactoryPhone Varchar 25厂商电话
6、物理设计文档
/*----------创建数据库----------*/
create database SuperMarketdb
on primary
(
name=SuperMarketdb,
filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SuperMarketdb.mdf',
size=100MB,
maxsize=200MB,
filegrowth=20MB
)
log on
(
name=SuperMarketlog,
filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SuperMarketdb.ldf',
size=60MB,
maxsize=200MB,
filegrowth=20MB
)
go
/*----------创建基本表----------*/
use [SuperMarketdb]
go
/*创建交易表*/
CREATE TABLE Dealing(
DealingID int identity(1,1) Primary key,
DealingDate datetime NOT NULL,
DealingPrice money NOT NULL,
UserName varchar(25) NULL,
MemberCard varchar(20) NULL
)
GO
/*创建厂商表*/
CREATE TABLE Factory(
FactoryID varchar(10) Primary key,
FactoryName varchar(50) NOT NULL,
FactoryAddress varchar(250) NULL,
FactoryPhone varchar(50) NULL
)
GO
/*创建会员表*/
CREATE TABLE Member(
MemberID varchar(10) Primary key,
MemberCard varchar(20) NOT NULL,
TotalCost money NOT NULL,
RegDate datetime NOT NULL
)
GO
/*创建商品信息表*/
CREATE TABLE MerchInfo(
MerchID int identity(1,1) Primary key,
MerchName varchar(50) Unique NOT NULL,
MerchPrice money NOT NULL,
MerchNum int NOT NULL,
CautionNum int NOT NULL,
PlanNum int NOT NULL,
BarCode varchar(20) Unique NOT NULL,
SalesProPrice money NULL,
SalesProDateS datetime NULL,
SalesProDateE datetime NULL,
AllowAbate int NOT NULL,
AllowSale int NOT NULL,
FactoryID int NOT NULL,
ProvideID int NOT NULL
)
GO
/*创建供应商表*/
CREATE TABLE Provide(
ProvideID varchar(10) Primary key,
ProvideName varchar(50) NOT NULL,
ProvideAddress varchar(250) NULL,
ProvidePhone varchar(25) NULL
)
GO
/*创建销售表*/
CREATE TABLE Sale(
SaleID int identity(1,1) Primary key,
MerChID int NOT NULL,
SaleDate datetime NOT NULL,
SaleNum int NOT NULL,
SalePrice money NOT NULL
)
GO
/*创建入库表*/
CREATE TABLE Stock(
StockID int identity(1,1) Primary key,
MerchID int NOT NULL,
MerchNum int NOT NULL,
MerchPrice money NULL,
TotalPrice money NULL,
PlanDate datetime NULL,
StockDate datetime NULL,
StockState int NOT NULL
)
GO
/*创建用户表*/
CREATE TABLE User(
UserID varchar(10) Primary key,
UserName varchar(25) NOT NULL,
UserPW varchar(50) NOT NULL,
UserStyle int NOT NULL,
)
GO
/*----------创建表间约束----------*/
/*商品信息表中厂商编号、供应商编号分别与厂商表、供应商表之间的外键约束*/
ALTER TABLE MerchInfo ADD
CONSTRAINT [FK_MerchInfo_Factory] FOREIGN KEY
(
[FactoryID]
) REFERENCES Factory(
[FactoryID]
),
CONSTRAINT [FK_MerchInfo_Provide] FOREIGN KEY
(
[ProvideID]
) REFERENCES Provide(
[ProvideID]
)
GO
/*销售表中商品编号与商品信息表之间的外键约束*/
ALTER TABLE Sale ADD
CONSTRAINT [FK_Sale_MerchInfo] FOREIGN KEY
(
[MerChID]
) REFERENCES MerchInfo(
[MerchID]
) ON DELETE CASCADE
GO
/*入库表中商品编号与商品信息表之间的外键约束*/
ALTER TABLE Stock ADD
CONSTRAINT [FK_Stock_MerchInfo] FOREIGN KEY
(
[MerchID]
) REFERENCES MerchInfo(
[MerchID]
) ON DELETE CASCADE
GO
/*----------创建索引----------*/
/*在交易表上建立一个以交易编号、交易日期为索引项的非聚集索引*/
CREATE nonclustered INDEX IX_Dealing ON Dealing(DealingID, DealingDate)
GO
/*在商品信息表上建立一个以商品编号为索引项的非聚集索引*/
CREATE nonclustered INDEX IX_MerchInfo ON MerchInfo(MerchID)
GO
/*在销售表上建立一个以销售编号、销售日期为索引项的非聚集索引*/
CREATE nonclustered INDEX IX_Sale ON Sale(SaleID, SaleDate)
GO
/*在入库表上建立一个以入库编号、入库日期、商品编号为索引项的非聚集索引*/
CREATE nonclustered INDEX IX_Stock ON Stock(StockID, StockDate, MerchID)
GO
/*----------创建视图----------*/
/*创建用于查询交易情况的视图*/
CREATE VIEW v_Dealing
AS
SELECT DealingDate as交易日期,
UserName as员工名称,
MemberCard as会员卡号,
DealingPrice as交易金额
FROM Dealing
GO
/*创建用于查询进货计划的视图*/
CREATE VIEW v_PlanStock
AS
SELECT Stock.StockID as SID,
MerchInfo.MerchName as商品名称,
MerchInfo.BarCode as条形码,
Factory.FactoryName as厂商,
Provide.ProvideName as供货商,
Stock.MerchNum as计划进货数量,
Stock.PlanDate as计划进货日期
FROM Stock,MerchInfo,Provide,Factory
Where Stock.MerchID= MerchInfo.MerchID
and Provide.ProvideID=MerchInfo.ProvideID
and Factory.FactoryID=MerchInfo.FactoryID
and Stock.StockState=0
GO
/*创建用于查询销售明细记录的视图*/
CREATE VIEW v_Sale
AS
SELECT MerchInfo.MerchName as商品名称,
MerchInfo.BarCode as条形码,
MerchInfo.MerchPrice as商品价格,
Sale.SalePrice as销售价格,
Sale.SaleNum as销售数量,
Sale.SaleDate as销售日期
FROM Sale INNER JOIN
MerchInfo ON Sale.MerChID= MerchInfo.MerchID
GO
/*创建用于查询入库情况的视图*/
CREATE VIEW v_Stock
AS
SELECT MerchInfo.MerchName as商品名称,
MerchInfo.BarCode as条形码,
Factory.FactoryName as厂商,
Provide.ProvideName as供货商,
Stock.MerchPrice as入库价格,
Stock.MerchNum as入库数量,
Stock.TotalPrice as入库总额,
Stock.StockDate as入库日期
FROM Stock,MerchInfo,Provide,Factory
Where Stock.MerchID= MerchInfo.MerchID
and Provide.ProvideID=MerchInfo.ProvideID
and Factory.FactoryID=MerchInfo.FactoryID
and Stock.StockState=1
GO
7、小结
和传统管理模式相比较,使用本系统,毫无疑问会大大提高超市的运作效率,辅助提高超市的决策水平,管理水平,为降低经营成本,提高效益,减少差错,节省人力,减少顾客购物时间,增加客流量,提高顾客满意度,增强超市扩张能力,提供有效的技术保障。
由于开发者能力有限,加上时间仓促,本系统难免会出现一些不足之处,例如:
本系统只适合小型超市使用,不能适合中大型超市使用;
超市管理系统涉及范围宽,要解决的问题多,功能复杂,实现困难,但由于限于时间,本系统只能做出其中的一部分功能;
对于以上出现的问题,我们深表歉意,如发现还有其它问题,希望老师批评指正。
请采纳。
超市数据仓库设计
超市数据仓库设计
在当今的零售业中,数据对于企业的决策和竞争优势越发重要。而数据仓库正是扮演着数据分析和决策支持的关键角色。在超市行业中,设计一个高效的数据仓库,可以帮助企业更加精细化的管理和掌握市场,提高竞争力。
什么是超市数据仓库?
数据仓库是一个集成的、主题导向的、稳定的、综合的数据集合体,用于支持企业的决策活动。与操作性数据库不同,数据仓库聚焦于数据的分析库操作,以及决策支持的需求。在超市场景下,数据仓库装载的数据通常包括销售、会员、库存、采购等各个方面的数据源。
超市数据仓库的设计
超市数据仓库设计需要按照企业的需求和特点来制定。但是总体可以从下面几个维度考虑以确保数据仓库的效益。
1.数据源的连接
数据的来源和质量直接关系到数据仓库的分析结果。超市数据仓库的设计需要考虑到数据源的质量,以及连接方式。充分利用多个数据源增强数据分析的能力,缩短决策的响应时间。
2.数据库的设计
超市数据仓库所需的数据格外庞大,因此,在设计数据库时特别需要考虑到数据规模的扩大。可以采用分布式架构的方式来解决存储瓶颈问题,同时也要考虑数据备份和恢复措施。
3.数据仓库的结构设计
数据仓库的架构设计关系到各业务场景数据的查询和分析。为了保证数据仓库的查询效率和分析效果,需要考虑到数据仓库的选择、粒度、维度设计和聚合策略等方面。
4.数据统计运算
为了减轻数据仓库的查询压力,并减少查询的时间,需要在数据运算过程中考虑将一些数据事先进行聚合,建立一些摘要表以缩短查询时间。同时,数据仓库的统计原则应基于实际情况进行选择,达到最小化数据错误的目的。
超市数据仓库实现面临的挑战
超市数据仓库的实现也会面临各种挑战。以下是几个典型挑战:
1.数据的复杂性
超市数据来源众多、种类繁多,因此实现数据仓库设计的同时需要有较为丰富的技术水平,方可完成数据的整理、数据的清洗、数据的同步等工作。
2.具备专业的技能
超市数据仓库实现过程中需要具备较为专业的技能,具备数据架构设计开发、数据挖掘和统计分析等能力。
3.数据安全与保密
超市数据涉及到许多敏感数据,因此实现过程中需要一套安全可靠的系统来保密和保障数据安全,否则将会给企业带来重大损失。
超市数据仓库设计可以为企业带来极大便利,但也是一项长期的工程。需要企业根据实际的需求,提出相关要求并根据实际情况进行设计的。同时,每个企业都应该充分考虑其具体应用与业务场景,灵活采用各种技术手段实现尽可能高的数据价值。
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!