oracle数据库建模(影音租赁系统)与实现
映像租赁系统:
在美国,由于知识产权得到了很好的保护,
所以一般不会出现盗版的问题。美国人除
去在电影院看电影之外就是在影像店租碟
回家去看。在这种情况下,影相出租的店
铺就比较多。在信息化的背景下,设计一
套系统管理影像出租业务成了当务之急,
于是通过和店铺经理沟通,获得如下业
务信息:
1.凡是想要到该影像店租赁影碟的被
称为会员(Member),只有成为该店的会
员才能够租借该店的影像资料(Title)。
2 影像店中不定期会购买一些影像资料(Title),并且获得了复制该影像资料的权
力,每一份影像制品可以有多个拷贝,每一份拷贝称为一个复制条目(TitleCopy)
3 对客户而言,原始的影像资料(Title)只能被预定并且可以同时接受多份预
定(Reservation),客户可以租赁的是影像拷贝(TitleCopy),
4 任何一个客户的租赁信息(Rental)都必须存档以便将来店铺对客户的租赁进行评估。
通过和租赁店经理详细面谈,了解更详细的业务的信息:
1 每一个会员必须被记录的信息包括会员编号id,而且每个会员的编号是唯一的,
姓名name, 成为会员的日期join_date,以及其他需要被记录的信息包括(住宅地址
address, 所在城市city, 住宅电话phone).
2 影像制品(Title)必须被记录的信息包括编号id,而且所有影像制品的编号都是
唯一的,标题title,影片说明description,价格price,和其他如下信息(分
级rating,种类category, 发行日期release_date).
3 每一份影像拷贝(TitleCopy)都有各自的编号id,同一个影像的若干拷贝编号
不同,但是不同的影像拷贝的编号可能会重复。必须记录下是否已经出租,以便于
店员随时能够查询拷贝资料的当前状态(status)。
4 系统中允许会员预定某项影像资料,但必须提前预约租赁时间(res_date)。
5 每一项出租事项需要记录下来(租借日期book_date,实际归还日期act_ret_date,
期待归还日期/过期日期(exp_ret_date)。
作业要求:
1 实体关系模型
ER图:
#:唯一
*:非空
#*:主键
o:可空
2 表实例图
#Member
column name |
id |
last_name |
first_name |
join_date |
address |
city |
phone |
key type |
pk |
||||||
nulls/unique |
nn/u |
nn |
nn |
||||
Fk table |
|||||||
dataType |
number |
varchar2 |
varchar2 |
date |
varchar2 |
varchar2 |
varchar2 |
maxlength |
8 |
20 |
20 |
20 |
20 |
20 |
建表语句:
create table Member(
id number(8) constraint member_id_pk primary key,
last_name varchar2(20) not null,
first_name varchar2(20),
join_date date not null,
address varchar2(20) ,
city varchar2(20),
phone varchar2(20)
);
样例数据入库:
insert into MEMBER values(1,'xuande','liu',to_date ( '2007-12-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),'金水区','郑州市','13289653856');
insert into MEMBER values(2,'zhongmou','sun',to_date ( '2007-12-21 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),'金水区','郑州市','13289653856');
insert into MEMBER values(3,'mengde','cao',to_date ( '2008-12-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),'金水区','郑州市','13289653866');
insert into MEMBER values(4,'yunchang','guan',to_date ( '2008-12-21 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),'金水区','郑州市','13289653876');
insert into MEMBER values(5,'yide','zhang',to_date ( '2009-12-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),'金水区','郑州市','13289653857');
insert into MEMBER values(6,'mengqi','ma',to_date ( '2009-12-21 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),'金水区','郑州市','13289653858');
insert into MEMBER values(7,'hansheng','huang',to_date ( '2010-12-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),'金水区','郑州市','13289653859');
insert into MEMBER values(8,'zijian','cao',to_date ( '2010-12-21 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),'金水区','郑州市','13289653850');
insert into MEMBER values(9,'fengxian','lv',to_date ( '2011-12-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),'金水区','郑州市','13289653851');
insert into MEMBER values(10,'gongjin','zhou',to_date ( '2011-12-21 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),'金水区','郑州市','13289653852');
commit;
#Title
column name |
id |
title |
description |
price |
rating |
category |
release_date |
key type |
pk |
||||||
nulls/unique |
nn/u |
nn |
nn |
nn |
|||
Fk table |
|||||||
dataType |
number |
varchar2 |
varchar2 |
number |
varchar2 |
varchar2 |
date |
maxlength |
8 |
20 |
40 |
8 |
20 |
20 |
建表语句:
create table Title(
id number(8) constraint title_id_pk primary key,
title varchar2(20) not null,
description varchar2(20) not null,
price number (8) not null,
rating varchar2(20),
category varchar2(20),
release_date date
);
样例数据入库:
insert into TITLE values(1,'钢铁侠1','钢铁侠1的简介',48,'一级','科幻',to_date ( '2007-12-21' , 'YYYY-MM-DD'));
insert into TITLE values(2,'钢铁侠2','钢铁侠2的简介',48,'一级','科幻',to_date ( '2007-12-21' , 'YYYY-MM-DD'));
insert into TITLE values(3,'钢铁侠3','钢铁侠3的简介',48,'一级','科幻',to_date ( '2007-12-21' , 'YYYY-MM-DD'));
insert into TITLE values(4,'钢铁侠4','钢铁侠4的简介',48,'一级','科幻',to_date ( '2007-12-21' , 'YYYY-MM-DD'));
insert into TITLE values(5,'钢铁侠5','钢铁侠5的简介',48,'一级','科幻',to_date ( '2007-12-21' , 'YYYY-MM-DD'));
insert into TITLE values(6,'钢铁侠6','钢铁侠6的简介',48,'一级','科幻',to_date ( '2007-12-21' , 'YYYY-MM-DD'));
insert into TITLE values(7,'钢铁侠7','钢铁侠7的简介',48,'一级','科幻',to_date ( '2007-12-21' , 'YYYY-MM-DD'));
insert into TITLE values(8,'钢铁侠8','钢铁侠8的简介',48,'一级','科幻',to_date ( '2007-12-21' , 'YYYY-MM-DD'));
insert into TITLE values(9,'钢铁侠9','钢铁侠9的简介',48,'一级','科幻',to_date ( '2007-12-21' , 'YYYY-MM-DD'));
insert into TITLE values(10,'钢铁侠10','钢铁侠10的简介',48,'一级','科幻',to_date ( '2007-12-21' , 'YYYY-MM-DD'));
insert into TITLE values(11,'钢铁侠11','钢铁侠11的简介',58,'一级','科幻',to_date ( '2007-12-21' , 'YYYY-MM-DD'));
commit;
#Title_Copy
column name |
id |
title_id |
status |
key type |
pk |
||
nulls/unique |
nn/u |
nn |
nn |
Fk table |
Title |
||
dataType |
number |
number |
number |
maxlength |
8 |
8 |
8 |
status:0未租赁,1已租赁
建表语句:
create table Title_Copy(
id number(8) primary key,
title_id number(8) references Title(id) not null,
status number(8) not null
);
样例数据入库:
insert into title_copy values(11,1,0);
insert into title_copy values(21,2,0);
insert into title_copy values(31,3,0);
insert into title_copy values(41,4,0);
insert into title_copy values(51,5,0);
insert into title_copy values(61,6,0);
insert into title_copy values(71,7,0);
insert into title_copy values(81,8,0);
insert into title_copy values(91,9,0);
insert into title_copy values(101,10,0);
commit;
#Reservation(预约)
column name |
member_id |
title_id |
res_date |
key type |
fk |
fk |
pk |
nulls/unique |
nn |
nn |
nn/u |
Fk table |
Member |
Title |
|
dataType |
number |
number |
date |
maxlength |
8 |
8 |
建表语句:
create table Reservation(
res_date date primary key,
member_id number(8) references Member(id) not null,
title_id number(8) references Title(id) not null
);
样例数据入库:
insert into reservation values(to_date('2013-1-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),1,1);
insert into reservation values(to_date('2013-2-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),2,2);
insert into reservation values(to_date('2013-3-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),3,3);
insert into reservation values(to_date('2013-4-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),4,4);
insert into reservation values(to_date('2013-5-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),5,5);
insert into reservation values(to_date('2013-6-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),6,7);
insert into reservation values(to_date('2013-7-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),7,6);
insert into reservation values(to_date('2013-8-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),8,8);
insert into reservation values(to_date('2013-9-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),9,9);
insert into reservation values(to_date('2013-10-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ),10,10);
insert into reservation values(sysdate-2,1,10);
insert into reservation values(sysdate-1,2,10);
insert into reservation values(sysdate,3,9);
commit;
#Rental(租赁)
column name |
member_id |
titleCopy_id |
book_date |
exp_ret_date |
act_ret_date |
key type |
fk |
fk |
pk |
||
nulls/unique |
nn |
nn |
nn/u |
||
Fk table |
Member |
Title_Copy |
|||
dataType |
number |
number |
date |
date |
date |
maxlength |
8 |
8 |
建表语句:
create table Rental(
book_date date primary key,
member_id number(8) references Member(id) not null,
titleCopy_id number(8) references Title_Copy(id) not null,
exp_ret_date date,
act_ret_date date
);
样例数据入库:
insert into rental values(to_date('2012-1-10 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),1,11,to_date('2012-1-25 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),to_date('2012-1-21 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'));
insert into rental values(to_date('2012-2-10 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),2,21,to_date('2012-2-25 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),to_date('2012-2-22 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'));
insert into rental values(to_date('2012-3-10 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),3,31,to_date('2012-3-25 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),to_date('2012-3-23 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'));
insert into rental values(to_date('2012-4-10 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),4,41,to_date('2012-4-25 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),to_date('2012-4-24 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'));
insert into rental values(to_date('2012-5-10 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),5,51,to_date('2012-5-25 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),to_date('2012-5-25 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'));
insert into rental values(to_date('2012-6-10 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),6,61,to_date('2012-6-25 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),to_date('2012-6-26 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'));
insert into rental values(to_date('2012-10-7 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),7,71,to_date('2012-10-9 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),to_date('2012-10-8 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'));
insert into rental values(to_date('2012-10-1 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),8,101,to_date('2012-10-5 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),to_date('2012-10-6 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'));
insert into rental values(to_date('2012-9-10 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),9,91,to_date('2012-10-10 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'));
insert into rental values(to_date('2012-10-10 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'),10,101,to_date('2012-10-14 18:31:34' , 'YYYY-MM-DD HH24:MI:SS'));
commit;
3 建表语句
4 样例数据入库(insert语句,每个表插入10条样例数据)
5 业务逻辑实现(select语句)
业务逻辑实现:
1 查询出所有用户以及用户所借阅的影像资料名字和借阅的日期
select m.id member_id,m.last_name,m.first_name,t.title,r.book_date
from member m,title t,rental r,title_copy c
where m.id=r.member_id
and r.titlecopy_id=c.id
and c.title_id=t.id
2 查询出最近一周订阅影像资料的用户和相应的影像资料名字及借阅日期
假设当天是2012-10-13
select m.id member_id,m.last_name,m.first_name,t.title,r.book_date
from member m,title t,rental r,title_copy c
where m.id=r.member_id
and r.titlecopy_id=c.id
and c.title_id=t.id
and r.book_date between trunc(to_date('2012-10-13','YYYY-MM-DD')-7) and to_date('2012-10-13','YYYY-MM-DD');
3 查询出本周日应该归还的影像资料和借阅者的姓名,地址
select m.id member_id,m.last_name,m.first_name,m.address,t.title,r.exp_ret_date
from member m,title t,rental r,title_copy c
where m.id=r.member_id
and r.titlecopy_id=c.id
and c.title_id=t.id
and trunc(r.exp_ret_date)=trunc(next_day(to_date('2012-10-13','YYYY-MM-DD'),1));
4 查询出已经超期还未归还的影像资料和借阅者的姓名,地址
select m.id member_id,m.last_name,m.first_name,m.address,t.title,r.exp_ret_date,r.act_ret_date
from member m,title t,rental r,title_copy c
where m.id=r.member_id
and r.titlecopy_id=c.id
and c.title_id=t.id
and r.exp_ret_date<to_date('2012-10-13','YYYY-MM-DD') and r.act_ret_date is null;
5 查询出最近一月借阅次数最多的影像资料
select *
from (select t.title, count(r.book_date) count
from title t, title_copy c, rental r
where r.titlecopy_id = c.id
and c.title_id = t.id
and r.book_date between
trunc(add_months(to_date('2012-10-13', 'YYYY-MM-DD'), -1)) and
to_date('2012-10-13', 'YYYY-MM-DD')
group by t.title
order by count desc)
where count =
(select max(count)
from (select t.title, count(r.book_date) count
from title t, title_copy c, rental r
where r.titlecopy_id = c.id
and c.title_id = t.id
and r.book_date between
trunc(add_months(to_date('2012-10-13', 'YYYY-MM-DD'),
-1)) and
to_date('2012-10-13', 'YYYY-MM-DD')
group by t.title
order by count desc))
6 查询出已经登记但是还没有拷贝的影像资料
select * from title t
where id not in
(select title_id
from title_copy
)
7 查询出本周预定最多的影像资料
现在时间:2014-4-1 16:54
select *
from title
where id in (select id
from (select t.id id, count(r.res_date) count
from title t, reservation r
where r.title_id = t.id
group by t.id
order by count desc)
where count = (select max(count)
from (select t.id, count(r.res_date) count
from title t, reservation r
where r.title_id = t.id
group by t.id
order by count desc)))
oracle数据库建模(影音租赁系统)与实现相关推荐
- oracle数据库生产,从安装系统到oracle数据库生产环境(centos6.8)搭建
大纲服务器安装 JDK配置 Oracle数据库安装配置 1.安装服务器 服务器的安装参考这篇教程 关于安装中可能出现的几个问题,在这里进行解决: 1.使用u盘安装完后,系统进入GRUB引导,无法启动: ...
- oracle数据库卷管理,AIX系统逻辑卷管理
前言: 前期项目需要部署多套AIX环境下RAC集群,之前很少接触AIX系统,上来被创建逻辑卷等基本命令打脸了,其实网上搜下资料很多,总结一下,也是方便自己日后查阅. 创建逻辑卷 1.查看所有磁盘设备 ...
- oracle 表建模工具,Oracle数据库建模工具(ModelRight for Oracle)下载 V4.0 官方版 - 比克尔下载...
ModelRight for Oracle是一款Oracle数据库建工具,有了它你就不用在敲那么多的命令了,只需要点几下鼠标就可以创建出一个数据库模型,然后根据模型来制作数据库,不仅简单,也不容易出错 ...
- linux冷备份oracle数据库,Linux余Windows系统Oracle数据库简单冷备同步
我们有一个重视财务数据安全性的财务系统.同时,我们有两个系统,一个生产环境(Linux)和一个紧急备份环境(Windows).备份环境实现了到生产环境的实时备份同步.还有两种备份方法:热备用和冷备用. ...
- 数据库作业——汽车租赁系统
1.需求分析 1.1系统分析 1.1.1系统开发背景与开发目的 现如今,随着国内经济的快速发展,汽车租赁行业也如同繁星-般呈现欣欣向荣之势,面对越来越庞大的市场,传统的管理方法即人工管理已经无法适 ...
- Oracle 数据库查看具有sysdba系统权限用户,设置、重置sys用户密码
sysdba 是系统权限,dba 是用户对象权限. 用 sysdba 系统权限身份登录后再用 show user 命令即可看到哪个用户有系统权限了. alter user 用户 identified ...
- 通达oa oracle数据库,通达OA 2016系统连接ORACLE 11g数据库(图文)
通达OA应该对Oracle是支持的,在数据源里还有ERP数据源的选项有sqlserver和Oracle的选项呢. 使用OA连接Oracle还是需要一些设置的. 1.先下载Oracle的客户端支持程序 ...
- oracle系统试算平衡表,oracle数据库中常用的系统表
dba_开头..... dba_users 数据库用户信息 dba_segments 表段信息 dba_extents 数据区信息 dba_objects 数据库对象信息 dba_tablespace ...
- scada如何用oracle数据库,怎样设计SCADA系统数据库存储功能及其应用
怎样设计SCADA系统数据库存储功能及其应用 2018年10月10日 10:24:05来源:力控科技作者:力控科技-产品部关键词:SCADA系统 1. 概述 SCADA体系首要用于运转设备的监督和操控 ...
最新文章
- NR 5G (2G-5G)通信核心网演进
- QFIL工具如何导出手机分区数据
- Windows phone 应用开发[3]-UI 设计
- [云炬创业基础笔记]第四章测试18
- 实验7.3 字符串 7-5 查找指定字符
- 一轮项目冲刺——移山小分队(6)
- hadoop--Map Join
- Adobe Acrobat Pro DC二次激活失败的解决方案
- 李宁院士二审宣判,改判10年
- UML图各类符号含义
- 二十一世纪大学英语读写教程学习笔记(原文)——3 - Stevie Wonder: Sunshine in the Shadow(Stevie Wonder——黑暗中的阳光)
- 控制面板设置java_win10系统打开java控制面板的具体技巧
- 昨天,终于拿到了腾讯 offer
- 1 is not JSON serializable的解决方案
- ibm tivoli_通过IBM Tivoli Access Manager WebSEAL单一登录到IBM WebSphere Portal
- 程序开发中的软实力和硬实力
- c++11:计算时间差(毫秒)
- 世界杯期间怎么做营销活动?
- Leetcode1407. 排名靠前的旅行者
- 【计算】空气质量综合指数+空气质量指数