设计一个采购、销售和客户管理应用数据库
这是西安邮电大学软件工程数据库原理及应用的一次疫情期末大作业。如果觉得本文编辑不是很符合你的预期,可以加我QQ或者微信可提供当时写的word文档(私聊备注来意)
《数据库原理及应用》期末大作业
设计一个采购、销售和客户管理应用数据库,其中:一个供应商可以供应多种零件,一种零件也可以有多个供应商,一个客户订单可以订购多种供应商供应的零件。客户和供应商都分属不同的国家,而国家按世界五大洲四大洋划分地区。请进行数据库设计,要求包含7个实体:零件、供应商、客户、订单、订单项、国家、地区。每个实体都有一些属性,其中
零件:零件编号,零件名称,制造商,品牌,零售价格,备注
供应商:供应商编号,供应商名称,地址,国籍,电话,备注
客户:客户编号,客户名称,地址,电话,国籍,备注
订单:订单编号,订单状态,,订单总价,订单日期,订单优先级,记账员,备注
订单项:订单项编号,订购零件号,供应商号,零件数量,零件总价,折扣,税率
国家:国家编号,国家名称,所属地区,备注
地区:地区编号,地区名称,备注
要求完成:
1. 根据实际语义,分析实体之间的联系,确定实体之间联系的类型(一对一、一对多、多对多),给出实体联系图,即E-R图。
2. 叙述E-R图转换成关系模型的转换规则。
3. 按照第2题描述的转换规则把E-R图转换成关系模型(多个关系模式),并指出主码、外码。
4. 分析第3题得到的各个关系模式的范式等级。
5. 对于第3题得到的关系模型,使用以下表格形式详细说明每张表。
列名 | 数据类型 | 是否主码、外码 | 说明 |
---|---|---|---|
6. 使用SQL语言创建第4题各张表。
7. 自行设计一些插入、删除、修改、查询的操作,并使用SQL语言实现这些操作。
1.根据实际语义,分析实体之间的联系,确定实体之间联系的类型(一对一、一对多、多对多),给出实体联系图,即E-R图。
实体7个:零件、供应商、客户、订单、订单项、国家、地区。
其联系图如下:
2.叙述E-R图转换成关系模型的转换规则。
将每一个实体类型转换成-个关系模式,实体的属性为关系模式的属性。
(1) 实体集转换为关系:
实体集对应于一个关系
关系名:与实体集同名。
属性:实体集的所有属性。
主码:实体集的主码。
(2) 联系转换为关系:
联系转换成为关系模式。 联系转换成为关系模式时, 要根据联系方式的不同采用不同的转换方式
二元联系转换:
① 1:1 联系的转换方法
a) 将1:1联系转换为一个独立的关系:与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,且每个实体的码均是该关系的候选码。
b) 将1:1联系与某一端实体集所对应的关系合并,则需要在被合并关系中增加属性,其新增的属性为联系本身的属性和与联系相关的另一个实体集的码。
② 1:n 联系的转换方法
a)一种方法是将联系转换为一个独立的关系,其关系的属性由与该联系相连的各实体集的码以及联系本身的属性组成,而该关系的码为 n 端实体集的码;
b)另一种方法是在 n 端实体集中增加新属性,新属性由联系对应的 1 端实体集的码和联系自身的属性构成,新增属性后原关系的码不变。
③ m:n 联系的转换方法
在向关系模型转换时,一个 m:n 联系转换为一个关系。转换方法为:与该联系相连的各实体集的码以及联系本身的属性均转换为关系的属性,新关系的码为两个相连实体码的组合(该码为多属性构成的组合码)。
三元联系转换:
① 1:1:1联系的转换方法
可以在三个实体类型转换成的三个关系模式中任意一个关系模式的属性中加入另两个关系模式的键(作为外键)和联系类型的属性
② 1:1:N 联系的转换方法
1:1:N在N端实体类型转换成的关系模式中加入两个1端实体类型的键(作为外键)和联系类型的属性
③ 1:M:N 联系的转换方法
将联系类型也转换成关系模式,其属性为M端和N端实体类型的键(作为外键)加上联系类型的属性,而键为M端和N端实体键的组合
④ M:N:P 联系的转换方法
将联系类型也转换成关系模式,其属性为三端实体类型的键(作为外键)加上联系类型的属性,而键为三端实体键的组合。
3.按照第2题描述的转换规则把E-R图转换成关系模型(多个关系模式),并指出主码、外码。
E-R中7个实体共有7个联系,其中二元联系6个,三元联系一个。
1:N 联系(5个):
①
1 地区(地区编号,地区名称,备注)
主码:地区编号。
N 国家(国家编号,国家名称,所属地区,备注)
主码:国家编号。外码:地区编号。
关系 从属(地区编号,国家编号)
主码:国家编号
地区(地区编号,地区名称,备注)
国家(国家编号,国家名称,所属地区,备注,地区编号
②
1 国家(国家编号,国家名称,所属地区,备注)
主码:国家编号。
N 供应商(供应商编号,供应商名称,地址,国籍,电话,备注)
主码:供应商编号。外码:国家编号。
关系 包含(国家编号,供应商编号)
主码:供应商编号
国家(国家编号,国家名称,所属地区,备注)
供应商(供应商编号,供应商名称,地址,国籍,电话,备注,国家编号)
③
1 国家(国家编号,国家名称,所属地区,备注)
主码:国家编号。
N 客户(客户编号,客户名称,地址,电话,国籍,备注)
主码:客户编号。外码:国家编号。
关系 拥有(国家编号,客户编号)
主码:客户编号
国家(国家编号,国家名称,所属地区,备注)
客户(客户编号,客户名称,地址,电话,国籍,备注,国家编号)
④
1 客户(客户编号,客户名称,地址,电话,国籍,备注)
主码:客户编号。
N 订单(订单编号,订单状态,订单总价,订单日期,订单优先级,
记账员,备注)
主码:订单编号。外码:客户编号。
关系 签订(客户编号,订单编号)
主码:订单编号
客户(客户编号,客户名称,地址,电话,国籍,备注)
订单(订单编号,订单状态,,订单总价,订单日期,订单优先级,记账员,
备注,客户编号)
⑤
1 订单(订单编号,订单状态,订单总价,订单日期,订单优先级,
记账员,备注)
主码:订单编号。
N 订单项(订单项编号,订购零件号,供应商号,零件数量,
零件总价,折扣,税率)
主码:订单项编号。外码:订单编号。
关系 填写(订单编号,订单项编号)
主码:订单项编号
订单(订单编号,订单状态,订单总价,订单日期,订单优先级,记账员,备注)
订单项(订单项编号,订购零件号,供应商号,零件数量,零件总价,
折扣,税率,订单编号)
M:N 联系(1个):
1 供应商(供应商编号,供应商名称,地址,国籍,电话,备注)
主码:供应商编号。
N 零件(零件编号,零件名称,制造商,品牌,零售价格,备注)
主码:零件编号。外码:供应商编号。
关系 提供(供应商编号,零件编号,数量)
主码:供应商编号,零件编号。
供应商(供应商编号,供应商名称,地址,国籍,电话,备注)
零件(零件编号,零件名称,制造商,品牌,零售价格,备注)
提供(供应商编号,零件编号,数量)
1:1:N 联系(1个):
1 供应商(供应商编号,供应商名称,地址,国籍,电话,备注)
主码:供应商编号。
1 零件(零件编号,零件名称,制造商,品牌,零售价格,备注)
主码:零件编号。
N 订单项(订单项编号,订购零件号,供应商号,零件数量,
零件总价,折扣,税率)
主码:订单项编号。外码:供应商编号,零件编号。
关系 组成(供应商编号,零件编号,订单项编号。)
主码:订单项编号
供应商(供应商编号,供应商名称,地址,国籍,电话,备注)
零件(零件编号,零件名称,制造商,品牌,零售价格,备注)
订单项(订单项编号,订购零件号,供应商号,零件数量,零件总价,
折扣,税率,供应商编号,零件编号)
供
综上关系模型整理总结如下:(红色为主码,蓝色为外码)
1.地区(地区编号,地区名称,备注)
2.国家(国家编号,国家名称,所属地区,备注,地区编号)
3.零件(零件编号,零件名称,制造商,品牌,零售价格,备注)
4.客户(客户编号,客户名称,地址,电话,国籍,备注,国家编号)
5.供应商(客户商编号,供应商名称,地址,国籍,电话,备注,国家编号)
6.订单(订单编号,订单状态,订单总价,订单日期,订单优先级,记账员,备注,供客户编号)
7.订单项(订单项编号,订购零件号,供应商号,零件数量,零件总价,折扣,税率,订单编号,供应商编号,零件编号)
8.提供(供应商编号,零件编号,数量)
4.分析第3题得到的各个关系模式的范式等级。
1.地区(地区编号,地区名称,备注)
2.国家(国家编号,国家名称,所属地区,备注,地区编号)
3.零件(零件编号,零件名称,制造商,品牌,零售价格,备注)
4.客户(客户编号,客户名称,地址,电话,国籍,备注,国家编号)
5.供应商(供应商编号,供应商名称,地址,国籍,电话,备注,国家编号)
6.订单(订单编号,订单状态,订单总价,订单日期,订单优先级,记账员,
备注,客户编号)
7.订单项(订单项编号,订购零件号,供应商号,零件数量,零件总价,
折扣,税率,订单编号,供应商编号,零件编号)
8.提供(供应商编号,零件编号,数量)
第一范式(1NF)-字段不可再分
定义:若关系模式R的每个关系r的属性值都是不可分的原子值,则称R是第一范式1NF (First Normal Form)的模式。
包含关系模式:1、2、3、4、5、6、7、8
第二范式(2NF)-字段和完整主键有关系
定义:1.对于FD W→A,若存在X⊆W有X→A成立,则称W→A是局部依赖(A局部依赖于W);否则称W→A是完全依赖。完全依赖也称为“左部不可约依赖”。2.若A是关系模式R中候选键属性,则称A是R的主属性:否则称A是R的非主属性。3.若关系模式R是1NF,且每个非主属性完全函数依赖于候选键,则称R是第二范式(2NF)的模式。若数据库模式中每个关系模式都是2NF,则称数据库模式为2NF的数据库模式。
包含关系模式:1、2、3、4、5、6、7
第三范式(3NF)-字段和主键是直接关系
定义:1.若x→Y, Y→A, 且Y-/->x和A⫋Y,则称X→A是传递依赖(A传递依赖于X)。2. 若关系模式R是1NF,且每个非主属性都不传递依赖于R的候选键,则称 R是第三范式(3NF)的模式。若数据库模式中的每个关系模式都是3NF,则称其为3NF的数据库模式。3NF的目的是消除非主属性对键的传递函数依赖。
包含关系模式:1、3
5.对于第3题得到的关系模型,使用以下表格形式详细说明每张表。
1.地区region:
列名 | 数据类型 | 是否主码、外码 | 说明 |
---|---|---|---|
Region_Id | INT | 是 | 地区编号 |
Region_Name | VARCHAR(20) | 否 | 地区名称 |
remarks | VARCHAR(20)) | 否 | 备注 |
2.国家country:
列名 | 数据类型 | 是否主码、外码 | 说明 |
---|---|---|---|
Country_Id | INT | 是 | 国家编号 |
Country_Name | VARCHAR(20) | 否 | 国家名称 |
Area | VARCHAR(20) | 否 | 所属地区 |
remarks | VARCHAR(20) | 否 | 备注 |
Region_Id | INT | 是 | 地区编号 |
3.零件part:
列名 | 数据类型 | 是否主码、外码 | 说明 |
---|---|---|---|
Part_Id | INT | 是 | 零件编号 |
Part_Name | VARCHAR(20) | 否 | 零件名称 |
Manufacturer | VARCHAR(20) | 否 | 制造商 |
Brand | VARCHAR(20) | 否 | 品牌 |
Price | INT | 否 | 价格 |
remarks | VARCHAR(20) | 否 | 备注 |
4.客户customer:
列名 | 数据类型 | 是否主码、外码 | 说明 |
---|---|---|---|
Customer_Id | INT | 是 | 客户编号 |
Customer_Name | VARCHAR(20) | 否 | 客户姓名 |
Customer_Address | VARCHAR(20) | 否 | 地址 |
Customer_Tel | VARCHAR(20) | 否 | 电话 |
Customer_Nationality | VARCHAR(20 | 否 | 国籍 |
remarks | VARCHAR(20) | 否 | 备注 |
Country_Id | INT | 是 | 国家编号 |
5.供应商supplier:
列名 | 数据类型 | 是否主码、外码 | 说明 |
---|---|---|---|
Supplierr_Id | INT | 是 | 供应商编号 |
Supplierr_Name | VARCHAR(20) | 否 | 供应商名称 |
Supplier_Address | VARCHAR(20) | 否 | 地址 |
Supplier_Tel | VARCHAR(20) | 否 | 电话 |
Supplier_Nationality | VARCHAR(20 | 否 | 国籍 |
remarks | VARCHAR(20) | 否 | 备注 |
Country_Id | INT | 否 | 国家编号 |
6.订单torder:
列名 | 数据类型 | 是否主码、外码 | 说明 |
---|---|---|---|
Order_Id | INT | 是 | 订单编号 |
Order_State | VARCHAR(20) | 否 | 订单状态 |
Totalprice | INT | 否 | 订单总价 |
Order_date | VARCHAR(20) | 否 | 订单日期 |
priority | VARCHAR(20 | 否 | 订单优先级 |
Bookkeeper | VARCHAR(20) | 否 | 记账员 |
remarks | VARCHAR(20) | 否 | 备注 |
Customer_Id | INT | 是 | 客户编号 |
订单项OrderItem与提供关系Provide_relationships因为篇幅原因在此省略
6.使用SQL语言创建第4题各张表。
建库 create database IF NOT EXISTS WY;
查看库 show databases;
使用库 use WY;
查看库中表 show tables;
开始建表:
1.地区表
DROP TABLE IF EXISTS region;
CREATE TABLE region (
Region_Id INT PRIMARY KEY ,
Region_Name VARCHAR(20) ,
remarks VARCHAR(20) DEFAULT ‘该地区无备注’
);
2.国家表
DROP TABLE IF EXISTS country;
CREATE TABLE country (
Country_Id INT PRIMARY KEY,
Country_Name VARCHAR(20),
Area VARCHAR(20),
remarks VARCHAR(20) DEFAULT ‘该国家无备注’,
Region_Id int,
FOREIGN KEY (Region_Id) REFERENCES region(Region_Id)
);
3.零件表
DROP TABLE IF EXISTS part;
CREATE TABLE part (
Part_Id INT PRIMARY KEY,
Part_Name VARCHAR(20),
Manufacturer VARCHAR(20),
Brand VARCHAR(20),
Price INT,
remarks VARCHAR(20) DEFAULT ‘该零件无备注’
);
4.客户表
DROP TABLE IF EXISTS customer;
CREATE TABLE customer (
Customer_Id INT PRIMARY KEY,
Customer_Name VARCHAR(20),
Customer_Address VARCHAR(20),
Customer_Tel VARCHAR(20),
Customer_Nationality VARCHAR(20),
remarks VARCHAR(20) DEFAULT ‘该客户无备注’,
Country_Id int,
FOREIGN KEY (Country_Id) REFERENCES country(Country_Id)
);
5.供应商表
DROP TABLE IF EXISTS supplier;
CREATE TABLE supplier (
Supplier_Id INT PRIMARY KEY,
Supplier_Name VARCHAR(20),
Supplier_Address VARCHAR(20),
Supplier_Tel VARCHAR(20),
Supplier_Nationality VARCHAR(20),
remarks VARCHAR(20) DEFAULT ‘该供应商无备注’,
Country_Id int
);
6.订单表
DROP TABLE IF EXISTS torder;
CREATE TABLE torder (
Order_Id INT PRIMARY KEY,
Order_State VARCHAR(20),
Totalprice int,
Order_date VARCHAR(20),
priority VARCHAR(20),
Bookkeeper VARCHAR(20),
remarks VARCHAR(20) DEFAULT ‘该订单无备注’,
Customer_Id int,
FOREIGN KEY (Customer_Id) REFERENCES customer(Customer_Id)
);
订单项表,订单项表省略
查看库中表 show tables;
7.自行设计一些插入、删除、修改、查询的操作,并使用SQL语言实现这些操作。
如下对region地区表操作,
插入操作:
insert into region (Region_Id,Region_Name)values (1,‘亚洲’);
insert into region (Region_Id,Region_Name)values (2,‘美洲’);
insert into region (Region_Id,Region_Name)values (3,‘澳洲’);
select * from region;
修改操作:
update region set Region_Id=5,Region_Name=‘南极洲’ where Region_Id=3;
删除操作:
delete from region where Region_Id=5;
查询操作:
select Region_Name from region;
如果需要所有SQL代码 可私聊获得