订单销售数据库设计.docx
- 文档编号:6900962
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:14
- 大小:19.24KB
订单销售数据库设计.docx
《订单销售数据库设计.docx》由会员分享,可在线阅读,更多相关《订单销售数据库设计.docx(14页珍藏版)》请在冰豆网上搜索。
订单销售数据库设计
5.2关系模型
供应商(供应商编号,名称,地址,联系电话)
产品(产品编号,产品名称,产品类别,售价,出厂价,存货量)供应(供应商编号,产品编号)
订购(产品编号,订单编号,数量)
客户(客户编号,姓名,通信地址,电话)
订单(订单编号,日期,客户编号,雇员编号)
廉员(庭员编号,姓名,联系电话,工资)
注:
有下划线的表示该属性为主码。
六、物理设计
6.1表汇总
表名
功能说明
表Suppliers
供应商表,存储供应商的编号等信息
产品表,存储产品的编号、数量等信息
作鵜上
GB8878185555334563B
T9125XW
作者:
凤呜大王*
表Product
表SP
供应商产品供应表,存储供应商所供应的产品对应信息
表Orders
订单表,存储订单的编号、日期等信息
表P0
产品订购表,存储产品订购的对应信息
表Employee
雇员表,存储雇员的编号等信总
表Customer
客户表,存储客户的编号等信息
6.2表[1]:
[Suppliers表](供应商表)
表名
Suppliers(供应商表)
数据库用户
Sa
主键
Snumber
其他排序字段
无
索引字段
无
序号
字段名称
数据类型(精
度范鮒
允许为空Y/N
唯一
Y/N
区别度
默认值
约束条件/说明
1
Snumber
char(12)
X
Y
髙
无
主键/供应商号
2
Sname
char(30)
X
N
中
无
供应商划称
3
Saddress
char(30)
Y
X
中
无
作需丄
GB8878185555334563BT9125XW
作者:
凤呜大王*
供应商地址
4
Stelnum
int
Y
N
高
无
供应商电话
sql脚本
一建立供应商表
createtableSuppliers—供应商表
(Snumberchar(12)primarykey,—供应商编号,主码
Snamechar(30)notnull,—姓名
Saddresschar(30),--地址
Stelnumint—电话
);
6.3表⑵:
[Product表](产品表)
表名
Product(产品表)
数据库用户
sa
主键
Pnumber
其他排序字段
无
索引字段
无
序号
字段名称
数据类型(精度
范围〉
允许为空Y/N
唯一
Y/N
区别度
默认值
约束条件/说明
1
Pnumber
char(12)
N
Y
髙
无
主键/产品编号
2
Pname
char(30)
X
Y
高
作編号丄
GB8878185555334563BT9125XW
产品名称
作者:
凤呜大王*
无
3
Pcategory
char(15)
Y
N
低
无
产品类别
4
Pprice
int
Y
N
中
无
产品售价
5
Pexprice
real
Y
N
中
无
产品出厂价
6
Pinventory
real
Y
N
中
无
产品库存量
sql脚本
一建立产品表
createtableProduct―产品表
(Pnumberchar(12)primarykey,--产品编号,主码
Pnamechar(30)notnull,--产品名称
Pcategorychar(15),―产品类别--
Ppriceint,―售价一
Pex_pricereal,—出丿"价一
Pinventoryreal—存货量一
);
6.4表[3]:
[SP表](供应商产品供应表)
表名
SP(供应商产品供应表)
数据库用户
sa
主键
Snumber,Pnumber
其他排序字段
无
索引字段
无
序号
字段名称
数据类型(精度
范围〉
允许为空Y/N
唯一
Y/N
区别度
默认值
约束条件/说明
1
Snumber
char(12)
N
Y
髙
无
主键/供应商号
2
Pnumber
char(12)
N
Y
髙
无
主键/产品编号
sql脚木
一建立供应商产品供应表createtableSP--供应商供应产品表一(Snumberchar(12),—供应商编号,外码
Pnumberchar(12),—产品编号,外码
primarykey(Snumber,Pnumber),--联合主码
foreignkey(Pnumber)referencesProduct(Pnumber)ondeletecascadeonupdatecascade,
foreignkey(Snumber)referencesSuppliers(Snumber)
ondeletecascade
onupdatecascade
);
6.5表[4]:
[Orders表](订单表)
表名
Orders(订单表)
数据库用户
sa
主键■
Onumber
其他排序字段
无
索引字段
无
序号
字段名称
数据类型(精度
范围〉
允许为空
YX
唯一
Y/N
区别度
默认值
约束条件/说明
1
Onumber
char(12)
N
Y
髙
无
主键/订单号
2
Odate
date
N
N
低
无
订单日期
3
Enumber
char(12)
Y
N
中
无
雇员号
4
Cnumber
char(12)
N
N
髙
无
客户号
sql脚本
一建立订单表
createtableOrders―订单表
(Onumberchar(12)primarykey,--编号,主码
Odatedate,―日期
Enumberchar(12),―设置.雇员号,外码
Cnumberchar(12),―设置.客户号,外码
foreignkey(Cnumber)referencesCustomer(Cnumber)ondeletecascadeonupdatecascade,
foreignkey(Enumber)referencesEmployee(Enumber)ondeletecascadeonupdatecascade
);
6.6表[5]:
[P0表](产品订购表)
表名
P0(产品订购表)
数据库用户
sa
主键
Pnumber,Onumber
其他排序字段
无
索引字段
无
序号
字段名称
数据类型(精度
范囤〉
允许为空
YN
唯一
Y/N
区别度
默认值
约束条件/说明
1
Pnumber
char(12)
N
Y
髙
无
主键/产品号
2
Onumber
char(12)
N
Y
髙
无
主键/订单号
3
Quantity
int
N
N
低
无
订购产品数量
sql脚木
一建立产品订购表
createtableP0--产品订购表
(Pnumberchar(12),—产品编号
Onumberchar(12),―订单编号
Quantityint,―产品数量
primarykey(Pnumber,Onumber),--联合主码
foreignkey(Pnumber)referencesProduct(Pnumber)—夕卜码ondeletecascadeonupdatecascade,
foreignkey(Onumber)referencesOrders(Onumber)—夕卜码ondeletecascadeonupdatecascade
);
6.7表[6]:
[Employee表](雇员表)
表名
Employee(雇员表)
数据库用户
sa
主键
Enumber
其他排序字段
无
索引字段
无
序号
字段名称
数据类型(精度
范围〉
允许为空Y/N
唯一
Y/N
区别度
默认值
约束条件/说明
1
Enumber
char(12)
N
Y
髙
无
主键/雇员号
2
Ename
char(10)
N
N
中
无
雇员名称
3
Etelnum
int
N
Y
髙
无
雇员电话
4
Ewages
real
N
N
低
无
雇员薪资
sql脚木
一建立雇员表
createtableEmployee―雇员表
(Enumberchar(12)primarykey,--编号
Enamechar(10),--名字
Etelnumint,--电话
Ewagesreal—工资
);
6.8表[7]:
[Customer表](客户表)
Customer(客户表)
数据库用户
sa
主键
Cnumber
其他排序字段
无
索引字段
无
序号
字段名称
数据类型(精度
范囤)
允许为空Y/N
唯一
Y/N
区别度
默认值
约束条件/说明
1
Cnumber
char(12)
N
Y
髙
无
主键/客户表
2
Cname
char(10)
N
N
中
无
客户名称
3
Caddress
char(30)
Y
N
中
无
客户地址
4
Ctelnum
int
Y
Y
髙
无
客户电话
SCnamechar(10)asselectOnumber,Odate,Enumber
fromOrders,Customer
whereCnamelike@CnameandCustomer・CnumberlikeOrders.Cnumber;
3、查询订单最多的客户信息
功能:
查询订单最多的客户信息目的:
存储査询订单最多的客户信息的操
作
意义:
下次重复同样的动作时,可直接执行存储过程,简化操作步骤
createprocedureprocedure_SearchMaxOrders―查询订单最多的客户信息
as
selectCnumber,Cname,Caddress,Ctelnum
fromOrders,Customer
whereOrders・Cnunmer=Customer・Cnunmer
groupbyCnumberhavingMAX(Cnumber);
4、查询客户信息
功能:
査询客户信息目的:
存储查询客户信息的操作
意义:
下次重复同样的动作时,可宜接执行存储过程,简化操作步骤
createprocedureprocedure_SearchCustomer―查询某客户信息@Cnamechar(10)
as
select*
fromCustomer
whereCname=@Cname;
5、查询雇员信息
功能:
査询雇员信息目的:
存储查询雇员信息的操作
意义:
下次重复同样的动作时,可直接执行存储过程,简化操作步骤
createprocedureprocedure_SearchEmployee—查询某雇员信息@Enamechar(10)
as
select*
fromEmployee
whereEname^^Ename;
6、查询某订单对应的产品信息
功能:
査询某订单对应的产品信息目的:
存储査询某订单对应的产品信息
的操作
意义:
下次重复同样的动作时,可直接执行存储过程,简化操作步骤
createprocedureprocedure_SearchPO—查询某订单的产品信息
^Onumberchar(12)
as
selectOnumber,Product・Pnumber,Pname,Pcategory,Pprice,Pex_price,PinventoryfromProduct,P0
whereOnumber=@OnumberandPO・Pnumber=Product.Pnumber;
7、查询产品信息
功能:
査询产品信息目的:
存储查询产品信息的操作
意义:
下次重复同样的动作时,可直接执行存储过程,简化操作步骤createprocedureprocedure_SearchProduet一一查询某产品信息@Pnumberchar(12)
as
selectPnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory,Snumber
fromProduct,SP
wherePnumber=@PnumberandSP・Pnumber=@Pnumber;
8、插入供应商信息
功能:
插入供应商信息目的:
存储插入供应商信息的操作
意义:
下次重复同样的动作时,可直接执行存储过程,简化操作步骤createprocedureprocedure_InsertSuppliers一一插入供应商信息
SSnumberchar(12),©Snamechar(30),©Saddresschar(30),©Stelnumintas
IFEXISTS(SELECT*FROMSuppliersWHERESnumber=@Snumber)
print*该供应商记录已经存在’
ELSE
insertintoSuppliers(Snumber,Sname,Saddress,Stelnum)
values(©Snumber,@Sname,@Saddress,@Stelnum):
9、插入订单信息
功能:
插入订单信息目的:
存储插入订单信息的操作
意义:
下次重复同样的动作时,可直接执行存储过程,简化操作步骤
createprocedureprocedure_InsertOrders—插入订单表
@0numberchar(12),©Odatedate,,©Enumberchar(12),@Cnumberchar(12)as
IFEXISTS(SELECT*FROMOrdersWHERE0number=@0number)
print*该订单记录已经存在’
ELSE
insertintoOrders(Onumber,Odate,Enumber,Cnumber)
values(©Onumber,SOdate,SEnumber,@Cnumber);
10、插入产品订购信息
功能:
插入产品订购信息目的:
存储插入产品订购信息的操作
意义:
下次重复同样的动作时,可直接执行存储过程,简化操作步骤createprocedureprocedure_InsertPO--插入产品订购表©Pnumberchar(12),©Onumberchar(12),©Quantityintas
IFEXISTS(SELECT*FROMP0WHEREPnumber=@PnumberandOnumber=@Onumber)--当该订单已经订购改产品时不予重复订购
print1该产品订购订单记录已经存在’
IFEXISTS(SELECT*FROMProductWHEREPinventory<@Quantity)~当库存量不足时不予订购
print*该产品库存不足,无法订购’
ELSE
insertintoP0(0number,Pnumber,Quantity)
values(©Onumber,©Pnumber,^Quantity);
11、插入产品信息
功能:
插入产品信息目的:
存储产品的操作
意义:
下次重复同样的动作时,可直接执行存储过程,简化操作步骤
createprocedureprocedure_InsertProduct一一插入产品信息
@Pnumberchar(12),©Pnamechar(30),©Pcategorychar(15),©Ppriceint,@Pex_pricereal,©Pinventor3rreal
IFEXISTS(SELECT*FROMProductWHEREPnumber=@Pnumber)―若有相同产品,只更新库存量
updateProduct
setPinventory=Pinventory+@Pinventory
ELSE
insertintoProduct(Pnumber,Pname,Pcategory,Pprice,Pex_j?
rice,Pinventory)values(©Pnumber,©Pname,@Pcategory,©Pprice,@Pex_price,©Pinventory);
12、完整的订单销售流程
功能:
插入订单信息和订购信息以及修改产品库存等信息
目的:
存储从客户下单到订单订购产品的流程的操作
意义:
直观展示订单销售流程,使用户能够更简明的执行完整的订单销售流程createprocedureprocedure_Order―完整的订单销售流程
@0numberchar(12),©Odatedate,,©Enumberchar(12),@Cnumberchar(12)
SPnumberchar(12),©Onumberchar(12),©Quantityint
as
IFEXISTS(SELECT*FROMOrdersWHERE0number=@0number)—若有重复订单,则不予下单
print*该订单记录已存在,不能重复下订单’
ELSE
insertintoOrders(Onumber,Odate,Enumber,Cnumber)
values(©Onumber,@Odate,@Enumber,@Cnumber);
IFEXISTS(SELECT*FROMPOWHEREPnumber=@PnumberandOnumber=@*0number)--若有重复订购单,则不予订购
print*该产品订购记录已存在,不能重复订购’
ELSE
IFEXISTS(SELECT*FROMProductWHEREPinventory<@Quantity)~若产品库存量不足,则不予订购
print1产品库存量不足,不能订购’
ELSE
insertintoP0(0number,Pnumber,Quantity)
values(SCnumber,©Pnumber,^Quantity);
6.11触发器的设计
1、建立触发器insert_P0:
当插入了一条新的产品订购信息后,则激活该触发器,新的产品库存量等于旧库存量减去产品订购的数量。
功能:
能够根据数据库中数据的变化来自动进行数据更新操作。
目的:
将必备
的操作自动化。
意义:
为数据库用户提供一种简便操作,省去了逐项更改数据的麻烦。
createtriggerinsert_P0--AFTER触发器,当订购产品后,自动减少库存量
onpoafterinsert
foreachrow
asbegin
updateProductsetnew・Pinvento:
ry=old・Pinventory-new.Quantity;
end;
创作编号上
GB8878185555334563BT9125XW
创作肴:
凤呜大王*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 订单 销售 数据库 设计