基于高斯DB的汽车运输数据库课程设计

举报
yd_231439917 发表于 2023/12/07 16:54:41 2023/12/07
【摘要】 分享一个基于高斯DB的汽车运输数据库课程设计

一、背景介绍:汽车运输系统

某汽车运输公司数据库中有三个实体,分别是车队、车辆、司机,车队属性有车队号、车队名;车辆属性有牌照号、生产厂家和出厂日期;司机属性有司机编号、姓名、联系电话。每个车队可以聘用若干个司机,但每个司机只能应聘于一个车队,车队聘用司机有个聘期;每个车队可以拥有若干个车辆,但每辆车只能属于一个车队;每个司机可以使多辆汽车,每辆汽车可以被多个司机使用,司机使用车辆有使用日期和公里数两个属性。


二、画出ER图






三、转换为关系模式

将ER图转换为关系模式,注明关系的属性、主键和外键。关系模式定义的写法举例如下:Table1(t1column1,t1column2,t1column3,…),主键t1column1,外键t1column2引用Table2表的t2column1。表名和列名请使用英文(或拼音)。具体转换如下:

motorcade(mid,mname)

主键(mid)



car(license,manufacturer,prod_date,cmid)

主键(license),外键cmid引用motorcade表的mid



driver(did,name,phone,dmid,employment)

主键(did),外键dmid引用motorcade表的mid



car_use(did,license,date,km)

主键(did,license),外键did引用driver表中did,外键license引用car表中license


四、使用华为云gaussDB实践

首先搭建数据库,进入官网点击控制台,在服务列表中选择选择“数据库 > 云数据库 GaussDB(for MySQL)”。进入云数据库 GaussDB信息页面

购买数据库实例,按需购买后进入数据库。

在其中建立和上述关系一致的物理表及表之间的关系等,在表中增加一定数量的测试数据(一般每张表至少10条数据)。完成后,使用“库管理”->“数据字典”->“导出PDF”,提交该PDF。PDF添加在了附件。

内如大致如下:


使用华为云高斯BD的数据生成功能,自动为数据表生成测试数据。

QQ图片2.jpg

数据插入完成后即可进行测试。

五、设计业务需求

分析你选择的应用场景,自行设计三个业务需求,在建立的数据库中定义成视图、存储过程、触发器或函数均可。

对这三个自行定义的视图、存储过程、触发器或函数,请分别给出:

(1)实现的业务需求描述

(2)创建时完整的SQL代码

(3)一个执行/触发/查询的例子,提供执行/触发/查询后的截图


设计业务需求如下:

(一)

①建立视图km_view,查询所有总公里数大于2的司机编号。

②sql代码如下

CREATE VIEW km_view

AS

(SELECT did FROM car_use

GROUP BY did

HAVING SUM(km)>2);

③执行结果如下,查询出来总公里数大于2的司机编号有3、4、5、6、7、9、10、11


(二)

①建立存储函数 get_phonenum 查询某个司机的联系电话

②sql代码如下

DROP FUNCTION IF EXISTS get_phonenum;

DELIMITER $

CREATE FUNCTION get_phonenum(str VARCHAR(32))

RETURNS INT

Reads SQL data

BEGIN

DECLARE phn INT;

SELECT phone INTO phn FROM driver WHERE name=str;

RETURN phn;

END $

DELIMITER ;

③执行结果如下,查询出来的司机联系电话为4294967295:


3.

①建立存储过程km_data,查询所有司机的平均公里数、最大公里数和最小公里数。

②sql代码如下:

DROP PROCEDURE IF EXISTS km_data;

DELIMITER $

CREATE PROCEDURE km_data()

BEGIN

SELECT AVG(km) AS 平均公里数,MAX(km) AS 最大公里数,MIN(km) AS 最小公里数 FROM car_use;

END $

DELIMITER ;

③执行结果如下,查询出来的所有司机的平均公里数、最大公里数和最小公里数分别为6.0、11和1公里:

综合上述描述,一个有关华为云guassDB的实践项目便已经完成,不仅丰富了对数据库实际操作的熟练程度,也感受到了华为guassDB的实用之处。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。