小型超市后面管理系统数据库设计模块Word文档下载推荐.docx

上传人:b****7 文档编号:22173690 上传时间:2023-02-02 格式:DOCX 页数:18 大小:77.02KB
下载 相关 举报
小型超市后面管理系统数据库设计模块Word文档下载推荐.docx_第1页
第1页 / 共18页
小型超市后面管理系统数据库设计模块Word文档下载推荐.docx_第2页
第2页 / 共18页
小型超市后面管理系统数据库设计模块Word文档下载推荐.docx_第3页
第3页 / 共18页
小型超市后面管理系统数据库设计模块Word文档下载推荐.docx_第4页
第4页 / 共18页
小型超市后面管理系统数据库设计模块Word文档下载推荐.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

小型超市后面管理系统数据库设计模块Word文档下载推荐.docx

《小型超市后面管理系统数据库设计模块Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《小型超市后面管理系统数据库设计模块Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。

小型超市后面管理系统数据库设计模块Word文档下载推荐.docx

c.处理器芯片为:

AMDSempron2500+,内存为:

80GB

B软件支持

本软件将在以下环境下编写完成:

操作系统:

WindowsXPprofessional

编程软件:

MicrosoftVisualBasic6.0中文版

SQL服务器:

Microsoft®

SQLServer™2000

数据库查询器:

SQL查询分析器

2.2运行环境

Windows98以上系统

测试系统:

WindowsXPSp2

3.接口设计

3.2外部接口

本系统设有人机操作界面,考虑到操作简单,易于管理方面,主要硬件接口设备为PC,鼠标,键盘。

而软件接口主要以Windows平台为基本平台。

系统业务逻辑的独步一时几乎完全封闭在数据存储层实现,中间组件层主要通过调用远程数据库存储过程或用户自定交函数的方式来实现对数据库的访问。

数据库设计时,在sql server2000大型数据库提供的技术下,充分利用约束,视图,存储过程,用户自定义函数及触发器等技术约束业务规则、维护数据完整性和唯一性,并实现市郊的数据存储与访问。

3.3内部接口

程序利用VB下的构造ADO的连接对象的ConnectionString的配置,各cls模块之间相互独立又彼此关联,主要通过函数调用实现各部分的连接。

4.系统数据结构设计

4.1逻辑结构设计要点

针对一般小型超市后台信息管理系统的需求,通过对商品进出过程的内容和数据流程分析,设计如下面所示的数据项和数据结构,各模块标示符说明如下:

 

系统数据库表结构

数据库表索引

表名

中文名

Userifo

系统用户表

Supplier

供货商信息表

GoodsType

商品类型表

Goods

商品信息表

Buy

进货表

Sale

销售表

Spoilage

损坏商品表

自定义数据类型(custem)

字段名

数据类型

长度

主/外键

字段值约束

对应中文名

gcxCaption

Varchar

100

Notnull

实体名称

gxcID

Int

4

P

实体号

gxcMoney

Smallmoney

进货\销售金额

gxcRemark

1000

Null

备注说明

gxcTrueName

10

真实姓名

商品信息表(Goods)

GoodsID

商品号码

GoodsName

gxcCaption

商品名称

Amount

Decimal1

9

库存数量

UnitName

单位名称

TypeID

商品类型号

SupplierID

商品供货商号

Introduce

商品介绍

Remark

备注

用户表(UserInfo)

字段类型

UserID

gcxID

用户号

UserName

用户名称

Password

用户密码

TrueName

LastLoginTime

Datetime

8

最近登录时间

UserType

Bit

1

NotNull

用户类型

销售表(Sale)

SaleID

销售号

F

商品号

Decimal

销售数量

UnitPrice

单价

registrarID

录入人员号

regDate

登记时间

进货信息表(Buy)

BuyID

进货编号

商品编号

数量

进货单价

Deliverer

送货员

Transactor

办理员

RegistrarID

Regdate

损坏商品表(Spoilage)

SpoilageID

损坏事件号

Amout

Reportor

报损人

Reason

