2021年订单销售数据库设计

合集下载

商品销售系统数据库设计

商品销售系统数据库设计

商品销售系统数据库设计数据库设计是构建商品销售系统的核心部分之一,它定义了系统中的数据结构和数据之间的关系。

一个良好设计的数据库可以提高系统的性能和可维护性。

下面是一个大致的商品销售系统数据库设计的详细说明。

1.基本信息表在商品销售系统中,基本信息表用于存储所有商品的基本信息,包括商品名称、商品描述、价格等。

该表是一个主表,每个商品都必须在这个表中有一条对应的记录。

除了商品的基本信息外,还需要在该表中添加字段用于标识商品的状态,如库存数量、是否上架等。

2.类别信息表类别信息表用于存储商品的类别信息。

每个商品都必须属于一个类别,通过在商品基本信息表中添加类别信息的外键来实现关联。

类别信息表应包含类别名称和类别描述等字段。

3.订单信息表4.订单明细表订单明细表用于存储订单中每个商品的详细信息。

该表应包含订单号、商品ID、商品单价、商品数量等字段。

5.顾客信息表6.用户信息表用户信息表用于存储系统的用户信息,如用户ID、用户名、密码等。

该表用于实现用户登录功能。

用户信息和顾客信息可以关联,一个顾客可以对应一个用户账号。

7.库存信息表库存信息表用于存储商品的库存信息。

该表应包含商品ID、库存数量等字段。

8.售后服务信息表售后服务信息表用于存储顾客的售后服务记录,如退货申请、维修记录等。

表中应包含顾客信息、商品信息、售后服务类型、处理结果等字段。

这些是一个商品销售系统数据库的基本设计,当然还可以根据具体业务需求进行扩展。

数据库的设计要灵活、可拓展、性能高,对大批量数据的操作有良好的支持。

同时,在实际应用中,还需要对数据库进行充分优化,如建立索引、进行表分区等,以提高系统的查询和操作性能。

另外,还应设置合适的权限控制,确保数据的安全性。

整个系统开发完成后,还需要进行充分的测试,以保证数据库设计的正确性和稳定性。

数据库系统—订单销售数据库管理系统

数据库系统—订单销售数据库管理系统

数据库系统—订单销售数据库管理系统在当今数字化的商业世界中,订单销售数据库管理系统扮演着至关重要的角色。

它就像是企业运营的中枢神经系统,负责处理、存储和分析与订单销售相关的大量数据,为企业的决策制定、业务优化和客户服务提供有力支持。

想象一下,一个没有高效订单销售数据库管理系统的企业会是什么样子?销售订单可能会丢失或混乱,客户信息不准确,库存管理一团糟,销售趋势和业绩难以追踪,这无疑会给企业带来巨大的损失和困扰。

而一个精心设计和有效运作的订单销售数据库管理系统,则能够帮助企业解决这些问题,提升运营效率和竞争力。

订单销售数据库管理系统的核心功能首先体现在对订单数据的精确记录和管理上。

从客户下单的那一刻起,系统就会详细记录订单的各种信息,包括订单编号、客户姓名、联系方式、产品或服务详情、订单金额、支付方式、交货日期等等。

这些信息不仅为后续的订单处理流程提供了基础,还为企业了解客户需求和购买行为提供了宝贵的线索。

在库存管理方面,订单销售数据库管理系统发挥着关键作用。

系统能够实时更新库存数量,当有新的订单生成时,自动扣除相应产品的库存数量。

如果库存不足,系统会及时发出预警,提醒相关人员进行补货。

这样一来,企业可以有效地避免缺货导致的销售损失,同时也能减少库存积压,降低运营成本。

客户管理也是订单销售数据库管理系统的重要组成部分。

系统中存储着客户的详细信息,包括购买历史、偏好、投诉记录等。

通过对这些数据的分析,企业可以更好地了解客户需求,提供个性化的服务和推荐,从而提高客户满意度和忠诚度。

例如,如果系统发现某个客户经常购买某类产品,企业就可以在相关产品有促销活动时,及时向该客户发送通知。

销售数据分析是订单销售数据库管理系统的另一大优势。

系统能够生成各种销售报表,如销售额、销售量、销售渠道分析、产品畅销排行等。

这些报表可以帮助企业管理层清晰地了解销售业绩和趋势,发现潜在的市场机会和问题。

比如,如果发现某个地区的销售额持续下降,企业就可以深入分析原因,是市场竞争激烈,还是产品不符合当地需求,进而采取针对性的措施加以改进。

订单销售数据库设计

订单销售数据库设计

五、逻辑设计之樊仲川亿创作5.1 ER图5.2 关系模型供应商(供应商编号,名称,地址,联系电话)产品(产品编号,产品名称,产品类别,售价,出厂价,存货量)供应(供应商编号,产品编号)订购(产品编号,订单编号,数量)客户(客户编号,姓名,通信地址,电话)订单(订单编号,日期,客户编号,雇员编号)雇员(雇员编号,姓名,联系电话,工资)注:有下划线的暗示该属性为主码。

