0


客户订购登记管理系统(数据库)

一、功能概述

    1. 订单处理部负责处理客户的订单和库存。

    2. 如果一个客户可以有一份或多份订单,每份订单可以订购一种或多种商品。每份订单有一张发票,客户可以通过多种方式来支付货款,例如支票、信用卡或者现金。处理这个客户订购登记的职工的名字也要记录下来。

    3. 部门工作人员负责整理订单并根据库存情况处理订单。如果订单上的产品在库存中有,就可以直接发货,发货方式也有多种;如果订单上的产品在库存中没有,就不需要登记订购的产品或者订购其他产品。

效果展示:

二、概念设计

局部E-R图

    1.职工与订单的发货关系以及订单与发票的开具关系的局部E-R图,如图局部E-R图。

     2.客户与职工的接待关系,客户与订单的支付关系,订单与商品的订购关系的局部E-R图

全局E-R图

三、逻辑结构设计

将上述的全局E-R图转换为关系模式

商品(商品编号, 商品名,商品单价, 商品库存, 订单号)

主码: 商品编号

客户(客户号, 客户姓名, 客户电话, 客户地址,职工编号)

主码:客户号

订单(订单号, 出单日期, 商品数量, 客户号,职工编号)

主码:订单号

职工(职工编号, 职工姓名, 职工岗位)

主码: 职工编号

发票(发票编号, 开具日期, 金额, 支付方法, 订单号)

主码: 发票编号

关系模式评价:属于2NF,订单号->客户号, 客户号->职工编号,订单号->职工编号, 存在传递依赖。

优化:

商品(商品编号, 商品名,商品单价, 商品库存, 订单号)

主码: 商品编号

客户(客户号, 客户姓名, 客户电话, 客户地址,职工编号)

主码:客户号

订单(订单号, 出单日期, 商品数量, 客户号)

主码:订单号

职工(职工编号, 职工姓名, 职工岗位)

主码: 职工编号

发票(发票编号, 开具日期, 金额, 支付方法, 订单号)

主码: 发票编号

四、物理结构设计

根据上述关系模式创建数据库,创建数据表,插入适当的数据

创建数据库

CREATE DATABASE CP

创建数据表

--1.建立职工表(包含职工编号(主码),职工姓名,职工岗位)
CREATE TABLE administrator(
    ad_num char(10) PRIMARY KEY,
    ad_name char(20),
    ad_job char(20)
)

--2.建立客户表
CREATE TABLE customer(
    cus_num char(10) PRIMARY KEY,
    cus_name VARCHAR(20) NOT NULL,
    cus_tel VARCHAR(11),
    cus_address VARCHAR(20),
    ad_num char(10),
    FOREIGN KEY (ad_num) REFERENCES administrator (ad_num)
)

--3.建立订单表
CREATE TABLE cp_order(
    order_num VARCHAR(10) PRIMARY KEY,
    order_date DATE,
    cus_num CHAR(10),
    goods_totalnum INT,
    FOREIGN KEY (cus_num) REFERENCES customer (cus_num)
)

--4.建立商品表
CREATE TABLE goods(
    goods_num char(10) PRIMARY KEY,
    goods_name VARCHAR(20) NOT NULL,
    goods_price FLOAT NOT NULL,
    goods_storenum int NOT NULL,
    order_num VARCHAR(10),
    FOREIGN KEY (order_num) REFERENCES cp_order(order_num)
)

--5.建立发票表
CREATE TABLE invoice(
    inv_num char(10) PRIMARY KEY,
    inv_date DATE,
    inv_price FLOAT,
    inv_payway char(20),
    order_num varchar(10),
    FOREIGN KEY (order_num) REFERENCES cp_order(order_num)
)

插入表数据

--1.插入员工表数据。
INSERT INTO administrator VALUES
('2021001','张三','CEO'),
('2021002','李四','CFO'),
('2021003','王五','员工'),
('2021004','赵六','员工'),
('2021005','李七','员工')

