计一个采购、销售和客户管理应用数据库。其中,一个供应商可以供应多种零件,一种零件也可以有多个供应商。一个客户订单可以订购多种供应商供应的零件。客户和供应商都分属不同的国家,而国家按世界五大洲、八大洋划分地区。 请实现该数据库的设计,并通过 SQL 语句完成数据库模式、基本表的创建,以及数据的插入、更新、查询等操作。
时间: 2024-02-09 11:07:13 浏览: 227
关于数据库的采购管理系统
4星 · 用户满意度95%
好的,根据您的需求,我为您设计了一个包含以下表的数据库:
1. 供应商表(supplier):记录供应商的信息,包括供应商编号、供应商名称、所在国家、联系人、联系电话等字段。
2. 零件表(part):记录零件的信息,包括零件编号、零件名称、描述、单价等字段。
3. 供应表(supply):记录供应商和零件之间的供应关系,包括供应商编号、零件编号、供应价、供应能力等字段。
4. 客户表(customer):记录客户的信息,包括客户编号、客户名称、所在国家、联系人、联系电话等字段。
5. 订单表(order):记录客户订单的信息,包括订单编号、客户编号、订单日期等字段。
6. 订单明细表(order_detail):记录订单中每个零件的信息,包括订单编号、零件编号、订购数量等字段。
7. 国家表(country):记录国家的信息,包括国家编号、国家名称、所属洲、所属洋等字段。
根据以上表的设计,以下是 SQL 语句实现数据库模式、基本表的创建:
```
-- 创建国家表
CREATE TABLE country (
country_id INT PRIMARY KEY,
country_name VARCHAR(50),
continent VARCHAR(50),
ocean VARCHAR(50)
);
-- 创建供应商表
CREATE TABLE supplier (
supplier_id INT PRIMARY KEY,
supplier_name VARCHAR(50),
country_id INT,
contact_name VARCHAR(50),
contact_phone VARCHAR(50),
FOREIGN KEY (country_id) REFERENCES country(country_id)
);
-- 创建零件表
CREATE TABLE part (
part_id INT PRIMARY KEY,
part_name VARCHAR(50),
description VARCHAR(100),
price DECIMAL(10, 2)
);
-- 创建供应表
CREATE TABLE supply (
supplier_id INT,
part_id INT,
supply_price DECIMAL(10, 2),
supply_capacity INT,
PRIMARY KEY (supplier_id, part_id),
FOREIGN KEY (supplier_id) REFERENCES supplier(supplier_id),
FOREIGN KEY (part_id) REFERENCES part(part_id)
);
-- 创建客户表
CREATE TABLE customer (
customer_id INT PRIMARY KEY,
customer_name VARCHAR(50),
country_id INT,
contact_name VARCHAR(50),
contact_phone VARCHAR(50),
FOREIGN KEY (country_id) REFERENCES country(country_id)
);
-- 创建订单表
CREATE TABLE order (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
FOREIGN KEY (customer_id) REFERENCES customer(customer_id)
);
-- 创建订单明细表
CREATE TABLE order_detail (
order_id INT,
part_id INT,
quantity INT,
PRIMARY KEY (order_id, part_id),
FOREIGN KEY (order_id) REFERENCES order(order_id),
FOREIGN KEY (part_id) REFERENCES part(part_id)
);
```
接下来,我为您提供一些 SQL 语句示例,以便进行数据的插入、更新、查询等操作:
1. 插入数据:
```
-- 插入国家数据
INSERT INTO country (country_id, country_name, continent, ocean) VALUES
(1, '中国', '亚洲', '太平洋'),
(2, '美国', '北美洲', '大西洋');
-- 插入供应商数据
INSERT INTO supplier (supplier_id, supplier_name, country_id, contact_name, contact_phone) VALUES
(1, '供应商A', 1, '张三', '13812345678'),
(2, '供应商B', 2, 'John Doe', '1-800-555-5555');
-- 插入零件数据
INSERT INTO part (part_id, part_name, description, price) VALUES
(1, '零件A', '描述A', 10.99),
(2, '零件B', '描述B', 20.99);
-- 插入供应数据
INSERT INTO supply (supplier_id, part_id, supply_price, supply_capacity) VALUES
(1, 1, 9.99, 100),
(1, 2, 19.99, 50),
(2, 2, 18.99, 200);
-- 插入客户数据
INSERT INTO customer (customer_id, customer_name, country_id, contact_name, contact_phone) VALUES
(1, '客户A', 1, '李四', '13912345678'),
(2, '客户B', 2, 'Jane Doe', '1-800-555-5556');
-- 插入订单数据
INSERT INTO order (order_id, customer_id, order_date) VALUES
(1, 1, '2022-01-01'),
(2, 2, '2022-01-02');
-- 插入订单明细数据
INSERT INTO order_detail (order_id, part_id, quantity) VALUES
(1, 1, 5),
(1, 2, 10),
(2, 2, 20);
```
2. 更新数据:
```
-- 更新零件B的价格为25.99
UPDATE part SET price = 25.99 WHERE part_name = '零件B';
-- 更新供应商A的联系人为王五
UPDATE supplier SET contact_name = '王五' WHERE supplier_name = '供应商A';
```
3. 查询数据:
```
-- 查询所有供应商的名称、所在国家、联系人和电话
SELECT supplier_name, country_name, contact_name, contact_phone FROM supplier
JOIN country ON supplier.country_id = country.country_id;
-- 查询客户A的所有订单及其明细
SELECT * FROM order
JOIN order_detail ON order.order_id = order_detail.order_id
WHERE order.customer_id = 1;
-- 查询所有供应商提供的零件及其价格
SELECT supplier_name, part_name, supply_price FROM supply
JOIN supplier ON supply.supplier_id = supplier.supplier_id
JOIN part ON supply.part_id = part.part_id;
```
以上仅为示例 SQL 语句,具体的数据操作需要根据您的实际需求进行调整。
阅读全文