六、物理设计6.1 表汇总6.2 表[1]:[ Suppliers表](供应商表)6.3 表[2]:[ Product表](产品表)6.4 表[3]:[ SP表](供应商产品供应表)6.5 表[4]:[ Orders表](订单表)6.6 表[5]:[ PO表](产品订购表)6.7 表[6]:[ Employee表](雇员表)6.8 表[7]:[ Customer表](客户表)6.9 视图的设计1、建立一张雇员信息的视图目的:屏蔽雇员的工资信息。

功能:能够向管理员提供简明,直接的雇员信息展示。

意义:有利于数据库平安的维护,防止任意修改数据库中的雇员信息。

create view view_Employee--建立Employee视图,屏蔽工资属性asselect Enumber,Ename,Etelnumfrom Employeewith check option;2、建立一张产品信息的视图目的:屏蔽产品的出厂价信息。

功能:能够向管理员提供简明,直接的产品信息展示。

意义:有利于数据库平安的维护,防止任意修改数据库中的产品信息。

create view view_Producte--建立Product视图,屏蔽出厂价属性asselect Pnumber,Pname,Pcategory,Pprice,Pinventoryfrom view_Productewith check option;6.10 存储过程的设计1、查询订单数量功能:查询订单的数量目的:存储查询订单数量的操纵意义:下次重复同样的动作时,可直接执行存储过程,简化操纵步调create procedure procedure_SearchOrdersNum --查询订单的存储过程As select COUNT(*) '订单总数'--查询订单数量 from Orders;2、查询客户的订单信息功能:查询客户的订单信息目的:存储查询客户的订单信息的操纵意义:下次重复同样的动作时,可直接执行存储过程,简化操纵步调create procedure procedure_CustomerOrders--查询某个客户订单信息@Cname char(10) as select Onumber,Odate,Enumberfrom Orders,Customerwhere Cname like @Cname and umber like umber;3、查询订单最多的客户信息功能:查询订单最多的客户信息目的:存储查询订单最多的客户信息的操纵意义:下次重复同样的动作时,可直接执行存储过程,简化操纵步调息asselect Cnumber,Cname,Caddress,Ctelnumfrom Orders,Customergroup by Cnumber having MAX(Cnumber);4、查询客户信息功能:查询客户信息目的:存储查询客户信息的操纵意义:下次重复同样的动作时,可直接执行存储过程,简化操纵步调create procedure procedure_SearchCustomer--查询某客户信息@Cname char(10)asselect *from Customerwhere Cname=@Cname;5、查询雇员信息功能:查询雇员信息目的:存储查询雇员信息的操纵意义:下次重复同样的动作时,可直接执行存储过程,简化操纵步调create procedure procedure_SearchEmployee--查询某雇员信息@Ename char(10)asselect *from Employeewhere Ename=@Ename;6、查询某订单对应的产品信息功能:查询某订单对应的产品信息目的:存储查询某订单对应的产品信息的操纵意义:下次重复同样的动作时,可直接执行存储过程,简化操纵步调create procedure procedure_SearchPO--查询某订单的产品信息@Onumber char(12)asselectOnumber,Product.Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinvent oryfrom Product,POwhere Onumber=@Onumber and PO.Pnumber=Product.Pnumber;7、查询产品信息功能:查询产品信息目的:存储查询产品信息的操纵意义:下次重复同样的动作时,可直接执行存储过程,简化操纵步调create procedure procedure_SearchProduct--查询某产品信息@Pnumber char(12)asselectPnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory,Snumberfrom Product,SPwhere Pnumber=@Pnumber and SP.Pnumber=@Pnumber;8、拔出供应商信息功能:拔出供应商信息目的:存储拔出供应商信息的操纵意义:下次重复同样的动作时,可直接执行存储过程,简化操纵步调create procedure procedure_InsertSuppliers--拔出供应商信息@Snumber char(12),@Sname char(30),@Saddress char(30),@Stelnum intasIF EXISTS(SELECT * FROM Suppliers WHERE Snumber=@Snumber)print'该供应商记录已经存在'ELSEinsert into Suppliers(Snumber,Sname,Saddress,Stelnum)values(@Snumber,@Sname,@Saddress,@Stelnum);9、拔出订单信息功能:拔出订单信息目的:存储拔出订单信息的操纵意义:下次重复同样的动作时,可直接执行存储过程,简化操纵步调create procedure procedure_InsertOrders--拔出订单表@Onumber char(12),@Odate date,,@Enumber char(12),@Cnumber char(12)asIF EXISTS(SELECT * FROM Orders WHERE Onumber=@Onumber)print'该订单记录已经存在'ELSEinsert into Orders(Onumber,Odate,Enumber,Cnumber)values(@Onumber,@Odate,@Enumber,@Cnumber);10、拔出产品订购信息功能:拔出产品订购信息目的:存储拔出产品订购信息的操纵意义:下次重复同样的动作时,可直接执行存储过程,简化操纵步调create procedure procedure_InsertPO--拔出产品订购表@Pnumber char(12),@Onumber char(12),@Quantity intasIF EXISTS(SELECT * FROM PO WHERE Pnumber=@Pnumber and Onumber=@Onumber)--当该订单已经订购改产品时不予重复订购print'该产品订购订单记录已经存在'IF EXISTS(SELECT * FROM Product WHERE Pinventory<@Quantity)--当库存量缺乏时不予订购print'该产品库存缺乏,无法订购'ELSEinsert into PO(Onumber,Pnumber,Quantity)values(@Onumber,@Pnumber,@Quantity);11、拔出产品信息功能:拔出产品信息目的:存储产品的操纵意义:下次重复同样的动作时,可直接执行存储过程,简化操纵步调create procedure procedure_InsertProduct --拔出产品信息@Pnumber char(12),@Pname char(30),@Pcategory char(15),@Pprice int,@Pex_price real,@Pinventory realasIF EXISTS(SELECT * FROM Product WHERE Pnumber=@Pnumber)--若有相同产品,只更新库存量update Productset Pinventory=Pinventory+@PinventoryELSEinsert into Product(Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory) values(@Pnumber,@Pname,@Pcategory,@Pprice,@Pex_price,@Pinventory );12、完整的订单销售流程功能:拔出订单信息和订购信息以及修改产品库存等信息目的:存储从客户下单到订单订购产品的流程的操纵意义:直观展示订单销售流程,使用户能够更简明的执行完整的订单销售流程create procedure procedure_Order --完整的订单销售流程@Onumber char(12),@Odate date,,@Enumber char(12),@Cnumber char(12)@Pnumber char(12),@Onumber char(12),@Quantity intasIF EXISTS(SELECT * FROM Orders WHERE Onumber=@Onumber)--若有重复订单,则不予下单print'该订单记录已存在,不克不及重复下订单'ELSEinsert into Orders(Onumber,Odate,Enumber,Cnumber)values(@Onumber,@Odate,@Enumber,@Cnumber);IF EXISTS(SELECT * FROM PO WHERE Pnumber=@Pnumber and Onumber=@Onumber)--若有重复订购单,则不予订购print'该产品订购记录已存在,不克不及重复订购'ELSEIF EXISTS(SELECT * FROM Product WHERE Pinventory<@Quantity)--若产品库存量缺乏,则不予订购print'产品库存量缺乏,不克不及订购'ELSEinsert into PO(Onumber,Pnumber,Quantity)values(@Onumber,@Pnumber,@Quantity);6.11 触发器的设计1、建立触发器insert_PO:当拔出了一条新的产品订购信息后,则激活该触发器,新的产品库存量等于旧库存量减去产品订购的数量。