--2.插入客户表数据
INSERT INTO customer VALUES
('001','小一','10251375582','台湾1号','2021001'),
('002','小二','10255375583','台湾2号','2021001'),
('003','小三','14257375584','台湾3号','2021001'),
('004','小四','18254375585','台湾4号','2021002'),
('005','小五','17254375586','台湾5号','2021002'),
('006','老六','14254375587','台湾6号','2021003'),
('007','小七','13259375588','台湾7号','2021004'),
('008','小八','12256375589','台湾8号','2021005')

--3.插入订单表数据
INSERT INTO cp_order VALUES
('H001','2021-10-30','001',8),
('H002','2021-10-30','002',500),
('H003','2021-10-31','003',100),
('H004','2021-11-11','004',60),
('H005','2021-11-1','005',10),
('H006','2021-11-11','006',500),
('H007','2021-11-11','007',100),
('H008','2021-11-11','008',150)

--4.插入商品表数据
INSERT INTO goods VALUES
('A001','假发',99.99,5,'H001'),
('A002','假牙',999.99,3,'H001'),
('A005','假药',0.99,500,'H002'),
('D040','脱发膏',8.8,100,'H003'),
('S011','生发剂',12.5,60,'H004'),
('G001','护发素',20,10,'H005'),
('W006','牙刷',2.5,500,'H006'),
('W007','毛巾',10.5,100,'H007'),
('W008','牙膏',15.5,50,'H008'),
('W009','杯子',6.6,100,'H008')

--5.插入发票表数据
INSERT INTO invoice VALUES
('F001','2021-10-30',3499.65,'欠账','H001'),
('F002','2021-10-30',495,'危心支付','H002'),
('F003','2021-10-31',880,'吱富包支付','H003'),
('F004','2021-11-11',750,'危心支付','H004'),
('F005','2021-11-1',200,'危心支付','H005'),
('F006','2021-11-11',1250,'吱富包支付','H006'),
('F007','2021-11-11',1050,'吱富包支付','H007'),
('F008','2021-11-11',1435,'银行卡支付','H008')

--6.更新数据内容:订单若超过1000元优惠总价格的3%,若超过5000元优惠总价格的5%。
--订单价格小于1000
UPDATE invoice
SET fin_price = inv_price
WHERE inv_price<1000

--订单价格在1000和5000之间
UPDATE invoice
SET fin_price = inv_price * (1-0.03)
WHERE inv_price>=1000 AND inv_price <5000

--订单价格在5000以上
UPDATE invoice
SET fin_price = inv_price * (1-0.05)
WHERE inv_price >= 5000

创建视图

--1.可选商品视图(库存商品要大于0)
CREATE VIEW available_goods (商品名,库存数量,商品单价) AS 
SELECT goods_name,goods_storenum,goods_price
FROM goods
WHERE goods_storenum>0

--2.订单的商品信息视图(商品号,商品名,商品单价,选购数量)
CREATE VIEW order_goods(商品号,商品名,商品单价,选购数量)AS 
SELECT goods.goods_num,goods_name,goods_price,cp_order.goods_totalnum
FROM goods INNER JOIN cp_order ON goods.order_num = cp_order.order_num

--3.每种产品的订购情况视图
CREATE VIEW goods_order(商品号,商品名,订单号) AS 
SELECT goods_num,goods_name,order_num
FROM goods

--4.已开具发票的视图,其中包含每个订单的执行情况。
CREATE VIEW invoice_order (发票号,订单日期,支付情况,订单号) AS 
SELECT inv_num AS 发票号,inv_date AS 订单日期,inv_payway AS 支付情况,order_num AS 订单号
FROM invoice
标签: 数据库 mysql

本文转载自: https://blog.csdn.net/Aweone/article/details/128128895
版权归原作者 Aweone 所有, 如有侵权,请联系我们删除。

“客户订购登记管理系统(数据库)”的评论:

还没有评论