基于高斯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的数据生成功能,自动为数据表生成测试数据。
数据插入完成后即可进行测试。
五、设计业务需求
分析你选择的应用场景,自行设计三个业务需求,在建立的数据库中定义成视图、存储过程、触发器或函数均可。
对这三个自行定义的视图、存储过程、触发器或函数,请分别给出:
(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的实用之处。
- 点赞
- 收藏
- 关注作者
评论(0)