订单销售数据库设计

订单销售数据库设计

五、逻辑设计5.1 ER图5.2 关系模型供应商(供应商编号,名称,地址,联系电话)产品(产品编号,产品名称,产品类别,售价,出厂价,存货量) 供应(供应商编号,产品编号)订购(产品编号,订单编号,数量)客户(客户编号,姓名,通信地址,电话)订单(订单编号,日期,客户编号,雇员编号)雇员(雇员编号,姓名,联系电话,工资)注:有下划线的表示该属性为主码。

六、物理设计6.1 表汇总6.2 表[1]:[ Suppliers表](供应商表)6.3 表[2]:[ Product表](产品表)6.4 表[3]:[ SP表](供应商产品供应表)6.5 表[4]:[ Orders表](订单表)6.6 表[5]:[ PO表](产品订购表)6.7 表[6]:[ Employee表](雇员表)6.8 表[7]:[ Customer表](客户表)6.9 视图的设计1、建立一张雇员信息的视图目的:屏蔽雇员的工资信息。

功能:能够向管理员提供简明,直接的雇员信息展示。

意义:有利于数据库安全的维护,防止任意修改数据库中的雇员信息。

create view view_Employee--建立Employee视图,屏蔽工资属性asselect Enumber,Ename,Etelnumfrom Employeewith check option;2、建立一张产品信息的视图目的:屏蔽产品的出厂价信息。

功能:能够向管理员提供简明,直接的产品信息展示。

意义:有利于数据库安全的维护,防止任意修改数据库中的产品信息。

