数据库销售订单管理系统课程设计.docx

上传人:小飞机 文档编号:2027552 上传时间:2023-01-02 格式:DOCX 页数:39 大小:376.77KB
返回 下载 相关 举报
数据库销售订单管理系统课程设计.docx_第1页
第1页 / 共39页
数据库销售订单管理系统课程设计.docx_第2页
第2页 / 共39页
数据库销售订单管理系统课程设计.docx_第3页
第3页 / 共39页
数据库销售订单管理系统课程设计.docx_第4页
第4页 / 共39页
数据库销售订单管理系统课程设计.docx_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《数据库销售订单管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《数据库销售订单管理系统课程设计.docx(39页珍藏版)》请在三一办公上搜索。

1、目 录1引言11.1编写目的11.2参考资料12.需求规约22.1 业务描述22.2 需求分析23.数据库环境说明34.数据库的命名规则44.1 数据库对象命名规则44.2 数据项编码规则45.逻辑设计55.1 ER图55.2 关系模型56.物理设计66.1表汇总66.2 表1: Suppliers表(供应商表)66.3 表2:product表(产品表)76.4 表3:sp表(供应商产品供应表)76.5 表4: orders表(订单表)86.6 表5:po表(产品订购表)96.7 表6: employee表(雇员表)106.8 表7:customer表(客户表)116.9 视图的设计116.1

2、0 存储过程的设计126.11 触发器的设计296.12函数的设计307.安全性设计317.1防止用户直接操作数据库的方法317.2用户帐号密码的加密方法317.3角色与权限318.数据库管理与维护说明32总结33附录341引言1.1 编写目的本文档是销售订单数据库管理系统设计文档的组成部分,编写数据库设计文档的目的是:明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发,本文档遵循SQL SERVER 2008数据库设计和开发规范。本文档的读者对象是需求人员、系统设计人员、开发人员、测试人员。设计该数据库的目的是为了能够模拟完成一次订单销售流程。1.2 参考资料表1 参考资料表

3、资料名称作者文件编号、版本数据库系统概论王珊、萨师煊2006年5月第4版数据库设计入门经典鲍威尔2007年3月第1版数据库原理克罗恩科2005年6月第1版2.需求规约2.1 业务描述销售订单数据库管理系统的总目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的销售订单数据库管理系统,实现订单的下发,数据的查询删除和修改。2.2 需求分析本销售订单数据库管理系统的需求如下,首先在供应商表、供应表、产品表、订购表、订单表、客户表、雇员表的基本表上建立增、删、改、查的存储过程。以便以后再次用到的时候可以

4、直接用存储过程而不用反复的写代码。第二在实验中间建立触发器,当订购产品的时候可以查询库存,如果满足要求,那么就库存通过触发器实现库存的减少。第三在这次客场设计的基础上建立一些查询,比如说要求建立订单最多的客户信息的查询,平均工资的查询,库存最多的产品的查询。最后要求完成一次下订单的流程。此外,在一个完整的订单销售流程中,本数据库系统还提供查询某供应商供应的产品信息,查询某产品信息,查询某客户信息,查询某订单订购的产品的信息。对于客户而言,还提供了查询订单最多的客户的功能。例如当在订单的中只要知道订单的编号,就可以知道订单的产品的名字,产品的数量(产品的信息),雇员的信息,客户的信息。在订购的表

5、中知道订单号就可以知道订单中产品的数量。可以修改数据库里面的数据,例如条件知道供应商编号就可以对供应商的信息(编号,姓名,x,地址等)进行修改,还可以对该供应商进行删除。知道客户的编号就可以对客户的数据 (编号,信息 姓名,x等)进行修改,还可以对该用户进行删除。总的来说,本数据库系统能够达到模拟完成一次订单销售流程的要求。在本销售订单数据库管理系统中,有一些限制性条件,比如一个客户可以下多个订单,但一个订单只能由一个客户下,一个订单可以订购多种产品,每种产品可被不同订单订购等等,这些限制条件的加入能够使本数据库管理系统的功能更加完善,能够满足更高的要求。3.数据库环境说明表2 数据库环境说明

