1、数据库原理课程设计课程设计 数据库系统原理课程设计报告学生姓名: 系 别: 班 级: 专 业: 指导教师: 2011 年 11 月 15 日1 引言 问题描述随着市场竞争的不断加剧,作为中小企业也迫切需要规范管理。然而目前中小型企业在具体的业务流程处理过程中仍然使用手工操作的方式来实施,由于商品繁多、业务零杂,各类采购、销售单据数量非常多,人工处理比较困难,并且准确性难以确保。所以这种现状不仅费时、费力、效率低下,而且无法达到理想的效果。 因此,中小企业实施规范管理势在必行,如何实现内部流程管理和外部市场竞争的管理,无疑是企业经营最核心的问题。建立一个有效的商务进销存管理系统,可以使企业拥有比
2、竞争对手更严谨的业务管理和控制,可以比竞争对手更快速地获得效益。开发环境和运行环境企业进销存管理系统运用了当前流行的SQL SERVER2005、C#、VS2010等运行和开发的。1库、基本表的建立和修改:在SQL-SERVER环境下用CREATE TABLE 建立库以及库中基本表。2数据加载: 用手工录入或导入等方法实现基本表中的数据加载。3单表查询以及多表查询:在建立的基本表中使用select基本格式和聚集函数;设计合适的视图,实现多表间查询。4触发器:设计触发器,可实现表间关联字段修改时的完整性等问题。5存储器:设计存储过程,并用语句调用。6用SQL SERVER 2005/2008、C
3、#、VisualStudio2010等开发环境设计、实现系统主要功能。2 需求分析系统功能基本的要求试设计一个企业进销存管理系统,便于企业对产品进行进销业务流程规划化管理。企业对系统实现的要求要求实现的主要模块:(1)用户管理 (2)数据库维护 (3)产品入库管理 (4)产品出库管理 (5)库存管理 (6)维修管理 (7)个人信息 (8)基础数据维护。1.信息要求:信息的录入是通过产品入库登记,基础数据维护添加新的产品,出库时输入销售记录等过程进行数据信息的录入与查询。 2.处理要求:建立一个有效的商务进销存管理系统,以解决商品繁多、业务零杂,各类采购、销售单据数量非常多,人工处理困难,准确性
4、难以确保等众多问题。3.安全性与完整性要求:(1)安全性要求 a.系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;b.系统实现:数据备份、数据恢复,以防止重大失误、或是系统故障引起的损失; (2)完整性要求a.各种信息记录的完整性,信息记录内容不能为空;b.各种数据间相互的联系的正确性;c.相同的数据在不同记录中的一致性。系统功能的设计系统实现(1)用户管理 (2)数据库维护 (3)产品入库管理 (4)产品出库管理 (5)库存管理 (6)维修管理 (7)个人信息 (8)基础数据维护。数据流图 数据字典部分重要表:表名:UserInfo序号列名数据类型长度小数位标
5、识主键允许空默认值说明备注1UserIDvarchar166是是否用户名登陆用2Namevarchar84否姓名真实姓名3Pwdvarchar 2000否密码4Powervarchar80否权限固定位是1有权限,0无此权限 表名:Storage序号列名数据类型长度小数位标识主键允许空默认值说明备注1ListIDvarchar50是是否Lis唯一标志2NumberInt 否0 表名:Computer序号列名数据类型长度小数位标识主键允许空默认值说明备注1ListIDvarchar50是是否唯一标志2LotNumvarchar3是否否批次号3BrandVarchar50否品牌4CPUVarchar
6、50否5Memoryvarchar50否6VideoCardVarchar50否显卡7HardDiskVarchar50否8MainBoardVarchar50否主板9RwDriveVarchar50否光驱10RemarkVarchar50否备注11ScreenVarchar50是 12UnitVarchar20否单位13IsDeleteBit否False逻辑删除批次号True未删除表名:AroundDevice序号列名数据类型长度小数位标识主键允许空默认值说明备注1ListIDvarchar50是是否唯一标志2Type1varchar50否Type1类型或名称3Type2varchar50是
7、Type2类型或名称4Type3varchar50是Type3类型或名称 5ProductName50否产品名称6UnitVarchar 20否单位7IsDeleteBit逻辑删除 表名:PurchaseOrder序号列名数据类型长度小数位标识主键允许空默认值说明备注1PurchaseNumvarchar20否采购单编号2Suppliervarchar50供货商3ListIDvarchar50 否产品唯一标志4UserNamevarchar经办人5PriceMoney否单价6NumberInt否产品数量7 DateDatetimes否8IsBillingBit否False是否开票9IsTaxB
8、it否False是否含税10RemarkVarchar50是备注11IsReturnInt否0 区分标志0.采购单1退单,2退库存 销售单:SaleOrder序号列名数据类型长度小数位标识主键允许空默认值说明备注1SaleNumvarchar20否销售单编号2ListIDVarchar50否唯一标志ProNameVarchar50否产品名称3UserNamevarchar8否经办人4SaleManVarchar8否业务员4 CostMoney是销售成本5SalePriceMoney否售价6SaleNumberInt否1产品数量7 DateDatetime否8ClientVarchar50 否客
9、户9InMarkVarchar20是内部票号10RemarkVarchar50是备注11ScreenVarchar50是11IsReturnBit否False是否退单 税票:Ticket序号列名数据类型长度小数位标识主键允许空默认值说明备注1InMarkVarchar20否内部票号都放在一起2TicketNumvarchar50 否外部票号3OfficeVarchar50否开票单位4ContentVarchar50否内容5AmountMoney否每种产品金额6TaxAmountMoney否税收金额7TotalMoney否总金额 3 概念设计设计分e-r图 由于表格过多只列举部分表格设计E-R图
10、如下:职员E-R图 周边设备E-R 销售单E-R图 分E-R图 分E-R图设计完成的总e-r图 4 逻辑结构设计图向关系模式的转换部分关系模式如下:1、职员(职员ID,名字,密码,权限)2、销售单(销售单ID,产品数量,经办人,业务员,是否开票,内部票号,销售日期,客户,销售成品,销售单编号,备注,是否退单,售价)3、产品(产品ID,产品名称,单位,一级分类,二级分类,三级分类,批次号,品牌,类型,CPU,内存 ,显卡显示器大小,是否删除等) 4、库存(产品ID,库存数量)数据模型的优化在概念设计的基础上,根据设计得到系统总的E-R图,按照概念模式与关系表转化的一般规则,结合实际的需要进行逻辑
11、设计,ER图中的实体、实体的属性和实体之间的联系转化为关系模式。最后生成的部分关系及关系表如下(同时附优化说明):1、电脑(产品ID,批次号,品牌,型号,CPU,内存,显卡,硬盘,主板,显示器大小,光驱,是否是笔记本,是否删除)2、单独显示器(产品ID,品牌,大小,是否删除)3、周边设备(产品ID,产品名称,单位,一级分类,二级分类,三级分类,是否删除)优化说明:原来是所有产品对象放在一起,由于这些不同的产品属性差别太大,放在一起造成很大的数据冗余,而且易出错,所以把他们分为三大类,如上面,这样就解决了很多问题。 用户子模式的设计在将概念模型转化为全局逻辑模型后,根据用户对进销存管理系统的局部
12、应用需求,以下设计用户子模式: 考虑需求考虑以下的几个需求:1管理员有可能是业务员或是经办人2可随时对任意产品进行开票的需求 定义用户级别对用户职员的权限限制:1用户职工:用户登录系统,系统会判断其权限,他只能操作在他权限范围内的事务。 制作查询子系统:根据分析需求,我们设计了一个开票管理系统提供对销售产品的开票,查询税收相关情况。5 数据实施和维护建立数据库Create database SaleManage;建表要求:至少5张表1.建用户表CREATE TABLE UserInfo (UserID VARCHAR(16) primary key NOT NULL,NAME VARCHAR(
13、8) NOT NULL,Pwd varchar (200) NOT NULL,Power varchar(8) NOT NULL,);2.建维修表单CREATE TABLE RepairList (listID VARCHAR(50) PRIMARY KEY, RepairNum VARCHAR(20), Client VARCHAR(50), FaultPart VARCHAR(50), FaultNum VARCHAR(20), FaultReason VARCHAR(50), RepairDate datetime, ReCompany VARCHAR(50), IsFinish Bit
14、, FinishDate DATEtime, RepairCost Money, Charge Money);3.建库存CREATE TABLE Storage (ListID VARCHAR(50) PRIMARY KEY, Number INT);4.建销售单CREATE TABLE SaleOrder (ID uniqueidentifier not null,SaleNum varchar(20) NOT NULL,ListID varchar(50) NOT NULL,ProName varchar(50) NOT NULL,UserName varchar(8) NOT NULL,
15、SaleMan varchar(8) NOT NULL,Cost Money NULL,SalePrice Money NOT NULL,SaleNumber Int NOT NULL,Date Datetime NOT NULL, Client varchar(50) NOT NULL,InMark varchar(20) NULL,Remark varchar(50) NULL,Screen varchar(50) NULL,IsReturn Bit NOT NULL,)5.建税票表CREATE TABLE Ticket (InMark VARCHAR(20), TicketNum VAR
16、CHAR(50), Office VARCHAR(50), Content VARCHAR(50), Amount Money, TaxAmount Money, Total Money); 建查询要求:5个查询以上 1、查询指定日期的所有的销售单2、查询指定日期的所有的销售单3、查询指定日期的所有的销售单4、查询指定日期的所有的销售单5、查询指定日期的所有的销售单select as saID, as 销售单编号, as 选择, as 产品名称,isnull,)+isnull( +,)+isnull,)+isnull( 批次:+,)+isnull( CPU:+,) +isnull( 显卡:+,
17、)+isnull( 显示器:+,)+ isnull( 显示器品牌:+,)+isnull( 大小:+,) as 产品详细信息, as 售价, as 数量,isnull,)*isnull( ,) as 金额, as 是否开票, as 业务员, as 客户, as 经办人, as 销售日期, as 开销, as 备注 from SaleOrder as Sa left join AroundDevice as Ar on = left join Computer as Com on = left join Screen as Sc on = where Date BETWEEN 2011/12/14
18、 AND 2011/12/14 and = false order by desc 建存储过程要求:三个以上1.业务员的显示,如果是管理员,则显示为公司(不带参数)create proc pro_UserShowasselect case when power=1111111then 公司 else Name END Name from UserInfo exec pro_UserShow 2.根据所选产品查看它最近三次售价(带参数)create procedure pro_RecentPrice ListID varchar(30),SellID varchar(20)ASselect to
19、p 3 SalePrice from SaleOrder where ListID=ListID and SaleNum!=SellID order by SaleNum desc 两种调用示例:exec pro_RecentPrice B2011/12/14 12:46:573,S20exec pro_RecentPrice ListID=B2011/12/14 12:46:573,SellID=S203.查询库存(带输出参数):CREATE PROC pro_StoNumber ListID varchar(30), Number int outputASSELECT Number=Num
20、berfrom Storagewhere ListID=ListID调用示例:declare ListID varchar(30),Number intselect ListID=B2011/12/14 12:46:573 EXEC pro_StoNumber ListID , Number OUTPUT SELECT Number建触发器要求:INSERT,UPDATE,DELETE三种触发器任选插入销售单数据时,同时库存减去销售数量create trigger Tr_SaleOrder on SaleOrder for insert AS DECLARE outNumber int, Li
21、stID varchar(30) SELECT outNumber=SaleNumber, ListID=ListID FROM inserted UPDATE Storage SET Number= Number -outNumber WHERE ListID=ListID GO 示例:insert into SaleOrder (ID,SaleNum,ListID,ProName,SalePrice,SaleNumber,IsBilling,InMark,SaleMan,Client,UserName,Cost,Date,Remark) values(12e1c6b1-999b-41ee-
22、a385-edec847dde4e,S20,B2011/12/14 12:46:573,ProBook 4321s,4600,1,True,001,公司,上海直销商,dahu,2011/12/14,)6总结据库有保持数据的独立性,所谓数据独立,是指存储在数据库中的数据独立于处理数据的所有应用程序而存在。也就是说,数据是客观实体的符号化标识,它就是一个客观存在,不会因为某一项应用的需要而改变它的结构,因此是独立于应用而存在着的客观实体。而某一项应用是处理数据获取信息的过程,也就是应用程序,它只能根据客观存在着的数据来设计所需要的数据处理方法,而不会去改变客观存在着的数据本身数据库的传统定义是以一
23、定的组织方式存储的一组相关数据的集合,主要表现为数据表的集合。语句按其功能可以分为如下3大类(1)数据定义语句 DDL ( Data Definition Language)(2)数据操作语句 DML (Data Manipulation Language);(3)数据控制语句 DCL (Data Control Language)。2.学习心得我做的是住房公积金测算系统,刚刚拿到题目完全不知道从那下手,应该是第一次做的原因吧!以前只知道上课听老师讲从来没做过,数据库我认为和生活或者以后的生活没什么联系,所以我平时也就随便听听,但题目一手就知道那是自己一个人的事了,应为题目几乎两三个人一题,就算是两三个人一题也得写的不同,所以刚开始两天我都没怎么做,为了看书上的内容。 参考文献数据库系统概论/王珊 萨师煊 主编高等教育出版社,第四版数据库实用教程/郑阿奇主编.北京:电子工业出版社,高等学校计算机教材
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1