create view view_Producte--建立Product视图,屏蔽出厂价属性asselect Pnumber,Pname,Pcategory,Pprice,Pinventoryfrom view_Productewith check option;6.10 存储过程的设计1、查询订单数量功能:查询订单的数量目的:存储查询订单数量的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchOrdersNum --查询订单的存储过程As select COUNT(*) '订单总数'--查询订单数量from Orders;2、查询客户的订单信息功能:查询客户的订单信息目的:存储查询客户的订单信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_CustomerOrders--查询某个客户订单信息@Cname char(10) as select Onumber,Odate,Enumberfrom Orders,Customerwhere Cname like @Cname and umber like umber;3、查询订单最多的客户信息功能:查询订单最多的客户信息目的:存储查询订单最多的客户信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchMaxOrders--查询订单最多的客户信息asselect Cnumber,Cname,Caddress,Ctelnumfrom Orders,Customerwhere unmer=unmergroup by Cnumber having MAX(Cnumber);4、查询客户信息功能:查询客户信息目的:存储查询客户信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchCustomer--查询某客户信息@Cname char(10)asselect *from Customerwhere Cname=@Cname;5、查询雇员信息功能:查询雇员信息目的:存储查询雇员信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchEmployee--查询某雇员信息@Ename char(10)asselect *from Employeewhere Ename=@Ename;6、查询某订单对应的产品信息功能:查询某订单对应的产品信息目的:存储查询某订单对应的产品信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchPO--查询某订单的产品信息@Onumber char(12)asselect Onumber,Product.Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory from Product,POwhere Onumber=@Onumber and PO.Pnumber=Product.Pnumber;7、查询产品信息功能:查询产品信息目的:存储查询产品信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchProduct--查询某产品信息@Pnumber char(12)asselect Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory,Snumberfrom Product,SPwhere Pnumber=@Pnumber and SP.Pnumber=@Pnumber;8、插入供应商信息功能:插入供应商信息目的:存储插入供应商信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_InsertSuppliers--插入供应商信息@Snumber char(12),@Sname char(30),@Saddress char(30),@Stelnum int asIF EXISTS(SELECT * FROM Suppliers WHERE Snumber=@Snumber)print'该供应商记录已经存在'ELSEinsert into Suppliers(Snumber,Sname,Saddress,Stelnum)values(@Snumber,@Sname,@Saddress,@Stelnum);9、插入订单信息功能:插入订单信息目的:存储插入订单信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_InsertOrders--插入订单表@Onumber char(12),@Odate date,,@Enumber char(12),@Cnumber char(12) asIF EXISTS(SELECT * FROM Orders WHERE Onumber=@Onumber)print'该订单记录已经存在'ELSEinsert into Orders(Onumber,Odate,Enumber,Cnumber)values(@Onumber,@Odate,@Enumber,@Cnumber);10、插入产品订购信息功能:插入产品订购信息目的:存储插入产品订购信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_InsertPO--插入产品订购表@Pnumber char(12),@Onumber char(12),@Quantity intasIF EXISTS(SELECT * FROM PO WHERE Pnumber=@Pnumber and Onumber=@Onumber)--当该订单已经订购改产品时不予重复订购print'该产品订购订单记录已经存在'IF EXISTS(SELECT * FROM Product WHERE Pinventory<@Quantity)--当库存量不足时不予订购print'该产品库存不足,无法订购'ELSEinsert into PO(Onumber,Pnumber,Quantity)values(@Onumber,@Pnumber,@Quantity);11、插入产品信息功能:插入产品信息目的:存储产品的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_InsertProduct --插入产品信息@Pnumber char(12),@Pname char(30),@Pcategory char(15),@Pprice int,@Pex_price real,@Pinventory realIF EXISTS(SELECT * FROM Product WHERE Pnumber=@Pnumber)--若有相同产品,只更新库存量update Productset Pinventory=Pinventory+@PinventoryELSEinsert into Product(Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory)values(@Pnumber,@Pname,@Pcategory,@Pprice,@Pex_price,@Pinventory);12、完整的订单销售流程功能:插入订单信息和订购信息以及修改产品库存等信息目的:存储从客户下单到订单订购产品的流程的操作意义:直观展示订单销售流程,使用户能够更简明的执行完整的订单销售流程create procedure procedure_Order --完整的订单销售流程@Onumber char(12),@Odate date,,@Enumber char(12),@Cnumber char(12)@Pnumber char(12),@Onumber char(12),@Quantity intasIF EXISTS(SELECT * FROM Orders WHERE Onumber=@Onumber)--若有重复订单,则不予下单print'该订单记录已存在,不能重复下订单'ELSEinsert into Orders(Onumber,Odate,Enumber,Cnumber)values(@Onumber,@Odate,@Enumber,@Cnumber);IF EXISTS(SELECT * FROM PO WHERE Pnumber=@Pnumber and Onumber=@Onumber)--若有重复订购单,则不予订购print'该产品订购记录已存在,不能重复订购'ELSEIF EXISTS(SELECT * FROM Product WHERE Pinventory<@Quantity)--若产品库存量不足,则不予订购print'产品库存量不足,不能订购'ELSEinsert into PO(Onumber,Pnumber,Quantity)values(@Onumber,@Pnumber,@Quantity);6.11 触发器的设计1、建立触发器insert_PO:当插入了一条新的产品订购信息后,则激活该触发器,新的产品库存量等于旧库存量减去产品订购的数量。

订单销售数据库设计

订单销售数据库设计

五、逻辑设计5.1 ER图5.2 关系模型供应商(供应商编号,名称,地址,联系电话)产品(产品编号,产品名称,产品类别,售价,出厂价,存货量) 供应(供应商编号,产品编号)订购(产品编号,订单编号,数量)客户(客户编号,姓名,通信地址,电话)订单(订单编号,日期,客户编号,雇员编号)雇员(雇员编号,姓名,联系电话,工资)注:有下划线的表示该属性为主码。

六、物理设计6.1 表汇总6.2 表[1]:[ Suppliers表](供应商表)6.3 表[2]:[ Product表](产品表)6.4 表[3]:[ SP表](供应商产品供应表)6.5 表[4]:[ Orders表](订单表)6.6 表[5]:[ PO表](产品订购表)6.7 表[6]:[ Employee表](雇员表)6.8 表[7]:[ Customer表](客户表)6.9 视图的设计1、建立一张雇员信息的视图目的:屏蔽雇员的工资信息。

