电影院售票数据库系统设计.docx

上传人:b****5 文档编号:29716955 上传时间:2023-07-26 格式:DOCX 页数:18 大小:75.62KB
下载 相关 举报
电影院售票数据库系统设计.docx_第1页
第1页 / 共18页
电影院售票数据库系统设计.docx_第2页
第2页 / 共18页
电影院售票数据库系统设计.docx_第3页
第3页 / 共18页
电影院售票数据库系统设计.docx_第4页
第4页 / 共18页
电影院售票数据库系统设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

电影院售票数据库系统设计.docx

《电影院售票数据库系统设计.docx》由会员分享,可在线阅读,更多相关《电影院售票数据库系统设计.docx(18页珍藏版)》请在冰豆网上搜索。

电影院售票数据库系统设计.docx

电影院售票数据库系统设计

计算机实验报告

课程:

ORACLE班级:

学号:

姓名:

仪器编号实验日期

实验:

四电影院售票数据库系统设计

实验目的:

1.进一步熟悉oracle的各种操作。

2.能够在实际的实例中灵活运用学到的有关知识。

 

实验环境:

装有oracle10g的计算机且操作系统为Windowsxp。

 

实验内容:

(可用附页)

见附页

 

实验结果:

(可用附页)

见附页

 

实验内容:

电影院售票数据库系统设计

数据库设计是对于一个给定的应用环境,构建一个最优的数据库模式,并据此建立既能有效、完整、安全存储数据的数据库,又能满足多个用户的信息要求和处理要求的应用系统,

本数据库设计就是为了能够在很好的保存商品进销存的所有数据而进行设计。

(结合数据库设计和你要完成的系统进行陈述)。

数据库设计的过程包含需求分析、概念结构设计、逻辑结构设计、物理结构设计、应用的设计。

下面就按照数据库设计的过程进行逐一陈述

一、需求分析

1、系统设计的意义

电影院售票系统的数据库设计适用于电影院的售票,订票,退票服务。

利用数据库实现规范、方便的管理。

从而提升工作的效率,达到增长营利的效果。

2、数据库对象介绍

1)余票表

2)售票表

3)订票表

4)退票表

5)电影票综合表

3、系统相关对象

电影院售票人员及管理人员,消费者(购票者)

4、数据库对象分析

余票表—>>可以出售给消费者的所有电影票的表单

售票表—>>已经在售票处出售给消费者电影票的表单

订票表—>>通过电话、网络等途径订购电影票的表单

退票表—>>消费者(因某些原因)要求退还金钱的表单

电影票综合表—>>包括电影院所有的电影票的表单

5、功能分析

1)电影院的售票人员根据余票表单出售电影票,然后在售票表中记录。

2)通过订票表相应的在余票表中更新记录,减少一张票数。

3)通过退票表相应的在余票表中更新记录,增加一张票数。

4)根据表单实现查看总营利的功能

5)查看已经和未拿走订票的情况

6)查看当日上映电影及当日营利

7)查看已过期的未出售电影表单

8)…………

6、进阶分析

每张电影票都有自己唯一的编号ID,同一类型的电影票用片名来区分(同一片名的不同影片在片名后加入文字说明区分。

)有一个电影综合表,可以根据某个元素查出其他的各元素。

如:

根据片名可以查看所有该影片的电影票的每张编号,座位,票价,片映时间,该影片的票数等其他各种信息。

二、概念结构设计

1、各对象属性

余票表:

编号,片名,片映日期,影片时间,影厅,座位,票价,余票数。

售票表:

编号,片名,片映日期,影片时间,影厅,座位,票价,实收,找零,售票日期,售票数。

订票表:

编号,片名,片映日期,影片时间,影厅,座位,票价,手续费,售票日期,取票时间。

退票表:

编号,片名,片映日期,票价,售票日期,手续费,实退金额。

电影票综合表:

编号,片名,片映日期,影片时间,影厅,座位,票价,总票数。

(编号为每张电影票的区别号码,片名来区别不同的电影,影片时间单位为分钟)

2、画出E-r图

局部e-r图

 

 

 

 

三、逻辑结构设计

1、表的设计

余票表(remain_ticket):

列名

列名表示

数据类型

宽度

约束

编号

movie_id

number

20

主键

片名

movie_name

varchar2

100

片映日期

movie_date

date

影片时间

movie_time

number

影厅

movie_room

varchar2

20

座位

movie_seat

varchar2

20

票价

movie_price

number

20

余票数

remain_count

number

