电影院售票数据库系统设计.doc_第1页
电影院售票数据库系统设计.doc_第2页
电影院售票数据库系统设计.doc_第3页
电影院售票数据库系统设计.doc_第4页
电影院售票数据库系统设计.doc_第5页
免费预览已结束,剩余9页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机实验报告课程:ORACLE 班级: 学号: 姓名: 仪器编号 实验日期 实验: 四电影院售票数据库系统设计 实验目的:1 进一步熟悉oracle的各种操作。2 能够在实际的实例中灵活运用学到的有关知识。实验环境:装有oracle 10g的计算机且操作系统为Windows xp。实验内容:(可用附页)见附页实验结果:(可用附页)见附页实验内容:电影院售票数据库系统设计数据库设计是对于一个给定的应用环境,构建一个最优的数据库模式,并据此建立既能有效、完整、安全存储数据的数据库,又能满足多个用户的信息要求和处理要求的应用系统,本数据库设计就是为了能够在很好的保存商品进销存的所有数据而进行设计。(结合数据库设计和你要完成的系统进行陈述)。数据库设计的过程包含需求分析、概念结构设计、逻辑结构设计、物理结构设计、应用的设计。下面就按照数据库设计的过程进行逐一陈述1、 需求分析1、 系统设计的意义 电影院售票系统的数据库设计适用于电影院的售票,订票,退票服务。利用数据库实现规范、方便的管理。从而提升工作的效率,达到增长营利的效果。2、 数据库对象介绍1) 余票表2) 售票表3) 订票表4) 退票表5) 电影票综合表3、 系统相关对象电影院售票人员及管理人员,消费者(购票者)4、 数据库对象分析余票表 可以出售给消费者的所有电影票的表单售票表 已经在售票处出售给消费者电影票的表单订票表 通过电话、网络等途径订购电影票的表单退票表 消费者(因某些原因)要求退还金钱的表单电影票综合表 包括电影院所有的电影票的表单5、 功能分析1) 电影院的售票人员根据余票表单出售电影票,然后在售票表中记录。2) 通过订票表相应的在余票表中更新记录,减少一张票数。3) 通过退票表相应的在余票表中更新记录,增加一张票数。4) 根据表单实现查看总营利的功能5) 查看已经和未拿走订票的情况6) 查看当日上映电影及当日营利7) 查看已过期的未出售电影表单8) 6、 进阶分析 每张电影票都有自己唯一的编号ID,同一类型的电影票用片名来区分(同一片名的不同影片在片名后加入文字说明区分。)有一个电影综合表,可以根据某个元素查出其他的各元素。如:根据片名可以查看所有该影片的电影票的每张编号,座位,票价,片映时间,该影片的票数等其他各种信息。2、 概念结构设计1、 各对象属性余票表:编号,片名,片映日期,影片时间,影厅,座位,票价,余票数。售票表:编号,片名,片映日期,影片时间,影厅,座位,票价,实收,找零,售票日期,售票数。订票表:编号,片名,片映日期,影片时间,影厅,座位,票价,手续费,售票日期,取票时间。退票表:编号,片名,片映日期,票价,售票日期,手续费,实退金额。电影票综合表:编号,片名,片映日期,影片时间,影厅,座位,票价,总票数。(编号为每张电影票的区别号码,片名来区别不同的电影,影片时间单位为分钟)2、 画出E-r图局部e-r图座位影厅影片时间片映日期票价片名余票数余票表编号座位影厅影片时间片映日期票价片名售票表实收编号售票数售票日期找零座位影厅影片时间片映日期票价片名取票时间售票日期订票表编号手续费手续费票价售票日期片映日期实收金额片名退票表编号影厅片名片映日期总票数座位编号影片时间电影票综合表票价3、 逻辑结构设计1、 表的设计余票表(remain_ticket):列名列名表示数据类型宽度约束编号movie_idnumber20主键片名movie_namevarchar2100片映日期movie_datedate影片时间movie_timenumber影厅movie_roomvarchar220座位movie_seatvarchar220票价movie_pricenumber20余票数remain_countnumber20售票表(sale_ticket):列名列名表示数据类型宽度约束编号movie_idnumber20主键片名movie_namevarchar2100片映日期movie_datedate影片时间movie_timenumber影厅movie_roomvarchar220座位movie_seatvarchar220票价movie_pricenumber20实收movie_price_getnumber20找零movie_changenumber20售票日期movie_saledatedate售票数sale_countnumber20订票表(book_ticket):列名列名表示数据类型宽度约束编号movie_idnumber20主键片名movie_namevarchar2100片映日期movie_datedate影片时间movie_timenumber影厅movie_roomvarchar220座位movie_seatvarchar220票价movie_pricenumber20手续费movie_poundagenumber20售票日期movie_saledatedate取票时间movie_picktimedate退票表(back_ticket):列名列名表示数据类型宽度约束编号movie_idnumber20主键片名movie_namevarchar2100片映日期movie_datedate票价movie_pricenumber20售票日期movie_saledatedate手续费movie_poundagenumber20实退金额movie_refundnumber20电影票综合表(movie_ticket):列名列名表示数据类型宽度约束编号movie_idnumber20主键片名movie_namevarchar2100片映日期movie_datedate影厅movie_roomvarchar220座位movie_seatvarchar220票价movie_pricenumber20总票数all_countnumber20影片时间movie_timenumber四、物理结构设计1、 创建表空间create tablespace movie_tbsdatafileD:appother_tablespacemovie_tbs01.dbfsize 32m;2、 在oracle中创建用户movie并使用上面的表空间create user movieidentified by moviedefault tablespace movie_tbs;3、 给movie用户授权并使用movie用户完成下列步骤grant create session,dba to movie;4、 创建各对象表余票表:create table remain_ticket( movie_id number(20) PRIMARY KEY, movie_name varchar2(100), movie_date date, movie_time number(20), movie_room varchar2(20), movie_seat varchar2(20), movie_price number(20), remain_count number(20);售票表:create table sale_ticket( movie_id number(20) PRIMARY KEY, movie_name varchar2(100), movie_date date, movie_time number(20), movie_room varchar2(20), movie_seat varchar2(20), movie_price number(20), movie_price_get number(20), movie_change number(20), movie_saledate date,sale_count number(20);订票表:create table book_ticket( movie_id number(20) PRIMARY KEY, movie_name varchar2(100), movie_date date, movie_time number(20), movie_room varchar2(20), movie_seat varchar2(20), movie_price number(20), movie_poundage number(20), movie_saledate date, movie_picktime date);退票表:create table back_ticket( movie_id number(20) PRIMARY KEY, movie_name varchar2(100), movie_date date, movie_price number(20), movie_saledate date, movie_poundage number(20), movie_refund number(20);电影综合表:create table movie_ticket( movie_id number(20) PRIMARY KEY, movie_name varchar2(100), movie_date date, movie_room varchar2(20), movie_seat varchar2(20), movie_price number(20), all_count number(20),movie_time number(20);5、 创建视图1) 根据余票表中电影片名、余票数、票价和电影综合表中的总票数创建销售视图create view sale_conditionasselect r.movie_name,r.movie_price,r.remain_count,m.all_countfrom remain_ticket r,movie_ticket m;2) 根据售票表中的片名、票价、售票数创建营利视图create view get_condition(片名,票价,售票数,收益)asselect movie_name,movie_price,sale_count,movie_price*sale_countfrom sale_ticket;3) 订票表中已经拿走票的视图create view take_condition(编号,片名,片映时间,售票时间,取票时间)as select movie_id,movie_name,movie_date,movie_saledate,to_number(to_char(movie_picktime,yyyy-mon-dd,hh24:mi:ss)from book_ticketwhere to_number(to_char(movie_picktime,yyyy-mon-dd,hh24:mi:ss) = to_number(to_char(sysdate,yyyy-mon-dd,hh24:mi:ss);4) 订票表中未拿走票的视图create view untake_conditionasselect movie_id,movie_name,movie_date,movie_saledate,movie_picktimefrom book_ticketwhere movie_picktime = null;5) 查看当天上映电影的表单(片名、片映时间、影片时间、票价、余票数)create view today_movie(片名,片映时间,影片时间,票价,余票数)as selectmovie_name,to_char(movie_date,yyyy-mon-dd),movie_time,movie_price,remain_countfrom remain_ticketwhere to_char(movie_date,yyyy-mon-dd) =to_char(sysdate,yyyy-mon-dd);6) 查看电影票销售排行(片名、片映时间、票价、总票数-余票数、票价*(总票数-余票数)create view sale_range(片名,片映时间,票价,售票数,收益)as selectr.movie_name,r.movie_date,r.movie_price,m.all_count - r.remain_count,r.movie_price * (m.all_count - r.remain_count)from remain_ticket r,movie_ticket m;7) 查看已过期的未出售的电影表单(片名、片映时间、票价、余票数)create view unsale_condition(片名,片映时间,票价,余票数)asselect movie_name,to_number(to_char(movie_date,yyyy-mon-dd,hh24:mi:ss),movie_price,remain_countfrom remain_ticketwhere to_number(to_char(movie_date,yyyy-mon-dd,hh24:mi:ss) = to_number(to_char(sysdate,yyyy-mon-dd,hh24:mi:ss);6、 创建触发器 1) 订票表+1的同时,余票表-1create trigger book_ticket_addafter insertof movie_idon book_ticketfor each rowbegindelete from remain_ticketwhere remain_ticket.movie_id = book_ticket.movie_id;end;2) 退票表+1的同时,余票表+1,售票表-1create trigger back_ticket_addafter insertof movie_idon back_ticket bfor each rowbeginselect m.movie_id,m.movie_name,m.movie_date,m.movie_time,m.movie_room,m.movie_seat,m.movie_pricefrom movie_ticketwhere b.movie_id = m.movie_idinsert into remain_ticket values(m.movie_id,m.movie_name,m.movie_date,m.movie_time,m.movie_room,m.movie_seat,m.movie_price,remain_ticket=remain_ticket+1);delete from sale_ticketwhere sale_ticket.movie_id=b.movie_id;end;3) 电影综合表+1的同时,余票表+1create trigger movie_ticket_addafter inserton movie_ticket mbegininsert into remain_ticket(movie_id,movie_name,movie_date,movie_time,movie_room,movie_seat,movie_price,movie_count) values(m.movie_id,m.movie_name,m.movie_date,m.movie_time,m.movie_room,m.movie_seat,m.movie_price,m.movie_count+1);end;7、 创建过程输入一个元素,输出整列的其他信息create or replace procedure movie_id_lookup(p_movie_id in number,p_movie_name out movie_ticket.movie_name%type,p_movie_date out movie_ticket.movie_date%type,p_movie_room out movie_ticket.movie_room%type,p_movie_seat out movie_ticket.movie_seat%type,p_movie_price oupricemovie_ticket.movie_price%type,p_all_count out movie_ticket.all_count%type,p_movie_time out movie_ticket.all_count%type)asbeginselect movie_name,movie_date,movie_room,movie_seat,movie_price,movie_time,all_countfrom movie_ticketwhere movie_id = p_movie_id;exceptionwhen no_data_found thenp_movie_name :=null;p_movie_date :=null;p_movie_room :=null;p_movie_seat :=null;p_movie_price :=null;p_movie_time :=null;p_all_count :=null;end movie_id_lookup;variable name varchar2(100);variable movie_date date;variable room varchar2(20);variable seat varchar2(20);variable name va

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论