功能:能够向管理员提供简明,直接的雇员信息展示。

意义:有利于数据库安全的维护,防止任意修改数据库中的雇员信息。

create view view_Employee--建立Employee视图,屏蔽工资属性asselect Enumber,Ename,Etelnumfrom Employeewith check option;2、建立一张产品信息的视图目的:屏蔽产品的出厂价信息。

功能:能够向管理员提供简明,直接的产品信息展示。

意义:有利于数据库安全的维护,防止任意修改数据库中的产品信息。

create view view_Producte--建立Product视图,屏蔽出厂价属性asselect Pnumber,Pname,Pcategory,Pprice,Pinventoryfrom view_Productewith check option;6.10 存储过程的设计1、查询订单数量功能:查询订单的数量目的:存储查询订单数量的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchOrdersNum --查询订单的存储过程As select COUNT(*) '订单总数'--查询订单数量from Orders;2、查询客户的订单信息功能:查询客户的订单信息目的:存储查询客户的订单信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_CustomerOrders--查询某个客户订单信息@Cname char(10) as select Onumber,Odate,Enumberfrom Orders,Customerwhere Cname like @Cname and umber like umber;3、查询订单最多的客户信息功能:查询订单最多的客户信息目的:存储查询订单最多的客户信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchMaxOrders--查询订单最多的客户信息asselect Cnumber,Cname,Caddress,Ctelnumfrom Orders,Customerwhere unmer=unmergroup by Cnumber having MAX(Cnumber);4、查询客户信息功能:查询客户信息目的:存储查询客户信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchCustomer--查询某客户信息@Cname char(10)asselect *from Customerwhere Cname=@Cname;5、查询雇员信息功能:查询雇员信息目的:存储查询雇员信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchEmployee--查询某雇员信息@Ename char(10)asselect *from Employeewhere Ename=@Ename;6、查询某订单对应的产品信息功能:查询某订单对应的产品信息目的:存储查询某订单对应的产品信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchPO--查询某订单的产品信息@Onumber char(12)asselect Onumber,Product.Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventoryfrom Product,POwhere Onumber=@Onumber and PO.Pnumber=Product.Pnumber;7、查询产品信息功能:查询产品信息目的:存储查询产品信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchProduct--查询某产品信息@Pnumber char(12)asselect Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory,Snumberfrom Product,SPwhere Pnumber=@Pnumber and SP.Pnumber=@Pnumber;8、插入供应商信息功能:插入供应商信息目的:存储插入供应商信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_InsertSuppliers--插入供应商信息@Snumber char(12),@Sname char(30),@Saddress char(30),@Stelnum intasIF EXISTS(SELECT * FROM Suppliers WHERE Snumber=@Snumber)print'该供应商记录已经存在'ELSEinsert into Suppliers(Snumber,Sname,Saddress,Stelnum)values(@Snumber,@Sname,@Saddress,@Stelnum);9、插入订单信息功能:插入订单信息目的:存储插入订单信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_InsertOrders--插入订单表@Onumber char(12),@Odate date,,@Enumber char(12),@Cnumber char(12)asIF EXISTS(SELECT * FROM Orders WHERE Onumber=@Onumber)print'该订单记录已经存在'ELSEinsert into Orders(Onumber,Odate,Enumber,Cnumber)values(@Onumber,@Odate,@Enumber,@Cnumber);10、插入产品订购信息功能:插入产品订购信息目的:存储插入产品订购信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_InsertPO--插入产品订购表@Pnumber char(12),@Onumber char(12),@Quantity intasIF EXISTS(SELECT * FROM PO WHERE Pnumber=@Pnumber and Onumber=@Onumber)--当该订单已经订购改产品时不予重复订购print'该产品订购订单记录已经存在'IF EXISTS(SELECT * FROM Product WHERE Pinventory<@Quantity)--当库存量不足时不予订购print'该产品库存不足,无法订购'ELSEinsert into PO(Onumber,Pnumber,Quantity)values(@Onumber,@Pnumber,@Quantity);11、插入产品信息功能:插入产品信息目的:存储产品的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_InsertProduct --插入产品信息@Pnumber char(12),@Pname char(30),@Pcategory char(15),@Pprice int,@Pex_price real,@Pinventory realasIF EXISTS(SELECT * FROM Product WHERE Pnumber=@Pnumber)--若有相同产品,只更新库存量update Productset Pinventory=Pinventory+@PinventoryELSEinsert into Product(Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory)values(@Pnumber,@Pname,@Pcategory,@Pprice,@Pex_price,@Pinventory);12、完整的订单销售流程功能:插入订单信息和订购信息以及修改产品库存等信息目的:存储从客户下单到订单订购产品的流程的操作意义:直观展示订单销售流程,使用户能够更简明的执行完整的订单销售流程create procedure procedure_Order --完整的订单销售流程@Onumber char(12),@Odate date,,@Enumber char(12),@Cnumber char(12)@Pnumber char(12),@Onumber char(12),@Quantity intasIF EXISTS(SELECT * FROM Orders WHERE Onumber=@Onumber)--若有重复订单,则不予下单print'该订单记录已存在,不能重复下订单'ELSEinsert into Orders(Onumber,Odate,Enumber,Cnumber)values(@Onumber,@Odate,@Enumber,@Cnumber);IF EXISTS(SELECT * FROM PO WHERE Pnumber=@Pnumber and Onumber=@Onumber)--若有重复订购单,则不予订购print'该产品订购记录已存在,不能重复订购'ELSEIF EXISTS(SELECT * FROM Product WHERE Pinventory<@Quantity)--若产品库存量不足,则不予订购print'产品库存量不足,不能订购'ELSEinsert into PO(Onumber,Pnumber,Quantity)values(@Onumber,@Pnumber,@Quantity);6.11 触发器的设计1、建立触发器insert_PO:当插入了一条新的产品订购信息后,则激活该触发器,新的产品库存量等于旧库存量减去产品订购的数量。

