《销售订单数据库管理系统设计课程论文.doc》由会员分享,可在线阅读,更多相关《销售订单数据库管理系统设计课程论文.doc(24页珍藏版)》请在三一办公上搜索。
1、课程设计说明书题目销售订单数据库管理系统系(部)计算机系专业(班级)软件5班姓名学号指导教师起止日期2013.05.272013.06.08课程设计任务书课程名称:数据库系统原理课程设计设计题目:销售订单数据库管理系统题目:销售订单数据库管理系统1、某销售商的订单系统需要如下信息:每个供应商包含供应商编号、名称、地址、联系电话等信息。每种产品包含产品号、产品名称、产品类别等信息。每个供应商可供应多种产品,每种产品可由多个供应商供应。客户包含编号、姓名、通信地址、电话等信息。雇员包括编号、姓名、联系电话等信息。订单包括订单号等信息。一个客户可下多个订单,每个订单只能由一个客户下。一个雇员可管理多
2、个订单,每个订单只能由一个雇员管理。一个订单订购多种产品,每种产品可在不同的订单中订购2、系统功能基本要求:按照一定条件查询、统计订单信息,例如订单量最多的客户或者产品。能够模拟完成一个订单交易全过程。各阶段具体要求:1、需求分析阶段l 定义数据项的含义和取值l 定义目标系统的数据流2、概念结构设计阶段l 画出实体模型E-R图3、逻辑结构设计阶段l 将实体模型转化为关系模型l 给出每个关系的主关键字和函数依赖集l 分析你所设计的关系数据库模式是否属于3NF4、物理设计阶段l 确定所有字段的名称、类型、宽度、小数位数及完整性约束 l 确定数据库及表的名称及其组成 l 确定索引文件和索引关键字5、
3、数据库安全及维护设计阶段l 设计一个适合的数据库安全策略(用户身份认证、访问权限、视图)l 为了实现复杂的数据完整性约束,设计适当的触发器l 设计一个适合的数据库备份策略6、实施阶段l 要求所有操作必须在查询分析器中用SQL语句或系统存储过程完成。设计工作量:(1)软件设计:完成问题陈述中所提到的所有需求功能。(2)论文:要求撰写不少于3000个文字的文档,详细说明各阶段具体要求。工作计划:安排两周时间进行课程设计,软件开发步骤如下,第一周完成14,第二周完成58,论文同步进行;1)选定题目2)需求分析3)概念结构设计4)逻辑结构设计5)物理设计6)数据库安全及维护设计7)数据库上机实现8)答
4、辩班级日期节次地点内容指导老师11软件5班15周周四9-12节致远楼1201布置任务、上机调试曾俊勇15周周五9-12节致远楼1201上机调试15周周六9-12节致远楼1201上机调试16周周一9-12节致远楼1401上机调试16周周二9-12节致远楼1401上机调试16周周三9-12节致远楼1401上机调试16周周四9-12节致远楼1201上机调试16周周五9-12节致远楼1201上机调试16周周六5-8节致远楼1404上机调试16周周六9-12节致远楼1201答辩注意事项n 提交文档 长沙学院课程设计任务书(每学生1份) 长沙学院课程设计论文(每学生1份) 长沙学院课程设计鉴定表(每学生1
5、份)指导教师签名: 日期: 教研室主任签名: 日期:系主任签名: 日期:长沙学院课程设计鉴定表姓名学号专业软件工程班级设计题目销售订单数据库管理系统指导教师指导教师意见:评定等级: 教师签名: 日期: 答辩小组意见:评定等级:答辩小组长签名:日期:教研室意见:教研室主任签名: 日期: 系(部)意见:系主任签名:日期:说明课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;目 录一、引言61.1编写目的61.2参考资料6二 需求规约72.1 业务描述72.2 需求分析7三、数据库环境说明8四、数据库的命名规则94.1 数据库对象命名规则94.2 数据项编码规则9五、逻辑设计105.1 E
6、R图105.2 关系模型11六、物理设计126.1表汇总126.2 表1: Order_table表( 订单表)126.3 表2: accommdate _relation表( 供应关系表)136.4 表3: send_for表( 订购表)136.5 表4: Supplier表( 供应商表)146.6 表5: Product表( 产品表)146.7 表6: Employee表( 雇员表)156.8 表7: Client表( 客户表)156.9视图的设计166.10存储过程、查询及触发器的设计16七、安全性设计207.1防止用户直接操作数据库的方法207.2 用户帐号密码的加密方法207.3 角
7、色与权限20八、数据库管理与维护说明20九、测试219.1 查询订单数最多的客户的姓名219.2 插入产品订购信息219.3 触发器测试22十、小结24一、引言1.1 编写目的此次课程设计是销售订单数据库管理系统。主要是用数据库语言完成按照一定条件查询、统计订单信息,例如订单量最多的客户或者产品。能够模拟完成一个订单交易全过程。还有模仿现实中的销售订单管理和产品存储的一系列过程。销售订单数据库管理系统设计编写数据库设计文档的目的是:明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发。本文档的读者对象是需求人员、系统设计人员、开发人员、测试人员。设计该数据库的目的是为了能够模拟完
8、成一次订单销售流程。为了在未来学生能够更好的适应社会的软件应用和在学校时学习数据库语言的更好巩固,也是想要了解学生在校学习数据库的程度。为了更好的对学生学习和在未来的发展。1.2 参考资料资料名称作者文件编号、版本数据库系统概论王珊、萨师煊2006年5月第4版数据库设计入门经典鲍威尔2007年3月第1版数据库原理克罗恩科2005年6月第1版二 需求规约2.1 业务描述销售订单数据库管理系统设计需求要满足客户在下订单完成交易全过程,有客户下订单、退订单、插入新的客户、增加新产品和供应商等,还有对产品客户雇员等变动的保存,还有一些对产品、供应商和雇员的某些查询如:查询姓名为“张斌”客户的订单的产品
9、名称。按照一定条件查询、统计订单信息,例如订单量最多的客户或者产品。能够模拟完成一个订单交易全过程。客户在下订单后,能够判断产品库存是否足够,足够则订单成功,库存减少否则显示订单不成功,供应商提供产品。2.2 需求分析销售订单数据库管理系统:(1)能够完成插入产品,供应记录,订购记录等等这些信息;(2)能够模拟完成一次订单销售的过程,此外,在一个完整的订单销售流程中,本数据库系统还提供查询某供应商供应的产品信息,询某产品信息,查询某客户信息,查询某订单订购的产品的信息;(3)对于客户而言,还提供了查询订单最多的客户的功能。总的来说,本数据库系统能够达到模拟完成一次订单销售流程的要求。在本销售订
10、单数据库管理系统中,有一些限制性条件,比如一个客户可以下多个订单,但一个订单只能由一个客户下,一个订单可以订购多种产品,每种产品可被不同订单订购等等,这些限制条件的加入能够使本数据库管理系统的功能更加完善,能够满足更高的要求。三、 数据库环境说明完成销售订单数据库管理系统的课程设计需要的数据库环境有以下说明:表3.1 数据库实例数据库系统数据库部署环境数据库设计工具数据库存放位置说明销售订单数据库管理系统Sql Server 2008Windows XPSql Server存放位置,绝对路径/相对路径D:Program完整的销售流程表3.2数据库实例数据库系统数据库部署环境数据库设计工具数据库
11、存放位置说明销售订单数据库管理系统Sql Server 2008Windows XPSql Server存放位置,绝对路径/相对路径D:Program查询订单最多的客户、查询价格最高的产品四、 数据库的命名规则4.1 数据库对象命名规则数据库对象命名规则备注表S功能描述字符串例如:Order_table订单表视图view_功能描述字符串例如:view_Product产品视图触发器insert_功能描述字符串例如:insert_PO更改库存触发器存储过程Procedure_功能描述字符串例如:pro_insertSuppliers存储过程 4.2 数据项编码规则数据项命名规则数据类型长度范围备注
12、供应商编号自动增长定长整型6位无产品号自动增长定长整型6位无订单号自动增长定长整型6位无雇员号自动增长定长整型6位无客户号自动增长定长整型6位无五、 逻辑设计5.1 ER图雇 员供应商产 品客 户户订 单订购下订单管理供应雇员编号商编号姓名联系电话号地址姓名通信地址号客户编号号联系电话号产品名称产品类别号售价产品编号号库存雇员编号订单编号号客户编号号待添加的隐藏文字内容1日期订单编号号数量工资产品编号号产品编号号出厂价号联系电话供应商编号号名称供应商编号号地址总量图5.1 销售订单系统的ER图5.2 关系模型供应商(供应商编号,名称,地址,联系电话)产品(产品编号,产品名称,产品类别,售价,库
13、存)供应关系(供应商编号,产品编号,总量,出厂价)订购(产品编号,订单编号,数量)客户(客户编号,姓名,通信地址,电话,性别)订单(订单编号,客户编号,雇员编号,下单日期)雇员(雇员编号,姓名,联系电话,工资,性别)注:有下划线 的表示该属性为主键,下划波浪线 的为外键六、 物理设计本次销售订单系统的物理设计主要是系统的表的设计,本次设计所用到的表有7个,有产品表、供应商表、雇员表、客户表、订单表、订购表和供应关系表。下面有对7个表的详细列举。6.1表汇总表名功能说明表Supplier供应商表,存储供应商的编号等信息表Product产品表,存储产品的编号、数量等信息表accommdate_re
14、lation供应关系表,存储供应商所供应的产品对应信息表Order_table订单表,存储订单的编号、日期等信息表send_for订购表,存储产品订购的对应信息表Employee雇员表,存储雇员的编号等信息表Client客户表,存储客户的编号等信息6.2 表1: Order_table表( 订单表)表名 订单表(Order_table)数据库用户Sa主键O_no其他排序字段无索引字段无字段名字段类型类型说明约束检查是否为空字段含义O_noInt整型主键Not null订单编号C_no Int整型外键Not null客户编号E_noInt整型外键Not null雇员编号DateDate日期型下单
15、日期sql脚本-订单表create table Order_table ( O_no int identity(1,1) primary key, C_noint not null, E_no int not null, Data date foreign key (C_no) references Client(C_no), foreign key (E_no) references Employee(E_no), ); 6.3 表2: accommdate _relation表( 供应关系表)表名 供应关系表(accommdate _relation)数据库用户Sa主键无其他排序字段无索引
16、字段无字段名字段类型类型说明约束检查是否为空字段含义S_noChar(10)字符型外键Not null供应商编号P_noChar(10)字符型外键Not null产品编号P_totalInt整型总量P_ priceFloat(3)浮点型出厂价sql脚本-供应关系表create table accommdate_relation ( P_noint not null, S_no int not null, P_total Int, P_price Float(3), ); 6.4 表3: send_for表( 订购表)表名订购表(send_for)数据库用户Sa主键无其他排序字段无索引字段无字段
17、名字段类型类型说明约束检查是否为空字段含义O_noInt整型主键Not null订单编号S_noInt整型外键Not null产品编号numberChar(10)字符型数量sql脚本-订购表create table send_for(O_no not null,int not null,P_noint not null,number Char(10),foreign key (O_no) references Order_table(O_no),foreign key (P_no) references Product(P_no);6.5 表4: Supplier表( 供应商表)表名 供应商表
18、(Supplier)数据库用户Sa主键无其他排序字段无索引字段无字段名字段类型类型说明约束检查是否为空字段含义S_no Int 整型主键Not null供应商编号S_nameChar(20)字符型Not null名称S_addressChar(20)字符型地址S_telephoneChar(10)字符型联系电话sql脚本-供应商表 create table Supplier -供应商表( S_no int identity(1,1) primary key, -供应商编号 S_name char(30) not null, -姓名 S_address char(20), -地址 S_telep
19、hone char(10); -电话 S_name char(10) -供应产品名称);6.6 表5: Product表( 产品表)表名 产品表(Product)数据库用户Sa主键P_no其他排序字段无索引字段无字段名字段类型类型说明约束检查是否为空字段含义P_noint整型主键Not null产品编号P_name Char(20)字符型Not null产品名称P _categoryChar(20)字符型产品类别P_reserveInt整型库存P_price Float(3)浮点型售价sql脚本-产品表 create table Product( p_no int identity(1,1)
20、primary key, -产品编号 p_name char(20) not null, -产品名称 p_category char(20), - 产品类别 p_reserve int, - 库存 P_price Float - 售价 );6.7 表6: Employee表( 雇员表)表名雇员表(Employee)数据库用户Sa主键E_no其他排序字段无索引字段无字段名字段类型类型说明约束检查是否为空字段含义E_noint整型主键Not null雇员编号E_nameChar(10)字符型Not null姓名E_wageFloat(3)浮点型工资E_telChar(20)字符型联系电话E-sex
21、Char(10)字符型性别- 雇员表create table Employee(E_no int identity(1,1) primary key,E_name char(10) not null,E_wage Float(3),C_sex Char(10),E_telephone Char(20) );6.8 表7: Client表( 客户表)表名 客户表(Client)数据库用户sa主键C_no其他排序字段无索引字段无字段名字段类型类型说明约束检查是否为空字段含义ClientInt整型主键C_noChar(10)字符型Not null客户编号C_name Char(10)字符型Not n
22、ull姓名C_addressChar(30)字符型通信地址C_ telephoneChar(20)字符型电话C_sexChar(10)字符型性别sql脚本-客户表create table Client ( C_no int identity(1,1) primary key, C_name Char(10) Not null, C_sex Char(10), C_address Char(30), C_telephone Char(20), );6.9视图的设计(1)建立一张雇员信息的视图。目的:屏蔽雇员的工资信息。功能:能够向管理员提供简明,直接的雇员信息展示。意义:有利于数据库安全的维护,
23、防止任意修改数据库中的雇员信息。-建立一张雇员信息的视图create view table_Employeeas select E_name,E_wage from Employee;select *from table_Employee(2)建立一张产品信息的视图。目的:屏蔽产品的出厂价信息。功能:能够向管理员提供简明,直接的产品信息展示。意义:有利于数据库安全的维护,防止任意修改数据库中的产品信息。-建立一张产品信息的视图create view table_Productas select P_name, p_reserve,P_pricefrom Product;select * fro
24、m table_Product6.10存储过程、查询及触发器的设计1 存储过程(1)插入产品订购通过存储结构,把把产品订购信息写入到表中存储。-插入产品订购信息create procedure procedure_Insert_Product -插入产品信息p_name char(20),p_category char(20),p_reserve int,P_price Floatasif exists(select * from Product where p_name=p_name)-若有相同产品只更新库存量update Productset p_reserve=p_reserve+p_r
25、eserveELSEinsert into Product(p_name,p_category,p_reserve,P_price)values(p_name,p_category,p_reserve,P_price);exec procedure_Insert_Product 雨伞,日用品,50,30select *from product (2)完整的销售流程中就需要存储过程,把需要存储的订单存储入表中,在进行下一步进行查看库存量和最终交易。-完整的销售流程create procedure procedure_Order O_no int,p_no int,C_no int,e_no in
26、t,number intasinsert into send_for(o_no,p_no,number)values(O_no,p_no,number);IF EXISTS(SELECT * FROM send_for WHERE O_no=O_no)-若有重复订单,则不予下单print该订单已有客户下了,请您新建订单ELSEIF EXISTS(SELECT * FROM product WHERE p_reserve=all ( select E_wage from Employee );(6)查询库存最多产品编号、名称和价格select p_no,p_name,P_pricefrom Pr
27、oductwhere P_price =all ( select P_price from Product); (7)查询库存最多产品名称和库存 select p_name,p_reserve from Productwhere p_reserve = ( select MAX(p_reserve) from Product); (8)查询客户订单数的降序排列select c_no,COUNT(o_no)from Order_tablegroup by c_noorder by COUNT(o_no) DESC(9)查询客户订单数最多的客户编号create view view_orderass
28、elect c_no,COUNT(O_no) numfrom Order_tablegroup by c_no;select c_no,numfrom view_orderwhere num=( select MAX(num) from view_order );七、安全性设计7.1 防止用户直接操作数据库的方法(1)用户标识和鉴定用户标识和鉴别是系统提供的最外层安全保护措施。其方法是由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供机器使用权。(2)存取控制数据库安全性所关心的主要是DBMS的存取控制机制。数据库安全最重要的一点就是确保只
29、授权给由资格的用户访问数据库的权限,同时令所有未授权的人员无法接近数据,这主要通过数据库系统的存取控制机实现。(3)数据加密 数据加密是防止数据库中数据在存储和传输中关系的有效字段。加密的基本思想是根据一定的算法讲原始数据变换为不可直接识别的格式,从而使得不知道解密算法的人无法获知数据的内容。7.2 用户帐号密码的加密方法为用户帐号密码加密,需要用程序实现,对用户的帐号密码实行加密算法,并在后台实现转换。7.3 角色与权限角色可以访问的表与列操作权限ss可访问所有表完全控制权限admin可访问所有表部分的控制权限Employee_manage可访问部分表部分的操作权限八、数据库管理与维护说明数
30、据库维护计划设定完成之后,如果SQL Server代理是启动的,那么在管理SQL Server代理作业下面会自动生成若干自动维护的工作条目,并且每个条目都有相应的计划表,这个才是正常的。系统每天凌晨自动更新系统,删除未销卡记录。数据库维护计划非常强大,里面有各式各样对数据库的维护/备份操作,每样都可以设定不同的Schedule,当然,每设定一项,在JOB里面就会自动多出来一条。SQL Server Agent服务的正常运作是这一切的基础。系统每天凌晨更新后,自动备份数据库。九、测试9.1 查询订单数最多的客户的姓名图 9.1 查询订单数最多的客户的姓名9.2 插入产品订购信息插入产品订购信息前
31、查看产品表中的产品信息。后在执行:exec procedure_Insert_Product 雨伞,日用品,50,30,在查看是否存在雨伞、日用品的产品存在,测试结果如图9.3 插入了产品编号为13号、库存为50价格为30的产品信息。图9.2 没有插入产品订购信息前图9.3 插入订购信息后产品表9.3 触发器测试建立触发器:当插入了一条新的产品订购信息后,则激活该触发器,新的产品库存量等于旧库存量减去产品订购的数量。开始产品编号为2号的产品的库存为221如图9.4,执行:insert into send_for values(9,2,5);后,产品库存减少5变为216如图9.5.图9.4 触发
32、器未触发前产品库存图9.5 触发后产品库存十、小结这次的课程设计给我很多感触,对自己这次的课程设计我还是很满意的,不得不说本次课程设计给我带来了非常大的收获。首先,设计数据库管理系统本身,锻炼了自己的能力,增长了自己的实践经验。其次,课程设计本身对于学生的能力锻炼更是功不可没,既巩固了平时学到的理论知识,又能锻炼我们发现、提出、分析和解决实际问题的能力,也能让学生体会到数据库开发的流程。在实际操作中遇到的各种问题,让我思考、求助,直到最终解决,在此过程中更是获益匪浅。在最开始数据库系统的时候,感觉设计一个数据库系统的设计并不是一件难事,也并没太放在心上。但是后来开始动手做的时候,才知道做一个完整的数据库管理系统需要做大量的准备工作,要做出一个功能完善的数据库系统,并非易事。数据库系统设计需要花费大量的时间和精力,必须按照课程设计的要求,遵循老师的教导,一步步的做好需求分析和逻辑设计,并完成物理设计,并不断对数据库系统进行改善,最终才能完成一个完善的数据库管理