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