数据库系统设计—订单销售数据库管理系统

数据库系统设计—订单销售数据库管理系统

长沙学院课程设计说明书题目 ______________________ 系(部) __________________ 专业(班级) ________ 姓名 ______ 学号 __________ 指导教师 ______ 起止日期 _______________________课程设计任务书课程名称:数据库系统原理设计题目:销售订单数据库管理系统1、某销售商的订单系统需要如下信息:每个供应商包含供应商编号、名称、地址、联系电话等信息。

每种产品包含产品号、产品名称、产品类别等信息。

每个供应商可供应多种产品,每种产品可由多个供应商供应。

客户包含编号、姓名、通信地址、电话等信息。

雇员包括编号、姓名、联系电话等信息。

订单包括订单号等信息。

一个客户可下多个订单,每个订单只能由一个客户下。

一个雇员可管理多个订单,每个订单只能由一个雇员管理。

一个订单订购多种产品,每种产品可在不同的订单中订购2、系统功能基本要求:按照一定条件查询、统计订单信息,例如订单量最多的客户或者产品。

能够模拟完成一个订单交易全过程。

设计工作量:40课时指导教师签名:日期:教研室主任签名:日期:长沙学院课程设计鉴定表目录一、引言 (6)1.1编写目的 (6)1.2参考资料 (6)二、需求规约 (7)2.1业务描述 (7)2.2需求分析 (7)三、数据库环境说明 (8)四、数据库的命名规则 (8)4.1数据库对象命名规则 (8)4.2数据项编码规则 (8)五、逻辑设计 (9)5.1ER图 (9)5.2关系模型 (9)六、物理设计 (10)6.1表汇总 (10)6.2表[1]:[S UPPLIERS表](供应商表) (10)6.3表[2]:[P RODUCT表](产品表) (11)6.4表[3]:[SP表](供应商产品供应表) (11)6.5表[4]:[O RDERS表](订单表) (12)6.6表[5]:[PO表](产品订购表) (13)6.7表[6]:[E MPLOYEE表](雇员表) (13)6.8表[7]:[C USTOMER表](客户表) (14)6.9视图的设计 (14)6.10存储过程的设计 (15)6.11触发器的设计 (19)6.12函数的设计 (19)七、安全性设计 (20)7.1防止用户直接操作数据库的方法 (20)7.1.1用户标识和鉴定 (20)7.1.2存取控制 (20)7.1.3数据加密 (20)7.2用户帐号密码的加密方法 (20)7.3角色与权限 (20)八、数据库管理与维护说明 (21)九、总结 (22)一、引言1.1 编写目的本文档是销售订单数据库管理系统设计文档的组成部分,编写数据库设计文档的目的是:明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发,本文档遵循《SQL SERVER 2008数据库设计和开发规范》。

某销售公司的数据库设计

某销售公司的数据库设计

数据库设计示例➢应用背景某销售公司的数据库需要如下的数据处理:•每月造一张月报表,表中包括信息:顾客订单号、订货日期、交货日期、产品号、产品名、产品类型、订购数量、单价、金额、顾客号、顾客姓名、地址。

•订货产品要组织货源,需要在终端上查询:输入:产品号输出:产品号、产品名、生产厂、出厂价、交货日期、交货数量•经理要了解某段时间的业务情况:输入:交货日期范围输出:客户所订货物的总数量、总金额•经理还要了解某段时间不同类型产品的订货情况:输入:订货日期范围输出:产品类型、订货数量、订货金额根据上述数据处理要求,设计并实现数据库系统。

现假设有如下的原始单据:订货单据销售单据➢数据库系统设计一、需求分析1、通过调研并收集原始单据得到需求信息。

2、进行需求分析,完成如下工作:(1)根据业务流程,绘制出数据流图(略)。

