大型oracle数据库设计 出租车管理系统
大型数据库技术设计报告
题 目:出租车驾驶员管理系统数据库设计 学生姓名: 贵仁豪 学 号: [1**********]2 专业班级: 计科13101班 同组姓名: 孙征宇 指导教师: 邹汉斌 设计时间: 2015年下学期
指导老师意见:
评定成绩:
签名:
日期:
需求分析
实现出租车基本信息管理,车辆违章管理, 驾驶员管理等功能,包括出租车信息的添加,修改,删除及查询;驾驶员信息的添加,修改,删除及查询。驾驶员违章记录查询功能等。
概念模型设计
1. 管理员局部E-R 模型设计(如图1所示)
图1管理员实体属性图
2. 出租车公司局部E-R 模型设计(如图2所示)
图2出租车公司实体属性图
3. 出租车信息局部E-R 模型设计(如图3所示)
图3出租车信息实体属性图
4. 司机信息局部E-R 模型设计(如图4所示)
图4司机信息实体属性图
5. 违章信息局部E-R 模型设计(如图2所示)
图5违章信息实体属性图
6. 整体E-R 模型设计(如图下图所示)
3. 逻辑结构设计
关系模型设计
1) 管理员实体对应的关系模型
管理员(管理员编号, 管理员姓名, 密码)
2) 出租车公司实体对应的关系模型
出租车(出租车公司编号, 公司名称, 管理员编号)
3) 出租车信息实体对应的关系模型
出租车信息(车辆编号, 出租车公司编号, 车型)
4) 司机信息实体对应的关系模型
司机信息(司机编号, 姓名, 车辆编号, 性别, 驾龄)
5) 违章信息实体对应的关系模型
违章信息(司机编号, 违章时间, 违章情况)
数据库表结构的设计
1. 管理员信息表
、
2. 出租车公司表
3. 出租车信息表
4. 司机信息表
5. 违章信息表
4. 数据库实现
1. 创建用户
以管理员身份登录数据库,创建新用户
create user lukai identified by itlook;
2. 为用户分配权限
grant create session,dba,resource to lukai
3. 用新创建的用户登录数据库
Conn lukai/itlook
4. 创建表空间
create tablespace car datafile 'E:\car.dbf' size 2m
autoextend on next 2m maxsize 20m extent management local;
alter user lukai default tablespace car
5. 在表空间上建立管理员表
create table managers (
manager_id varchar2(5) primary key , manager_name varchar2(10) not null , manager_password varchar2(15) not null ) tablespace car
6. 向管理员表中插入数据
insert into managers (manager_id, manager_name, manager_password) values
(1, ' 张少华' , 'asd123456' )
insert into managers (manager_id, manager_name, manager_password) values
(2, ' 刘俊' , 'lkj123456' )
insert into managers (manager_id, manager_name, manager_password) values
(3, ' 张森' , 'zhang6666' )
insert into managers (manager_id, manager_name, manager_password) values
(4, ' 杜鹏' , 'dupeng9999' )
insert into managers (manager_id, manager_name, manager_password) values
(5, ' 李悦' , 'liyue2222' )
insert into managers (manager_id, manager_name, manager_password) values
(6, ' 张菲' , 'zhanfei198' )
insert into managers (manager_id, manager_name, manager_password) values
(7, ' 刘帆运' , 'lfy1818188' )
insert into managers (manager_id, manager_name, manager_password) values
(8, ' 王进财' , 'wjc228228' )
insert into managers (manager_id, manager_name, manager_password) values
(9, ' 彭德华' , 'pdh666666' )
insert into managers (manager_id, manager_name, manager_password) values
(10, ' 曾幸福' , 'zxf299299' )
7. 查询管理员表中的记录
8. 在变空间上创建出租车公司表
create table car_mes( comaopny_id
varchar2(10),
company_name varchar2(20) not null, manager_Id varchar2(5), primary key (comaopny_id),
foreign key (manager_id) references managers(manager_id) )
9. 查询出租车表的记录
插入数据后查询
10. 在表空间上创建出租车信息表
create table car_mes( car_id varchar2(5),
taxi_company_id varchar2(10), car_type varchar2(10) not null , primary key (car_id),
foreign key (taxi_company_id) references car_company(company_id) )
11. 向出租车公司表中插入数据
insert into car_mes values ('1' , 'c1' , ' 捷达' )
insert into car_mes values ('2' , 'c2' , ' 捷达' )
insert into car_mes values ('3' , 'c3' , ' 捷达' )
insert into car_mes values ('4' , 'c4' , ' 桑塔纳' )
insert into car_mes values ('5' , 'c5' , ' 桑塔纳' )
insert into car_mes values ('6' , 'c6' , ' 桑塔纳' )
insert into car_mes values ('7' , 'c7' , ' 大众' )
insert into car_mes values ('8' , 'c8' , ' 大众' )
insert into car_mes values ('9' , 'c9' , ' 大众' )
insert into car_mes values ('10' , 'c10' , ' 大众' )
12. 查询出租车信息表中的记录
13. 在表空间上创建司机信息表
create table driver_mes( driver_id varchar2(5),
driver_name varchar2(10) not null , car_id varchar2(5), sex varchar2(2),
driver_years number (2), primary key (driver_id),
foreign key (car_id) references car_mes(car_id) )
14. 向司机信息表中插入数据
insert into driver_mes values (1, ' 刘飞' , '1' , ' 女' , 2)
insert into driver_mes values (2, ' 吴启华' , '2' , ' 男' , 5)
insert into driver_mes values (3, ' 张宇' , '3' , ' 男' , 4)
insert into driver_mes values (4, ' 程雨辰' , '4' , ' 男' , 5)
insert into driver_mes values (5, ' 单成玉' , '5' , ' 男' , 6)
insert into driver_mes values (6, ' 王晶晶' , '6' , ' 女' , 3)
insert into driver_mes values (7, ' 苏晓磊' , '7' , ' 男' , 5)
insert into driver_mes values (8, ' 张建林' , '8' , ' 男' , 7)
insert into driver_mes values (9, ' 范斌' , '9' , ' 男' , 7)
insert into driver_mes values (10, ' 保剑锋' , '10' , ' 男' , 8)
15. 查询司机信息表中的记录
16. 在表空间上创建违章信息表
create table break_rules( driver_id varchar2(5),
br_date varchar2(10) not null , situation varchar2(20),
primary key (driver_id, br_date),
foreign key (driver_id) references driver_mes(driver_id) )
17. 向违章信息表中插入数据
insert into break_rules values (1, '08-19-11:12', ' 超速' )
insert into break_rules values (2, '08-19-13:58', ' 闯红灯' )
insert into break_rules values (3, '08-19-14:23', ' 超速' )
insert into break_rules values (4, '08-19-10:15', ' 超速' )
insert into break_rules values (5, '08-19-11:35', ' 超速' )
insert into break_rules values (6, '08-19-14:56', ' 酒驾' )
insert into break_rules values (7, '08-19-15:39', ' 闯红灯' )
insert into break_rules values (8, '08-19-16:52', ' 超速' )
insert into break_rules values (9, '08-19-18:43', ' 超速' )
insert into break_rules values (10, '08-19-19:49', ' 闯红灯' )
18. 查询违章信息表中的记录
19. 为管理员姓名列创建索引
create index name_index
on managers (manager_name)
tablespace car
5. 数据查询
1. 查询管理员编号,管理员姓名,管理员密码
并按管理员编号升序排列
select manager_id, manager_name, manager_password from managers
order by manager_id
2. 查询姓张的管理员信息
select manager_id,manager_name,manager_password from managers
where manager_name like '张%'
3. 多表连接查询司机信息表中的
司机编号,司机姓名,性别,驾龄,车辆编号, 违章表的违章时间,违章情况
select driver_id, driver_name, car_id,
sex , driver_years br_date, situation
from driver_mes join break_rules
using (driver_id)
4. 多表连接查询违章情况为“闯红灯”的
司机姓名,车辆编号,驾龄,违章时间
select driver_name, car_id, sex , driver_years,
br_date from driver_mes join break_rules using (driver_id)
where situation =' 闯红灯'
5. 多表连接查询使用的出租车车型为“捷达”的
司机姓名,性别,出租车公司名称
select driver_name, sex , company_name
from driver_mes d , car_mes c1, car_company c2 where d.car_id=c1.car_id
and c1.taxi_company_id=c2.company_id
and car_type=' 捷达'
6. 查询驾龄最大的司机姓名,性别,及其驾驶的车辆编号,驾龄
select driver_name, sex
, car_id, driver_years from driver_mes
where driver_years=(select max (to_number(driver_years)) from driver_mes)
7. 查询驾龄在(3, 6)年的司机姓名,
驾龄,驾驶的车型,出租车公司
select driver_name,driver_years,car_type,company_name from driver_mes d,car_mes c1,car_company c2 where d.car_id=c1.car_id
and c1.taxi_company_id=c2.company_id and driver_years between 3 and 6
8. 查询管理员姓名中带有“财”字的
员工的姓名,及其所在的公司名称
select manager_name, company_name from managers
m , car_company c where m.manager_id=c.manager_id
and manager_name like '%财%'
9. 查询司机驾龄小于等于三年或大于等于七年的
司机姓名,驾龄,驾驶的车辆编号,车型
select driver_name, driver_years, d.car_id, car_type from driver_mes d , car_mes c where d.car_id=
c.car_id
and (d.driver_years=7)
10. 查询违章时间在10:10至17:30
的司机姓名,违章情况,违章时间,
车辆编号,出租车公司名称 select driver_name, situation , br_date,
d.car_id, company_name from break_rules b , driver_mes d , car_company cc , car_mes cm
where d.driver_id=b.driver_id and cc.company_id=cm.taxi_company_id
and cm.car_id=d.car_id
and br_date>='2015-08-19 10:10'
and br_date
创建视图
create or replace view br_situation as
select driver_id, situation , br_date
from break_rules
查询视图
6. 权限设置及数据库备份
1. 创建用户(leo )并为其分配权限
create user leo identified by leo ;
grant create session to leo ;
conn leo /leo ;