5.某单位公用车辆后勤服务部门数据库的部分关系模式如下:
驾驶员:EMP(Eno,Ename, Age, Sex, telephone),各属性分别表示驾驶员工号、姓名、年龄、性别和电话号码;
车辆:CAR(Cno,Brand,Capacity),各属性分别表示汽车车牌号、品牌名和排量;
调度:SCHEDULE(Sno,Eno,Cno,StartTime, Endtime),各属性分别表示调度号、驾驶员工号、汽车车牌号、发车时间和收车时间。
奖金:BONUS(Eno,Year,Month,Amount),各属性分别表示驾驶员工号、年、月和当月的奖金数量。
有关车辆调度的相关说明如下:
公车的行驶时间只能在工作时间内,因此规定调度表中每天安排发车的时间在上午07:00:00至下午18:00:00范围内。(
【问题1】(4分)
请将下面创建调度关系的SQL语句的空缺部分补充完整,要求指定关系的主码、外码,以及调度表中每天安排发车的时间在上午07:00:00至下午18:00:00范围内的约束(由函数
Time Get_time(DATETIME StartTime)返回出车的时间)。
CREATE TABLE SCHEDULE(
Sno CHAR(10),
Eno CHAR(10) (a) ,
Cno CHAR(8) (b) ,
StartTime DATETIME (c) ,
EndTime DATETIME,
PRIMARY KEY (d) );
【问题2】(6分)
(1)创建所有'奥迪'品牌汽车的调度信息的视图AudiSCHEDULE,属性有Eno、Ename、Cno、Brand、StartTime和EndTime,请将下面SQL语句的空缺部分补充完整。
CREATE (e)
AS
SELECT EMP,Eno,Ename, CAR,Cno,Brand, StartTime, EndTime
FROM EMP,CAR, SCHEDULE
WHERE (f)
(2)驾驶员的奖金在收车时间写入时,由出车时间段自动计算,并用触发器来实现奖金的自动维护,函数float Bonus_value(DATETIME StartTime, DATETIME EndTime)依据发车时间和收车时间来计算本次出车的奖金。系统在每月初自动增加一条该员工的当月奖金记录,初始金额为零。请将下面SQL语句的空缺部分补充完整。
CREATE (g) Bonus_TRG AFTER (h) ON SCHEDULE
REFERENCING new row AS nrow
FOR EACH ROW
BEGIN
UPDATE BONUS
SET (i)
WHERE (j) AND Year=Get_Year(nrow.StartTime)
AND Month= Get_Month(nrow.StartTime) ;
END
【问题3】(5分)
请将下面SQL语句的空缺郜分补充完整。
(1)查询调度次数最多的汽车车牌号及其品牌。
SELECT CAR.Cno,Brand
FROM CAR, SCHEDULE
WHERE CAR.Cno =SCHEDULE.Cno
GROUP BY (k)
HAVING (l) (SELECT COUNT(*)
FROM SCHEDULE
CROUP BY Cno);
(2)查询所有在调度表中没有安排过“大金龙”品牌车辆的驾驶员工号和姓名。
SELECT Eno,Ename
FROM EMP
WHERE Eno (m) (
SELECT Eno
FROM (n)
WHERE (o)
AND brand= ‘大金龙');