(2)汇总各类数据,产生数据字典(其中根据需要对部分作了调整,有些二、设计E—R图1、从需求信息中提取出实体根据需求信息,可提取如下5种实体,并补充部分属性:•产品(产品号,产品名,产品类型,规格型号,单位,数量,单价,金额,备注)•顾客(顾客号,顾客姓名,地址)•厂家(厂家编号,厂家名称)•销售单(编号,用户,订货日期,交货日期,合计金额,备注)•订货单(编号,厂家名称,订货日期,交货日期,备注)2、确定实体之间的联系,绘制出E—R图(1)设计分E-R图通过分析,把实体及其之间的联系用两个分E-R图描述•厂家、订货单、产品及其之间的联系每个订货单向一个厂家订货,同一厂家可多次订货;每个订货单只订购一种产品,每种产品可多次订货.…•产品、销售单、顾客及其之间的联系每个销售单可订购多种产品;每种产品销售给多个顾客;同一用户可多次订货;…(2)合并E-R图将上述E—R图合并:…三、E—R图转换为关系模式按照E-R图到的转换规则,可将E-R图转化为关系模式(其中的属性作一些调整)。

顾客(编号,姓名,地址,电话)厂家(厂家编号,…)产品(产品编号,产品名称,产品类型,型号,单位,数量,单价,金额)订货单(编号,订货日期,交货日期,厂家编号,产品编号,交货数量,出厂价,金额,备注)销售单(编号,顾客编号,订货日期,交货日期,合计金额,备注)销售明细(编号,产品编号,订货数量,单价,金额)…用表格形式详细说明各关系模式在SQL Server中的逻辑结构…四、设计物理结构数据库名称:XSXX1、文件的设置:•数据文件data。

订货数据库设计

订货数据库设计

学号:课程设计题目订货数据库设计学院计算机科学与技术学院专业计算机科学与技术班级姓名指导教师2014 年 1 月8 日课程设计任务书学生姓名:专业班级:指导教师:工作单位:计算机学院题目:订货数据库设计初始条件:在一个订货系统的数据库中,存有顾客、货物和订货单的信息。

●顾客(顾客号、收货地址、赊购限额、余额、折扣)●订货单(顾客号、收货地址、订货日期、订货细则)●订货细则(货物号、订货数量)●货物(货物号、制造厂商、厂商的实际存量、最低存货量、货物描述)要求完成的主要任务:1.根据上述的初始条件,进行调查分析并设计适当的属性。

设计一个订货数据库,DBMS可选Ms SQL Server、Oracle、MySQL等。

2.完成课程设计说明书,其格式遵守学校今年的新规定。

主要内容包括:需求分析,概念设计,逻辑设计,物理实现等。

3.基于该数据库,最好实现一个或多个应用程序(自己确定功能),程序设计语言(工具)任选。

这一项是选作,不作硬性要求。

时间安排:本学期第19周:1.理解课程设计任务,消化资料、系统调查1天2.系统分析,总体设计1天3.详细设计及实施,撰写课程设计报告2天4.课程设计验收1天指导教师签名:年月日系主任(或责任教师)签名:年月日订货数据库设计1.需求分析及说明:1.1需求分析和可行性分析:需求分析的任务是调查应用领域,对应用领域中各种应用的信息要求和操作要求进行详细分析,形成需求分析说明书。

需求分析过程一般分一下几个阶段:(1)调查组织机构的总体情况(2)熟悉各部门的业务活动情况(3)分析用户的需求(4)确定新系统的边界订货时很多发展的必然趋势,有人说订货的好坏,决定了当季销售业绩的一半。

订货一方面可以保证我们发货的总量维持不变,公司所发货品总数即为销售总数,这样可以为公司控制货品销售争取主动,能够较准确地掌控生产与库存总量;另一方面可以控制一定量的滞销款返回以促进其销售,为公司疏缓库存压力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

五、逻辑设计欧阳光明(2021.03.07)5.1 ER图5.2 关系模型供应商(供应商编号,名称,地址,联系电话)产品(产品编号,产品名称,产品类别,售价,出厂价,存货量)供应(供应商编号,产品编号)订购(产品编号,订单编号,数量)客户(客户编号,姓名,通信地址,电话)订单(订单编号,日期,客户编号,雇员编号)雇员(雇员编号,姓名,联系电话,工资)注:有下划线的表示该属性为主码。

六、物理设计6.1 表汇总6.2 表[1]:[ Suppliers表](供应商表)6.3 表[2]:[ Product表](产品表)6.4 表[3]:[ SP表](供应商产品供应表)6.5 表[4]:[ Orders表](订单表)6.6 表[5]:[ PO表](产品订购表)6.7 表[6]:[ Employee表](雇员表)6.8 表[7]:[ Customer表](客户表)6.9 视图的设计1、建立一张雇员信息的视图目的:屏蔽雇员的工资信息。

功能:能够向管理员提供简明,直接的雇员信息展示。

意义:有利于数据库安全的维护,防止任意修改数据库中的雇员信息。

create view view_Employee--建立Employee视图,屏蔽工资属性asselect Enumber,Ename,Etelnumfrom Employeewith check option;2、建立一张产品信息的视图目的:屏蔽产品的出厂价信息。

功能:能够向管理员提供简明,直接的产品信息展示。

意义:有利于数据库安全的维护,防止任意修改数据库中的产品信息。

create view view_Producte--建立Product视图,屏蔽出厂价属性asselect Pnumber,Pname,Pcategory,Pprice,Pinventoryfrom view_Productewith check option;6.10 存储过程的设计1、查询订单数量功能:查询订单的数量目的:存储查询订单数量的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchOrdersNum --查询订单的存储过程As select COUNT(*) '订单总数'--查询订单数量 from Orders;2、查询客户的订单信息功能:查询客户的订单信息目的:存储查询客户的订单信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_CustomerOrders--查询某个客户订单信息@Cname char(10) as select Onumber,Odate,Enumberfrom Orders,Customerwhere Cname like @Cname and umber like umber;3、查询订单最多的客户信息功能:查询订单最多的客户信息目的:存储查询订单最多的客户信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchMaxOrders--查询订单最多的客户信息asselect Cnumber,Cname,Caddress,Ctelnumfrom Orders,Customerwhere unmer=unmergroup by Cnumber having MAX(Cnumber);4、查询客户信息功能:查询客户信息目的:存储查询客户信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchCustomer--查询某客户信息@Cname char(10)asselect *from Customerwhere Cname=@Cname;5、查询雇员信息功能:查询雇员信息目的:存储查询雇员信息的操作骤create procedure procedure_SearchEmployee--查询某雇员信息@Ename char(10)asselect *from Employeewhere Ename=@Ename;6、查询某订单对应的产品信息功能:查询某订单对应的产品信息目的:存储查询某订单对应的产品信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_SearchPO--查询某订单的产品信息@Onumber char(12)asselectOnumber,Product.Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventor yfrom Product,POwhere Onumber=@Onumber and PO.Pnumber=Product.Pnumber;7、查询产品信息功能:查询产品信息目的:存储查询产品信息的操作骤create procedure procedure_SearchProduct--查询某产品信息@Pnumber char(12)asselect Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory,Snumber from Product,SPwhere Pnumber=@Pnumber and SP.Pnumber=@Pnumber;8、插入供应商信息功能:插入供应商信息目的:存储插入供应商信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_InsertSuppliers--插入供应商信息@Snumber char(12),@Sname char(30),@Saddress char(30),@Stelnum intasIF EXISTS(SELECT * FROM Suppliers WHERE Snumber=@Snumber) print'该供应商记录已经存在'ELSEinsert into Suppliers(Snumber,Sname,Saddress,Stelnum)values(@Snumber,@Sname,@Saddress,@Stelnum);9、插入订单信息功能:插入订单信息目的:存储插入订单信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_InsertOrders--插入订单表@Onumber char(12),@Odate date,,@Enumber char(12),@Cnumber char(12)asIF EXISTS(SELECT * FROM Orders WHERE Onumber=@Onumber) print'该订单记录已经存在'ELSEinsert into Orders(Onumber,Odate,Enumber,Cnumber)values(@Onumber,@Odate,@Enumber,@Cnumber);10、插入产品订购信息功能:插入产品订购信息目的:存储插入产品订购信息的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_InsertPO--插入产品订购表@Pnumber char(12),@Onumber char(12),@Quantity intasIF EXISTS(SELECT * FROM PO WHERE Pnumber=@Pnumber and Onumber=@Onumber)--当该订单已经订购改产品时不予重复订购print'该产品订购订单记录已经存在'IF EXISTS(SELECT * FROM Product WHERE Pinventory<@Quantity)--当库存量不足时不予订购print'该产品库存不足,无法订购'ELSEinsert into PO(Onumber,Pnumber,Quantity)values(@Onumber,@Pnumber,@Quantity);11、插入产品信息功能:插入产品信息目的:存储产品的操作意义:下次重复同样的动作时,可直接执行存储过程,简化操作步骤create procedure procedure_InsertProduct --插入产品信息@Pnumber char(12),@Pname char(30),@Pcategory char(15),@Pprice int,@Pex_price real,@Pinventory realasIF EXISTS(SELECT * FROM Product WHERE Pnumber=@Pnumber)--若有相同产品,只更新库存量update Productset Pinventory=Pinventory+@PinventoryELSEinsert into Product(Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory) values(@Pnumber,@Pname,@Pcategory,@Pprice,@Pex_price,@Pinven tory);12、完整的订单销售流程功能:插入订单信息和订购信息以及修改产品库存等信息目的:存储从客户下单到订单订购产品的流程的操作意义:直观展示订单销售流程,使用户能够更简明的执行完整的订单销售流程create procedure procedure_Order --完整的订单销售流程@Onumber char(12),@Odate date,,@Enumber char(12),@Cnumber char(12)@Pnumber char(12),@Onumber char(12),@Quantity intasIF EXISTS(SELECT * FROM Orders WHERE Onumber=@Onumber)--若有重复订单,则不予下单print'该订单记录已存在,不能重复下订单'ELSEinsert into Orders(Onumber,Odate,Enumber,Cnumber)values(@Onumber,@Odate,@Enumber,@Cnumber);IF EXISTS(SELECT * FROM PO WHERE Pnumber=@Pnumber and Onumber=@Onumber)--若有重复订购单,则不予订购print'该产品订购记录已存在,不能重复订购'ELSEIF EXISTS(SELECT * FROM Product WHERE Pinventory<@Quantity)--若产品库存量不足,则不予订购print'产品库存量不足,不能订购'ELSEinsert into PO(Onumber,Pnumber,Quantity)values(@Onumber,@Pnumber,@Quantity);6.11 触发器的设计1、建立触发器insert_PO:当插入了一条新的产品订购信息后,则激活该触发器,新的产品库存量等于旧库存量减去产品订购的数量。

相关文档
最新文档