null

损坏原因

datetime

供货商表(Supplier)

供货商编号

SupplierName

供货商名称

Contact

联系方式

简要介绍

Remakr

4.2关系图约束设计

数据库关系图如下:

4.3.物理结构设计

系统的存储物理结构由数据库来生成。

以下为几个例子

查看存在ID字段不为某个值但某个字符型字段等于某个值

/*查看某个数据表中*/

CREATEPROCdbo.ExistNameWithoutID

@strTableNamevarchar(255),--表名

@strIDNamevarchar(255),--ID字段名

@intIDValueint,--ID字段值

@strFieldNamevarchar(255),--字符型字段名

@strFieldValuevarchar(50),--字符型字段值

@bitResultbitOUTPUT--输出值,0为不存在,1为存在

AS

SETNOCOUNTON

DECLARE@strSQLvarchar(3000)--主语句

DECLARE@nCountint--返回记录行数

/*创建存储符合条件的记录数的临时表*/

IFOBJECT_ID('

dbo.#tmpTable'

)ISNULL

CREATETABLE#tmpTable(tmpFieldint)--创建临时表

ELSE

TRUNCATETABLE#tmpTable--清空临时表

/*在数据库表中检索符合条件的记录数并存储在临时表中*/

SELECT@strSQL='

SELECTCOUNT(['

+@strFieldName+'

])FROM['

+@strTableName+'

]WHERE['

]='

'

+@strFieldValue+'

+'

AND'

+@strIDName+'

<

>

'

+CONVERT(varchar(50),@intIDValue)

SELECT@strSQl='

INSERT#tmpTable'

+@strSQL

EXEC(@strSQL)

/*在临时表中返回存储的记录数*/

SELECTTOP1@nCount=tmpFieldFROM#tmpTableORDERBYtmpField

/*删除临时表*/

DROPTABLE#tmpTable

/*输出参数*/

IF@nCount>

0

SELECT@bitResult=1

SELECT@bitResult=0

GO

SETQUOTED_IDENTIFIEROFF

SETANSI_NULLSON

SETQUOTED_IDENTIFIERON

添加一条商品信息

/*添加一条商品信息,输出商品编号和执行结果*/

CREATEPROCdbo.GoodsAddNew

@GoodsNamevarchar(100),--商品名称

@Amountdecimal(18,2),--库存数量

@TypeIDint,--类型编号

@UnitNamevarchar(100),--单位

@SupplierIDint,--供货商编号

@Introducevarchar(1000),--商品介绍

@Remarkvarchar(1000),--备注

@IDintOUTPUT,--商品编号

@ReturnValueintOUTPUT--执行结果(VB组件的自定义枚举值)

DECLARE@ErrNoint--保存错误号

BEGINTRANSACTION--开始事务

/*手动维护数据唯一性的代码。

*/

DECLARE@ExistNamebit

EXECExistByName'

Goods'

'

GoodsName'

@GoodsName,@ExistNameOUTPUT

IF@ExistName=1--当前商品名称已存在

BEGIN

ROLLBACKTRANSACTION--回滚事务

SELECT@ReturnValue=3--返回VB组件的自定义枚举值

RETURN--结束存储过程

END

/*添加记录*/

INSERTINTOGoodsValues(@GoodsName,@Amount,@UnitName,@TypeID,@SupplierID,@Introduce,@Remark)

--记录当前的错误号

SELECT@ErrNo=@@ERROR

IF@ErrNo=0--没有发生错误

SELECT@ID=(SELECTMAX(GoodsID)FROMGoods)

SELECT@ReturnValue=0

ELSEIF@ErrNo=2627--违反唯一约束

ROLLBACKTRANSACTION--遇到错误则回滚事务

SELECT@ReturnValue=3

RETURN

ELSE--其他未知错误

SELECT@ReturnValue=1

COMMITTRANSACTION--提交事务

删除一条商品信息

/*删除一条商品信息,输出执行结果*/

CREATEPROCdbo.GoodsDelete

@GoodsIDint,--商品编号

