一、实验项目名称:数据库设计实验
二、实验环境
openGauss数据库、Windows 11操作系统、eclipse java IDE
三、实验内容
本实验旨在设计并实现一个关系数据库系统,用于管理一家国产汽车公司的业务数据。该系统将涉及数据库的概念设计、逻辑设计、实施、操作和维护,以及相关应用程序的开发。选定的汽车公司(例如比亚迪、长城、吉利或奇瑞)需处理包括车辆、品牌、车型、配置、经销商、供应商和客户信息等数据。
- 实体联系模型(E-R模型)
车辆实体:包含唯一的车辆识别号(VIN),以及与品牌、车型和配置相关的属性。
品牌实体:描述公司旗下不同品牌的信息。
车型实体:每个品牌下的具体车型信息。
配置实体:车辆的详细配置信息,如颜色、发动机排量、变速器等。
经销商实体:经销商的基本信息及其销售记录。
供应商实体:供应零件的供应商信息及其供应的零件详情。
客户实体:购车客户的个人信息及购买记录。
- 关系模型
从E-R模型到关系模型的转换:将E-R模型转换为初始的关系模型,并根据规范化理论对其进行优化。
数据库实施:基于OPENGAUSS平台创建关系数据库,定义表结构、索引和约束。
- 数据初始化
数据生成:模拟或抓取真实数据,生成初步测试数据,填充到数据库中。
数据校验:确保数据的完整性和有效性。
- 查询和数据分析
销售趋势分析:展示过去三年各品牌的销售趋势,按年、月分列,并按购买者性别和收入范围分类。
缺陷追踪:根据供应商信息,追踪存在缺陷的变速器,并找出受影响的车辆VIN及其客户。
品牌销售排名:分析过去一年的销售额和单位销售额,确定前两大品牌。
单月最佳销售车型:确定某个车型(如H4)在哪个月销售最佳。
库存分析:找出平均库存时间最长的经销商。
- 应用程序设计
程序目标:设计一个应用程序,实现上述查询和数据分析功能。
技术选型:根据需求选择C++、Java或Python语言,可以是单机版、GUI应用程序或Web应用。
程序结构:描述应用程序的架构、模块和用户界面设计。
四、实验过程
1、构建E-R模型
2、构建关系模型
实体:
车辆(VIN,颜色,发动机排量,型号,制造商号),VIN为主键,型号为外键。
车型(型号,品牌名),型号为主键,品牌名为外键。
品牌(品牌名),品牌名就是主键。
供应商(供应商ID,供应商名),供应商ID为主键。
客户(客户ID,地址,电话,年收入,姓名,性别),其中客户ID为主键。
经销商(经销商名),经销商名为主键。
联系:
供应(型号,供应商ID,零件种类,供应日期),型号和供应商名为主键。
购买(VIN,经销商名,购买日期),VIN和经销商名为主键。
销售(经销商名,客户ID,成交价格,日期,VIN),经销商名和客户ID和VIN构成主键。
3、基于OPENGAUSS 创建该关系数据库
车辆Vehicle(VIN,颜色,发动机排量,型号,制造商号),VIN为主键,型号为外键。
属性名 |
数据类型 |
对应英文名 |
VIN |
varchar(17) |
VIN |
颜色 |
varchar(50) |
color |
发动机排量 |
int |
engine_displacement |
型号 |
varchar(255) |
type_name |
制造商号 |
varchar(255) |
manufacturer |
车型cartype(型号,品牌名),型号为主键,品牌名为外键。
品牌brand(品牌名),品牌名就是主键。
属性名 |
数据类型 |
对应英文名 |
型号 |
varchar(255) |
type_name |
品牌名 |
varchar(255) |
brand |
供应商supplier(供应商ID,供应商名),供应商ID为主键。
属性名 |
数据类型 |
对应英文名 |
供应商ID |
Varchar(17) |
supplyid |
供应商名 |
varchar(255) |
supplier |
客户customer(客户ID,地址,电话,年收入,姓名,性别),其中客户ID为主键。
属性名 |
数据类型 |
对应英文名 |
客户ID |
varchar(12) |
customer_id |
地址 |
varchar(255) |
address |
电话 |
varchar(11) |
phone_number |
年收入 |
int |
income |
姓名 |
varchar(255) |
name |
性别 |
varchar(10) |
sex |
经销商(经销商名),经销商名为主键。
属性名 |
数据类型 |
对应英文名 |
经销商名 |
varchar(255) |
distributor |
供应supply(型号,供应商ID,零件种类,供应日期),型号和供应商名为主键。
属性名 |
数据类型 |
对应英文名 |
型号 |
varchar(255) |
type_name |
供应商ID |
Varchar(17) |
supplyid |
零件种类 |
varchar(255) |
part_type |
供应日期 |
date |
supply_date |
购买purchase(VIN,经销商名,购买日期),VIN和经销商名为主键。
属性名 |
数据类型 |
对应英文名 |
VIN |
varchar(17) |
VIN |
经销商名 |
varchar(255) |
distributor |
购入日期 |
date |
purchase_date |
销售(经销商名,客户ID,成交价