20

 

售票表(sale_ticket):

列名

列名表示

数据类型

宽度

约束

编号

movie_id

number

20

主键

片名

movie_name

varchar2

100

片映日期

movie_date

date

影片时间

movie_time

number

影厅

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

 

订票表(book_ticket):

列名

列名表示

数据类型

宽度

约束

编号

movie_id

number

20

主键

片名

movie_name

varchar2

100

片映日期

movie_date

date

影片时间

movie_time

number

影厅

movie_room

varchar2

20

座位

movie_seat

varchar2

20

票价

movie_price

number

20

手续费

movie_poundage

number

20

售票日期

movie_saledate

date

取票时间

movie_picktime

date

 

退票表(back_ticket):

列名

列名表示

数据类型

宽度

约束

编号

movie_id

number

20

主键

片名

movie_name

varchar2

100

片映日期

movie_date

date

票价

movie_price

number

20

售票日期

movie_saledate

date

手续费

movie_poundage

number

20

实退金额

movie_refund

number

20

 

电影票综合表(movie_ticket):

列名

列名表示

数据类型

宽度

约束

编号

movie_id

number

20

主键

片名

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

 

四、物理结构设计

1、创建表空间

createtablespacemovie_tbs

datafile'D:

\app\other_tablespace\movie_tbs01.dbf'

size32m;

2、在oracle中创建用户movie并使用上面的表空间

createusermovie

identifiedbymovie

defaulttablespacemovie_tbs;

3、给movie用户授权并使用movie用户完成下列步骤

grantcreatesession,dbatomovie;

4、创建各对象表

余票表:

createtableremain_ticket

movie_idnumber(20)PRIMARYKEY,

movie_namevarchar2(100),

movie_datedate,

movie_timenumber(20),

movie_roomvarchar2(20),

movie_seatvarchar2(20),

movie_pricenumber(20),

remain_countnumber(20)

);

售票表:

createtablesale_ticket

movie_idnumber(20)PRIMARYKEY,

movie_namevarchar2(100),

movie_datedate,

movie_timenumber(20),

movie_roomvarchar2(20),

movie_seatvarchar2(20),

movie_pricenumber(20),

movie_price_getnumber(20),

movie_changenumber(20),

movie_saledatedate,

sale_countnumber(20)

);

订票表:

createtablebook_ticket

movie_idnumber(20)PRIMARYKEY,

movie_namevarchar2(100),

movie_datedate,

movie_timenumber(20),

movie_roomvarchar2(20),

movie_seatvarchar2(20),

movie_pricenumber(20),

movie_poundagenumber(20),

movie_saledatedate,

movie_picktimedate

);

退票表:

createtableback_ticket

movie_idnumber(20)PRIMARYKEY,

movie_namevarchar2(100),

movie_datedate,

movie_pricenumber(20),

movie_saledatedate,

movie_poundagenumber(20),

movie_refundnumber(20)

);

电影综合表:

createtablemovie_ticket

movie_idnumber(20)PRIMARYKEY,

movie_namevarchar2(100),

movie_datedate,

movie_roomvarchar2(20),

movie_seatvarchar2(20),

movie_pricenumber(20),

all_countnumber(20),

movie_timenumber(20)

);

5、创建视图

1)根据余票表中电影片名、余票数、票价和电影综合表中的总票数创建销售视图

createviewsale_condition

as

selectr.movie_name,r.movie_price,r.remain_count,m.all_count

fromremain_ticketr,movie_ticketm;

2)根据售票表中的片名、票价、售票数创建营利视图

createviewget_condition

(片名,票价,售票数,收益)

as

selectmovie_name,movie_price,sale_count,movie_price*sale_count

fromsale_ticket;

3)订票表中已经拿走票的视图

createviewtake_condition

(编号,片名,片映时间,售票时间,取票时间)

as