/*验证是否存在当前商品编号,若否则不能删除*/

DECLARE@ExistIDbit

EXECExistByID'

GoodsID'

@GoodsID,@ExistIDOUTPUT

IF@ExistID=0--当前商品编号不存在

SELECT@ReturnValue=2--返回VB组件的自定义枚举值

/*手动维护数据完整性的代码*/

Buy'

BuyID'

IF@ExistID=1

ROLLBACKTRANSACTION

/*验证销售信息是否包含当前商品,若是则不能删除*/

Sale'

SaleID'

IF@ExistID=1

SELECT@ReturnValue=3

/*删除记录*/

DELETEFROMGoodsWHEREGoodsID=@GoodsID

ELSEIF@ErrNo=547--发生外键冲突

返回所有供货商

CREATEVIEWdbo.view_Supplier

/*返回所有供货商*/

SELECTSupplierID,SupplierName,Contact,Introduce,RemarkFROMSupplier

CREATEVIEWdbo.view_Buy

AS

SELECTB.BuyID,B.GoodsID,G.GoodsName,

B.UnitPrice,B.Amount,G.UnitName,

B.UnitPrice*B.AmountASTotalPrice,

B.Deliverer,B.Transactor,B.RegistrarID,

B.RegDate,G.TypeID,G.SupplierID,B.Remark

FROMBuyASBLEFTOUTERJOINGoodsASG

ONB.GoodsID=G.GoodsID

5.运行测试

5.1.运行模块的组合

具体软件的运行模块组合为程序多窗口的运行环境,各个模块在软件运行过程中能较好的交换信息,并能够独立的处理各自的数据。

5.2.测试及问题提出

软件运行时有较友好的界面,基本能够实现用户的数据处理要求。

问题1:

无法进入数据库

问题2:

字段名称与SQL关键字冲突

添加字符型数据的时候,如果该数据饮食了单引号,则会造成字符的意外截断而产生错误。

问题3:

个别触发器无作用

在Buy表上的delete触发器中,不能完成删除商品信息的时候同步更新商品库存的功能。

5.3.问题解决

系统的运行时间基本可以达到用户所提出的要求。

问题解决如下

解决问题1:

设置服务器名称,数据库名称,登录名(此时假设密码为空)

PublicFunctionConnectToDatabase()AsBoolean

OnErrorGoToErrHandler

Setg_Conn=NewConnection

DimServerNameAsString,DBNameAsString,UserNameAsString,strPasswordAsString

连接SqlServer的连接字符串设置

ServerName="

(local)"

DBName="

BuySaleStorage"

UserName="

sa"

strPassword="

"

连接到SQLServer数据库

根据DB文件夹中的内容,创建数据库,推荐用MDF文件附加数据库;

\DB\MDF\BuySaleStorage_Data.MDF

\DB\MDF\BuySaleStorage_LOG.LDF

连接参数:

数据库名:

BuySaleStorage

登录名:

sa

密码:

解决问题2:

当添加字符型数据的时候,如果该数据饮食了单引号,则会造成字符的意外截断而产生错误。

解决方法是把字符数据中的单引号替换为两个单引号,使用了RealString函数来过滤单引号。

按照意义对字段命名,很可能使字段名称与SQL的关键字冲突而产生错误,比如名称为User的字段。

解决方法是给字段名称加上中括号“[]”,使字段名称为“[User]”。

解决问题3:

在SQLServer事务中的操作是作为一个整体来执行的。

如果手工约束业务规则和强制数据完整性,心谤腹非把相应的代码与核心操作代码放在一个事务中,这样的才能保持数据的完整性。

对触发器而言,由于它和激活触发器的语句一起被作为单一的事务来对待,所以即使没有显式地BeginTransaction语句,在触发器的定义中也可以RollBackTransaction语句。

6.小结

由于系统较小没有外加维护模块,因为维护工作比较简单,仅靠数据库的一些基本维护措施即可。

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

当前位置:首页 > 经管营销 > 人力资源管理

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

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