2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 电影院订票系统mysql表结构_电影院票务管理系统数据库设计(2)

电影院订票系统mysql表结构_电影院票务管理系统数据库设计(2)

时间:2020-06-30 21:21:29

相关推荐

电影院订票系统mysql表结构_电影院票务管理系统数据库设计(2)

在电影院票务管理系统数据库设计(1)中我们从一道面试题展开,最后给出如下影院票务管理系统的表关系图

以上的设计是否易用?

首先想一下订票最简单的过程,不包括意外情况。 顾客先来到柜台,跟柜台服务员说要买哪场电影的哪几个空位的票

服务员创建一个订单(在Table_OrderHead中插入一条记录)

若顾客为会员,刷会员卡(Update Table_OrderHead中的Customer_ID的值)

服务员选择顾客指定场次的多个位子

服务员点击出票(在Table_OrderDetail和Table_OrderSeat中插入相应记录)

若顾客还需要买其他场次的电影,重复步骤4~5

想了一下这个过程,我自己感觉步骤1比较累赘,服务员每次都需要创建一个空订单头,之后才真正开始选位出票,比较麻烦。

而且如果在选位子之前,顾客突然决定不看电影了,服务员必须把前面创建的订单头删除,否则会在系统中留下孤立的OrderHead记录,会破坏数据完整性。

同时想到平日自己去电影院买票时,服务员都是直接选位子出票的,所以我们修改设计如下:

现在系统的订票流程如下: 顾客先来到柜台,跟柜台服务员说要买哪场电影的哪几个空位的票

服务员选择顾客指定场次的多个位子

若顾客为会员,刷会员卡

服务员点击出票

若顾客还需要买其他场次的电影,重复步骤2~4

这个流程去除了每次服务员创建订单的动作,简化了最一般的情况,即顾客买某场电影的多张票。但若顾客要买多场电影的票时,需要多次刷会员卡,这里变麻烦了但这种情况不多,我觉得这更符合影院的实际需求。

统计一下票房收入

统计某段时间内,某部电影总共销售收入应该是比较常见的需求,我们用T-SQL来实现这一需求。

输入:电影ID(@MovieID),起始时间(@StartDate),终止时间(@EndDate)

输出:总票房收入(@TotalBoxOffice) if object_id(N'Proc_GetBoxOffice') is not null

begin

drop procedure dbo.Proc_GetBoxOffice;

end

go

create procedure dbo.Proc_GetBoxOffice

@MovieID int,

@StartDate datetime,

@EndDate datetime,

@TotalBoxOffice money output

as

if @MovieID is null

begin

raiserror('@MovieID is null in Proc_GetBoxOffice', 16, 1);

end

if @StartDate is null

begin

raiserror('@StartDate is null in Proc_GetBoxOffice', 16, 1);

end

if @EndDate is null

begin

raiserror('@EndDate is null in Proc_GetBoxOffice', 16, 1);

end

;With OrderTotalAmount as

(

select

OrderInfo.Order_ID,

OrderInfo.Order_AdjustedPrice * count(*) as OrderTotalAmount

from

dbo.Table_Order OrderInfo

inner join

dbo.Table_Schedule Schedule

on

OrderInfo.Schedule_ID = Schedule.Schedule_ID

inner join

dbo.Table_OrderSeat OrderSeat

on

OrderInfo.Order_ID = OrderSeat.Order_ID

where

OrderInfo.Order_BuyDate >= @StartDate

and

OrderInfo.Order_BuyDate < dateadd(day, 1, convert(varchar(10), @EndDate, 120))

and

Schedule.Movie_ID = @MovieID

group by

OrderInfo.Order_ID,

OrderInfo.Order_AdjustedPrice

)

select

@TotalBoxOffice = sum(OrderTotalAmount)

from

OrderTotalAmount;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。