6、表数据库实例数据库系统数据库部署环境数据库设计工具数据库存放位置说明销售订单数据库管理系统Sql Server 2008Windows 7Sql Server存放位置,绝对路径/相对路径用于订单销售管理4.数据库的命名规则4.1 数据库对象命名规则表3 数据库对象命名表数据库对象命名规则备注表S功能描述字符串例如:Suppliers供应商表视图view_功能描述字符串例如:view_Product产品视图触发器insert_功能描述字符串例如:insert_PO更改库存触发器存储过程Procedure_功能描述字符串例如:pro_sertSuppliers存储过程 4.2 数据项编码规则表4

7、数据项编码表数据项命名规则数据类型长度范围备注供应商编号两位整数序号(001000)定长字符串32位无产品号两 位 整 数 序 号(001000)定长字符串32位无订单号两位整数序号(001000)定长字符串32位无雇员号两位整数序号(001000)定长字符串32位无客户号两位整数序号(001000)定长字符串32位无5.逻辑设计5.1 ER图图5.1E-R图5.2 关系模型供应商(供应商编号,名称,地址,x)产品(产品编号,产品名称,产品类别,出厂价,价格,库存)供应(供应商编号,产品编号)订购(产品编号,订单编号,数量)客户(客户编号,姓名,地址,电话)订单(订单编号,日期,客户编号,雇员

8、编号,产品种类)雇员(雇员编号,姓名,电话,工资)6.物理设计6.1表汇总表5 汇总表表名功能说明表Suppliers供应商表,存储供应商的编号等信息表product产品表,存储产品的编号、数量等信息表Sp供应商产品供应表,存储供应商所供应的产品对应信息表orders订单表,存储订单的编号、日期等信息表po产品订购表,存储产品订购的对应信息表employee雇员表,存储雇员的编号等信息表customer客户表,存储客户的编号等信息6.2 表1: Suppliers表(供应商表)表名Suppliers(供应商表)数据库用户Sa主键S_number其他排序字段无索引字段无序号字段名称数据类型(精度

9、范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1S_numberchar(32)NY高无主键/供应商编号2S_namechar(32)NN中无供应商名称3S_addresschar(32)NN中无供应商地址4S_telnumChar(32)NN高无供应商电话sql脚本-建立供应商表create table Suppliers-供应商表( S_number char(32) not null primary key, S_name char(32) not null, S_adress char(32) not null, S_telnub char(32) not null, );6

10、.3 表2:product表(产品表)表名Product(产品表)数据库用户sa主键P_number其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1P_numberchar(32)NY高无主键/产品编号2P_namechar(32)NY高无产品名称3P_priceintYN中无产品原价4P_expriceintYN中无产品出厂价5P_inventoryintYN中无产品库存量sql脚本-建立产品表create table product -产品表( p_number char(32) primary key not null, p_n

11、ame char(32) not null, p_price int, -原价 p_exprice int, -售价 p_inventory int ,-库存);6.4 表3:sp表(供应商产品供应表)表名sp(供应商产品供应表)数据库用户sa主键S_number,P_number其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1S_numberchar(32)NY高无主键/供应商号2P_numberchar(32)NY高无主键/产品编号sql脚本-建立供应商产品供应表create table sup-供应表( S_number cha

12、r(32) not null, p_number char(32) not null, primary key(S_number,p_number), foreign key(S_number)references Suppliers(S_number) on delete cascade on update cascade, foreign key(p_number)references product(p_number) on delete cascade on update cascade );6.5 表4: orders表(订单表)表名orders(订单表)数据库用户sa主键o_num

13、ber其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1o_numberchar(32)NY高无主键/订单号2timesdateNN低无订单日期3e_numberchar(32)YN中无雇员号4c_numberchar(32)NN高无客户号5pnintYN中无产品种类数sql脚本-建立订单表create table orders -订单表( o_number char(32) not null primary key, empl_number char(32) not null, c_number char(32) not null,

14、times date, pn int,-产品总数 foreign key(c_number)references customer(c_number) on delete cascade on update cascade, foreign key(empl_number)references employee(empl_number) on delete cascade on update cascade );6.6 表5:po表(产品订购表)表名po(产品订购表)数据库用户sa主键p_number o_number其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y

15、/N区别度默认值约束条件/说明1p_numberchar(32)NY高无主键/产品号2o_numberchar(32)NY高无主键/订单号3quantintNN低无订购产品数量sql脚本-建立产品订购表create table po-订购表(p_number char(32),o_number char(32),quant int,primary key(p_number,o_number),foreign key(p_number)references product(p_number)on delete cascadeon update cascade,foreign key(o_numb

16、er)references orders(o_number)on delete cascadeon update cascade, );6.7 表6: employee表(雇员表)表名employee(雇员表)数据库用户sa主键e_number其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1e_numberchar(32)NY高无主键/雇员号2e_namechar(32)YN中无雇员名称3e_telnumChar(32)YY高无雇员电话4e_realrealYN低无雇员薪资5e_addresChar(32)YN中无雇员的地址sql脚本

17、-建立雇员表create table employee-雇员表( empl_name char(32), empl_number char(32) primary key, empl_addres char(32), empl_telnumb char(32), empl_real int,);6.8 表7:customer表(客户表)表名customer(客户表)数据库用户sa主键c_number其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1c_numberchar(32)NY高无主键/客户表2c_namechar(32)YN中无

18、客户名称3c_addresschar(32)YN中无客户地址4c_telnubchar(32)YY高无客户电话sql脚本-建立客户表create table customer-客户表( c_number char(32) primary key, c_name char(32), c_adress char(32), c_telnub char(32),);6.9 视图的设计1、建立一张客户信息的视图目的:屏蔽客户的地址信息。功能:能够向管理员提供简明,直接的客户信息展示。意义:有利于数据库安全的维护,防止任意修改数据库中的雇员信息。create view v_coustom(name,num

19、ber)asselect c_name,c_numberfrom customer;2、建立一张订单视图信息的视图目的:用来查询每个客户下的订单数和用来查找下订单数最多的客户。功能:能够向管理员提供简明,直接客户下订单的信息展示。意义:有利于数据的检索。create view view_ordersasselect c_number,count(o_number)总数from ordersgroup by c_number;6.10 存储过程的设计1、查询订单数量功能:查询订单的数量目的:存储查询订单数量的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create proce

20、dure procedure_SearchOrdersNum -查询订单的存储过程asselect COUNT(*) 订单总数-查询订单数量from Orders;图1 订单总数查询图2、查询订单信息功能:查询订单信息目的:存储查询订单信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_select_orders-查询订单信息xo_number char(32)asif not exists ( select * from orders where o_number=xo_number ) print该订单不存在 else

21、select orders.o_number,times,pn,c_name,empl_namefrom orders ,customer,employee wherecustomer.c_number=orders.c_numberandorders.empl_number=employee.empl_number and orders.o_number=xo_number图2 订单查询图 3、查询订单最多的客户信息功能:查询订单最多的客户信息目的:存储查询订单最多的客户信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create view view_orderasse

22、lect c_number,count(o_number)总数from ordersgroup by c_number;drop view view_orders;create procedure procedure_select_max_oders -查询订单数最多的客户asselect *from customerwhere c_number in ( select c_number from view_orders where 总数 in( select MAX(总数 ) from view_orders ) ); 图3 最多订单客户效果图4、查询客户信息功能:查询客户信息目的:存储查询

23、客户信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_select_coustom -查询客户信息xname char(32)asif not exists ( select * from customer where c_name=xname ) print该客户不存在 elseselect *from customer where c_name=xname;图4 查询客户信息图5、查询雇员信息功能:查询雇员信息目的:存储查询雇员信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create pro

24、cedure procedure_select_empl -查询雇员信息xname char(32)asif not exists ( select * from employee where empl_name=xname ) print该客户不存在 elseselect *from employee where empl_name=xname;图5 查询雇员信息图6更新客户信息功能:更新客户信息目的:存储更新客户信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure update_coustome-更新客户信息 xnumber char(32

25、), xtell char(32), xaddress char(32) as if not exists(select * from customer where c_number=xnumber ) print你输入的客户不存在 else update customer set c_adress=xaddress,c_telnub=xtell where c_number=xnumber ;图6 更新客户信息图7、查询产品信息功能:查询产品信息目的:存储查询产品信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_sel

26、ec_produt xpnumber char(32)-产品的查询as select *from productwhere p_number=xpnumber;图7 查询产品图8、插入供应商信息功能:插入供应商信息目的:存储插入供应商信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure inser_suply-增加供应商 xSnumber char(32), xSname char(32), xSadress char(32), xStelnub char(32)asif exists(select * from Suppliers where

27、 S_number=xSnumber)print 该供应商已经存在,无需加入。else insertinto Suppliersvalues( xSnumber, xSname, xSadress , xStelnub );图8 插入供应商图9、插入订单信息功能:插入订单信息目的:存储插入订单信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_insert_orders-插入订单信息xo_number char(32),xempl_number char(32),xc_number char(32),xtime date,

28、xpn intasif exists ( select * from orders where o_number=xo_number ) print该订单已经存在,不需重复下订单 elseinsertinto orders values(xo_number ,xempl_number,xc_number,xtime ,xpn) 图9 插入订单图10、插入产品订购信息功能:插入产品订购信息目的:存储插入产品订购信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_oeder_pro -插入订单产品xpnumber char(3

29、2),xonumber char(32),xquany intasif not exists ( select * from product where p_number=xpnumber ) print仓库里没有该产品,不予订购 elseif not exists ( select * from orders where o_number=xonumber ) print你输入的订单号不对 elseif exists ( select * from po where p_number=xpnumber and o_number =xonumber ) print该产品已经在订单中 else

30、if exists ( select * from product where p_inventoryxquany and p_number=xpnumber ) print该产品库存不足不予以订购 elseinsert into povalues(xpnumber ,xonumber,xquany ); 图10 插入订购产品图11、插入产品信息功能:插入产品信息目的:存储产品的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_insert_pro-插入产品xnumber char(32),xname char(32),xpr

31、ice int,xexprice int,xinventory intasif exists(select * from product where p_number=xnumber)update productset p_inventory=p_inventory+xinventoryelseinsert into product values( xnumber, xname, xprice, xexprice, xinventory )图 11 插入产品图12、更新供应商的信息功能:更新供应商的信息目的:存储产品的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create

32、 procedure procedure_update_suply-更新供应商信息 xsnumber char(32), xstell char(32), xsaddress char(32) as if not exists( select * from Suppliers where S_number=xsnumber ) print你输入的供应商不存在 else update Suppliers set S_adress=xsaddress,S_telnub=xstell where S_number =xsnumber; exec procedure_update_suply 001,

33、一三656478888,大连;图12 更新供应商信息图一三、删除供应商功能:删除供应商的信息目的:存储产品的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤 create procedure procedure_delet_supply-删除供应商信息 xnumber char(32) as if not exists(select * from Suppliers where S_number=xnumber ) print你输入的供应商不存在 else delete from Suppliers where S_number =xnumber ; exec procedur

34、e_delet_supply 111;图一三 删除供应商图14、最多的库存产品查询功能:最多的库存产品查询目的:存储产品的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤图14 库存量最大产品查询图一五、供应商供应的产品查询功能:供应商供应的产品查询目的:存储产品的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_selet_pro -查询商供应的产品xsnumber char(32)asif not exists(select s_number from Suppliers where S_number=xs

35、number )print该供应商不存在elseselect S_name,p_name from Suppliers,sup,productwhere Suppliers.S_number=sup.S_number and Suppliers.S_number=xsnumber and sup.p_number=product.p_numberexec procedure_selet_pro 011;图16 查询供应商供应的产品图16、更新客户的信息功能:更新客户信息目的:存储产品的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤 create procedure proce

36、dure_update_coustome-更新客户信息 xnumber char(32), xtell char(32), xaddress char(32) as if not exists(select * from customer where c_number=xnumber ) print你输入的客户不存在 else update customer set c_adress=xaddress,c_telnub=xtell where c_number=xnumber ; exec procedure_update_coustome 01,073一三936096,广州图16 更新客户信

37、息图17、删除客户信息功能:删除客户信息目的:存储产品的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_delet_coustome-删除客户信息 xnumber char(32) as if not exists(select * from customer where c_number=xnumber ) print你输入的客户不存在 else delete from customer where c_number=xnumber ; exec procedure_delet_coustome 05 图17 删除客户信息

38、图一八、更新雇员信息功能:更新雇员信息目的:存储产品的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_update_emp-更新雇员信息 xenumber char(32), xetell char(32), xeaddress char(32), xe_real int as if not exists(select * from employee where empl_number=xenumber ) print你输入的雇员不存在 else update employee set empl_addres=xeaddress,empl_telnumb=xetell,empl_real=xe_real where empl

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号