selectmovie_id,movie_name,movie_date,movie_saledate,to_number(to_char(movie_picktime,'yyyy-mon-dd,hh24:

mi:

ss'))

frombook_ticket

whereto_number(to_char(movie_picktime,'yyyy-mon-dd,hh24:

mi:

ss'))<=to_number(to_char(sysdate,'yyyy-mon-dd,hh24:

mi:

ss'));

4)订票表中未拿走票的视图

createviewuntake_condition

as

selectmovie_id,movie_name,movie_date,movie_saledate,movie_picktime

frombook_ticket

wheremovie_picktime=null;

5)查看当天上映电影的表单(片名、片映时间、影片时间、票价、余票数)

createviewtoday_movie

(片名,片映时间,影片时间,票价,余票数)

asselect

movie_name,to_char(movie_date,'yyyy-mon-dd'),movie_time,movie_price,remain_count

fromremain_ticket

whereto_char(movie_date,'yyyy-mon-dd')=

to_char(sysdate,'yyyy-mon-dd');

6)查看电影票销售排行(片名、片映时间、票价、总票数-余票数、票价*(总票数-余票数))

createviewsale_range

(片名,片映时间,票价,售票数,收益)

asselect

r.movie_name,r.movie_date,r.movie_price,

m.all_count-r.remain_count,r.movie_price*(m.all_count-r.remain_count)

fromremain_ticketr,movie_ticketm;

7)查看已过期的未出售的电影表单(片名、片映时间、票价、余票数)

createviewunsale_condition

(片名,片映时间,票价,余票数)

as

selectmovie_name,to_number(to_char(movie_date,'yyyy-mon-dd,hh24:

mi:

ss')),movie_price,remain_count

fromremain_ticket

whereto_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的同时,余票表-1

createtriggerbook_ticket_add

afterinsert

ofmovie_id

onbook_ticket

foreachrow

begin

deletefromremain_ticket

whereremain_ticket.movie_id=book_ticket.movie_id;

end;

2)退票表+1的同时,余票表+1,售票表-1

createtriggerback_ticket_add

afterinsert

ofmovie_id

onback_ticketb

foreachrow

begin

selectm.movie_id,m.movie_name,m.movie_date,m.movie_time,m.movie_room,m.movie_seat,m.movie_price

frommovie_ticket

whereb.movie_id=m.movie_id

insertintoremain_ticketvalues

(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);

deletefromsale_ticket

wheresale_ticket.movie_id=b.movie_id;

end;

3)电影综合表+1的同时,余票表+1

createtriggermovie_ticket_add

afterinsert

onmovie_ticketm

begin

insertintoremain_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、创建过程

输入一个元素,输出整列的其他信息

createorreplaceproceduremovie_id_lookup

p_movie_idinnumber,

p_movie_nameoutmovie_ticket.movie_name%type,

p_movie_dateoutmovie_ticket.movie_date%type,

p_movie_roomoutmovie_ticket.movie_room%type,

p_movie_seatoutmovie_ticket.movie_seat%type,

p_movie_priceoupricemovie_ticket.movie_price%type,

p_all_countoutmovie_ticket.all_count%type,

p_movie_timeoutmovie_ticket.all_count%type

as

begin

selectmovie_name,movie_date,movie_room,movie_seat,movie_price,movie_time,all_count

frommovie_ticket

wheremovie_id=p_movie_id;

exception

whenno_data_foundthen

p_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';

endmovie_id_lookup;

variablenamevarchar2(100);

variablemovie_datedate;

variableroomvarchar2(20);

variableseatvarchar2(20);

variablenamevarchar2(100);

variablepricenumber(20);

variablecountnumber(20);

五、数据库实施

本数据库利用ORACLE的表、视图和触发器等实现电影票售票系统的相应功能。

数据库性能评价:

本数据库只是利用Oracle实现几个基本的功能,实际的数据库还需要更多复杂的功能。

由于较简单,数据库的性能较好,且利于发现错误和进行维护。

六、数据库运行和维护

数据库每个季度(3个月)进行一次全部维护,在本季度结束的时候,对表和数据等进行备份,同时把各个表清空来开始存储下个季度的数据。

这样有利于数据库运行的效率。

同时保证了在以后出现纠纷时可以从备份中查找到相应的数据。

实验结果:

演示数据的输入:

insertintomovie_ticketvalues

('0001','赤壁',date'2010-6-1010:

30:

00','第二影厅','5号','30','150','120');

insertintomovie_ticketvalues

('0002','三国',date'2010-6-1014:

30:

00','第三影厅','10号','25','100','120');

售票:

insertintosale_ticketvalues

('0001','赤壁',date'2010-6-1010:

30:

00','120','第二影厅','5号','30','50','20',date'2010-6-814:

30:

30','1');

订票:

insertintobook_ticketvalues

('0002','三国',date'2010-6-1014:

30:

00','120','第三影厅','10号','25','0',date'2010-6-712:

30:

30',date'2010-6-715:

30:

00');

退票:

insertintosale_ticketvalues

('0001','赤壁',date'2010-6-1010:

30:

00','30',date'2010-6-814:

30:

30','2','28');

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1