订单销售数据库设计文档格式.docx
《订单销售数据库设计文档格式.docx》由会员分享,可在线阅读,更多相关《订单销售数据库设计文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
6.2表[1]:
[Suppliers表](供应商表)
Suppliers(供应商表)
数据库用户
Sa
主键
Snumber
其他排序字段
无
索引字段
序号
字段名称
数据类型(精度范围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1
char(12)
N
Y
高
主键/供应商号
2
Sname
char(30)
中
供应商名称
3
Saddress
供应商地址
4
Stelnum
int
供应商电话
sql脚本
--建立供应商表
createtableSuppliers--供应商表
(Snumberchar(12)primarykey,--供应商编号,主码
Snamechar(30)notnull,--
Saddresschar(30),--地址
Stelnumint--
);
6.3表[2]:
[Product表](产品表)
Product(产品表)
sa
Pnumber
主键/产品编号
Pname
产品名称
Pcategory
char(15)
低
产品类别
Pprice
产品售价
5
Pex_price
real
产品出厂价
6
Pinventory
产品库存量
--建立产品表
createtableProduct--产品表
(Pnumberchar(12)primarykey,--产品编号,主码
Pnamechar(30)notnull,--产品名称
Pcategorychar(15),--产品类别--
Ppriceint,--售价--
Pex_pricereal,--出厂价--
Pinventoryreal--存货量--
6.4表[3]:
[SP表](供应商产品供应表)
SP(供应商产品供应表)
Snumber,Pnumber
--建立供应商产品供应表
createtableSP--供应商供应产品表--
(Snumberchar(12),--供应商编号,外码
Pnumberchar(12),--产品编号,外码
primarykey(Snumber,Pnumber),--联合主码
foreignkey(Pnumber)referencesProduct(Pnumber)
ondeletecascade
onupdatecascade,
foreignkey(Snumber)referencesSuppliers(Snumber)
onupdatecascade
6.5表[4]:
[Orders表](订单表)
Orders(订单表)
Onumber
主键/订单号
Odate
date
订单日期
Enumber
雇员号
Cnumber
客户号
--建立订单表
createtableOrders--订单表
(Onumberchar(12)primarykey,--编号,主码
Odatedate,--日期
Enumberchar(12),--设置雇员号,外码
Cnumberchar(12),--设置客户号,外码
foreignkey(Cnumber)referencesCustomer(Cnumber)
foreignkey(Enumber)referencesEmployee(Enumber)
6.6表[5]:
[PO表](产品订购表)
PO(产品订购表)
Pnumber,Onumber
主键/产品号
Quantity
订购产品数量
--建立产品订购表
createtablePO--产品订购表
(Pnumberchar(12),--产品编号
Onumberchar(12),--订单编号
Quantityint,--产品数量
primarykey(Pnumber,Onumber),--联合主码
foreignkey(Pnumber)referencesProduct(Pnumber)--外码
foreignkey(Onumber)referencesOrders(Onumber)--外码
6.7表[6]:
[Employee表](雇员表)
Employee(雇员表)
主键/雇员号
Ename
char(10)
雇员名称
Etelnum
雇员电话
Ewages
雇员薪资
--建立雇员表
createtableEmployee--雇员表
(Enumberchar(12)primarykey,--编号
Enamechar(10),--名字
Etelnumint,--
Ewagesreal--工资
6.8表[7]:
[Customer表](客户表)
Customer(客户表)
主键/客户表
Cname
客户名称
Caddress
客户地址
Ctelnum
客户电话
--建立客户表
createtableCustomer--客户表
(Cnumberchar(12)primarykey,--编号
Cnamechar(10),--
Caddresschar(30),--地址
Ctelnumint--
6.9视图的设计
1、建立一张雇员信息的视图
目的:
屏蔽雇员的工资信息。
功能:
能够向管理员提供简明,直接的雇员信息展示。
意义:
有利于数据库安全的维护,防止任意修改数据库中的雇员信息。
createviewview_Employee--建立Employee视图,屏蔽工资属性
as
selectEnumber,Ename,Etelnum
fromEmployee
withcheckoption;
2、建立一张产品信息的视图
屏蔽产品的出厂价信息。
能够向管理员提供简明,直接的产品信息展示。
有利于数据库安全的维护,防止任意修改数据库中的产品信息。
createviewview_Producte--建立Product视图,屏蔽出厂价属性
selectPnumber,Pname,Pcategory,Pprice,Pinventory
fromview_Producte
6.10存储过程的设计
1、查询订单数量
查询订单的数量目的:
存储查询订单数量的操作
下次重复同样的动作时,可直接执行存储过程,简化操作步骤
createprocedureprocedure_SearchOrdersNum--查询订单的存储过程
AsselectCOUNT(*)'
订单总数'
--查询订单数量fromOrders;
2、查询客户的订单信息
查询客户的订单信息目的:
存储查询客户的订单信息的操作
createprocedureprocedure_CustomerOrders--查询某个客户订单信息
Cnamechar(10)asselectOnumber,Odate,Enumber
fromOrders,Customer
whereCnamelikeCnameandCustomer.CnumberlikeOrders.Cnumber;
3、查询订单最多的客户信息
查询订单最多的客户信息目的:
存储查询订单最多的客户信息的操作
createprocedureprocedure_SearchMaxOrders--查询订单最多的客户信息
selectCnumber,Cname,Caddress,Ctelnum
whereOrders.Cnunmer=Customer.Cnunmer
groupbyCnumberhavingMAX(Cnumber);
4、查询客户信息
查询客户信息目的:
存储查询客户信息的操作
createprocedureprocedure_SearchCustomer--查询某客户信息
Cnamechar(10)
select*
fromCustomer
whereCname=Cname;
5、查询雇员信息
查询雇员信息目的:
存储查询雇员信息的操作
createprocedureprocedure_SearchEmployee--查询某雇员信息
Enamechar(10)
whereEname=Ename;
6、查询某订单对应的产品信息
查询某订单对应的产品信息目的:
存储查询某订单对应的产品信息的操作
createprocedureprocedure_SearchPO--查询某订单的产品信息
Onumberchar(12)
selectOnumber,Product.Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory
fromProduct,PO
whereOnumber=OnumberandPO.Pnumber=Product.Pnumber;
7、查询产品信息
查询产品信息目的:
存储查询产品信息的操作
createprocedureprocedure_SearchProduct--查询某产品信息
Pnumberchar(12)
selectPnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory,Snumber
fromProduct,SP
wherePnumber=PnumberandSP.Pnumber=Pnumber;
8、插入供应商信息
插入供应商信息目的:
存储插入供应商信息的操作
createprocedureprocedure_InsertSuppliers--插入供应商信息
Snumberchar(12),Snamechar(30),Saddresschar(30),Stelnumint
IFEXISTS(SELECT*FROMSuppliersWHERESnumber=Snumber)
print'
该供应商记录已经存在'
ELSE
insertintoSuppliers(Snumber,Sname,Saddress,Stelnum)
values(Snumber,Sname,Saddress,Stelnum);
9、插入订单信息
插入订单信息目的:
存储插入订单信息的操作
createprocedureprocedure_InsertOrders--插入订单表
Onumberchar(12),Odatedate,,Enumberchar(12),Cnumberchar(12)
IFEXISTS(SELECT*FROMOrdersWHEREOnumber=Onumber)
该订单记录已经存在'
insertintoOrders(Onumber,Odate,Enumber,Cnumber)
values(Onumber,Odate,Enumber,Cnumber);
10、插入产品订购信息
插入产品订购信息目的:
存储插入产品订购信息的操作
createprocedureprocedure_InsertPO--插入产品订购表
Pnumberchar(12),Onumberchar(12),Quantityint
IFEXISTS(SELECT*FROMPOWHEREPnumber=PnumberandOnumber=Onumber)--当该订单已经订购改产品时不予重复订购
该产品订购订单记录已经存在'
IFEXISTS(SELECT*FROMProductWHEREPinventory<
Quantity)--当库存量不足时不予订购
该产品库存不足,无法订购'
insertintoPO(Onumber,Pnumber,Quantity)
values(Onumber,Pnumber,Quantity);
11、插入产品信息
插入产品信息目的:
存储产品的操作
createprocedureprocedure_InsertProduct--插入产品信息
Pnumberchar(12),Pnamechar(30),Pcategorychar(15),Ppriceint,Pex_pricereal,Pinventoryreal
IFEXISTS(SELECT*FROMProductWHEREPnumber=Pnumber)--若有相同产品,只更新库存量
updateProduct
setPinventory=Pinventory+Pinventory
insertintoProduct(Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory)
values(Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory);
12、完整的订单销售流程
插入订单信息和订购信息以及修改产品库存等信息
存储从客户下单到订单订购产品的流程的操作
直观展示订单销售流程,使用户能够更简明的执行完整的订单销售流程
createprocedureprocedure_Order--完整的订单销售流程
IFEXISTS(SELECT*FROMOrdersWHEREOnumber=Onumber)--若有重复订单,则不予下单
该订单记录已存在,不能重复下订单'
IFEXISTS(SELECT*FROMPOWHEREPnumber=PnumberandOnumber=Onumber)--若有重复订购单,则不予订购
该产品订购记录已存在,不能重复订购'
Quantity)--若产品库存量不足,则不予订购
产品库存量不足,不能订购'
6.11触发器的设计
1、建立触发器insert_PO:
当插入了一条新的产品订购信息后,则激活该触发器,新的产品库存量等于旧库存量减去产品订购的数量。
能够根据数据库中数据的变化来自动进行数据更新操作。
目的:
将必备的操作自动化。
为数据库用户提供一种简便操作,省去了逐项更改数据的麻烦。
createtriggerinsert_PO--AFTER触发器,当订购产品后,自动减少库存量
onpoafterinsert
foreachrow
asbegin
updateProductsetnew.Pinventory=old.Pinventory-new.Quantity;
end;