这两天听到一道面试题:设计一个电影院票务管理系统的表结构。

挺有意思的,我自己也试着做了一做,感觉还是有不少收获的。在本文中我想把做这道题的整个思路重新理一下,也算做个整理了。

现在能得到的需求只有一个:设计一个电影院票务管理系统的表结构。再没有其他信息了,可能真的面试的时候面试官还会给出其他业务需求,但我这里没有。

所以我只能猜测可能的业务需求会有哪些。

最初想到的:

1. 电影院会有多个播放厅,从而在同一时间播放不同的电影来满足客户需求

2. 每个厅的大小可能不同,即容纳的人数不同

3. 电影院会不断引进新片

4. 电影院会把电影安排在各个播放厅的不同时间段来进行播放,即会有一个排片表

5. 一个客户可能买一张或多张电影票,这些电影票可能会是不同厅,不同场次的电影

对于以上的需求设计中应该会有一张存放电影的表(Table_Movie),一张存放影院各个厅信息的表(Table_Hall)。

还应有一张排片表,其中会包含两个外键分别指向Table_Movie的主键和Table_Hall的主键,还有时间、价格等信息。

对于用户买票的需求,使用经典ERP订单结构来设计就行了,即会有Table_OrderHead,Table_OrderDetail表。

简单表关系图如下:

这一设计需要注意的有两点:

1. 票价信息存储在Table_Schedule中(Schedule_Price列),即影片在不同时间段和不同厅中播放票价可以不同。

2. Table_OrderDetail中有外键Schedule_ID指向Table_Schedule。

加入会员信息

如上设计已满足最初提出的5点需求。但这样的电影院无法办会员卡,也就没法打折了。为了与其他影院竞争提供会员卡功能,即:

6. 影院应提供会员卡功能,根据会员卡的等级,给予不同的折扣

对于这一需求加入一张会员信息表Table_Customer显得很自然,同时为了能根据不同等级给予不同的折扣,需要再加一张等级表Table_Class

简单表关系图如下:

需要注意的是:

1. Table_Customer中外键Class_ID指向Table_Class

2. 我给Table_Class加了一个Class_IsActive列,当一个会员等级无效时只要置标签,而无需做删除操作

3. Table_OrderHead中加了一列Customer_ID,我把该列的默认值设为-1。当非会员顾客买票时,改列值即为-1,当会员买票时,该列值为在Table_Customer中对应的Customer_ID

4. Table_OrderDetail中加了一列OrderDetail_AdjustedPrice,该列可以不加,出于方便的考虑,我还是加了此列。对于会员该列值为原票价打折后的值,即Schedule_Price * Class_Discount,对于非会员该列为原票价

再进一步思考

以上做的设计作为面试题的解答,应该差不多了,所有前面提到的6点需求已满足。

但这是否真的满足实际影院的需求呢?

我的答案是否定的,其中有一个很致命的缺陷,我们的设计中没有包含座位号。

系统出的票只知道什么时间,哪个厅,什么电影,但没有座位号,顾客只能去抢位子了。

那我们再加一条需求:

7. 顾客可以在买票时选择座位

对于这一需求,我们直接来看表关系图

如上设计增加了Table_Seat和Table_OrderSeat两张表,改动比较小。

需要注意的有:

1. Table_Seat中的外键Hall_ID指向Table_Hall

2. Table_Seat中除包含座位的排数(Seat_Row)和列数(Seat_Column)外,还包含Seat_IsActive列来表示此座位是否可用,如果座位坏了,这个位子的票就不应该卖

3. Table_OrderSeat中OrderDetail_ID,Seat_ID为联合主键,同时OrderDetail_ID为外键指向Table_OrderDetail的OrderDetail_ID列

4. Table_OrderDetail中的OrderDetail_Qty列被删除了,从Table_OrderSeat中可以计算此值

--后面的内容还比较多,单独分出一篇“电影院票务管理系统数据库设计(2)”

电影院售票系统mysql表格_电影院票务管理系统数据库设计(1)相关推荐

  1. 电影院票务管理系统数据库设计(1)

    这两天听到一道面试题:设计一个电影院票务管理系统的表结构. 挺有意思的,我自己也试着做了一做,感觉还是有不少收获的.在本文中我想把做这道题的整个思路重新理一下,也算做个整理了. 现在能得到的需求只有一 ...

  2. 电影院票务管理系统数据库设计(2)

    在电影院票务管理系统数据库设计(1)中我们从一道面试题展开,最后给出如下影院票务管理系统的表关系图 以上的设计是否易用? 首先想一下订票最简单的过程,不包括意外情况. 顾客先来到柜台,跟柜台服务员说要 ...

  3. 用Mysql做个人信息管理系统_个人信息管理系统数据库设计精选.doc

    个人信息管理系统数据库设计精选 河海大学计算机及信息工程学院(常州) 数据库课程设计 学年学期 2012第二学期 项目名称 个人信息管理 项目组员 曹清云.陈天昊 指导教师 景雪琴 组号:8 目 录 ...

  4. 学生考勤系统PHP mysql论文_学生考勤管理系统的设计与实现(PHP,MySQL)(含录像)

    学生考勤管理系统的设计与实现(PHP,MySQL)(含录像)(毕业论文8300字,PHP程序代码,MySQL数据库) 本文就详细的设计了一个移动学生考勤管理系统,把学生考勤的一些相关的点名查询的详细信 ...

  5. access导出MySQL表格_如何将Access数据库里的表内容导出到Excel

    Public Function ExporToExcel(strOpen As String) '*************************************************** ...

  6. access导出MySQL表格_将ACCESS 的数据库中的表的文件 导出了EXCEL格式

    '''' '将ACCESS数据库中的某个表的信息 导出为EXCEL 文件格式 'srcfName ACCESS 数据库文件路径 'desfName excel 文件路径 Public Function ...

  7. 网上书店管理系统mysql代码_网上书店管理系统数据库数据库

    有关网上书店管理系统数据库 新建表B1 create table Tbl_Customer(Customer Num(4)not null,Customer_Name varchar(10),Addr ...

  8. vue.js毕业设计,基于vue.js前后端分离电影院售票系统(H5移动项目) 开题报告

      毕业论文 基于Vue.js电影院售票系统(H5) 开题报告 学    院: 专    业: 年    级: 学生姓名: 指导教师: 黄菊华   XXXX大学本科生毕业论文(设计)开题报告书 姓   ...

  9. 基于mysql和python tkinter 实现电影院售票系统

    电影院售票系统可作为电影院网上售票平台,对于电影院的管理员,可以为该电影院引入添加新上映的电影,也可以对该电影院的电影进行排片,即安排播放时间.放映厅.票价.电影等等,也可以对用户的订单进行增加,删除 ...

  10. 基于mysql+python tkinter实现电影院售票系统

    电影院售票系统可作为电影院网上售票平台,对于电影院的管理员,可以为该电影院引入添加新上映的电影,也可以对该电影院的电影进行排片,即安排播放时间.放映厅.票价.电影等等,也可以对用户的订单进行增加,删除 ...

最新文章

  1. Matlab编程与数据类型 -- 奇数阶魔方矩阵的编程
  2. Gson把对象转成json格式的字符串
  3. Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器
  4. python动态图-python之最炫抖音动态图
  5. POJ-3281-Dining(求一对二最大匹配数/最大流)
  6. 如何用chrome查看post get及返回的数据
  7. 一个使用ABAP Push Channel开发的乒乓球游戏,可以双打
  8. ux和ui_设计社交餐厅策展应用程序— UX / UI案例研究
  9. CCNP课堂练习四:frame-relay traffic-shaping(帧中继流量×××)
  10. android 图片操作,Android图片操作(Bitmap)
  11. java yml value_Spring Boot:从YAML文件加载@Value
  12. ConcurrentHashMap面试灵魂拷问,你能扛多久
  13. python 模拟用户点击浏览器_Selenium(python版本)如何启动浏览器模拟点击网页链接或按钮?...
  14. C#控制台应用程序执行结果一闪而过的解决方法
  15. 基于单片机的银行排队叫号系统的设计
  16. 样条曲线、样条函数、python绘画样条曲线
  17. unity 自定义管线SRP 学习笔记(一)搞懂WHY WHAT HOW
  18. 时间管理四象限法则该如何理解
  19. restframework序列化解析详解(番外)
  20. Qt雪花飘落程序,下雪

热门文章

  1. c++ pdflib 中文乱码解决思路
  2. 使用NeatUpload控件实现ASP.NET大文件上传
  3. NeatUpload 的使用
  4. Html5下载功能实现
  5. TP5开源微信小程序商城源码+附安装文档
  6. 没有IDEA与Eclipse,该怎么学Java?
  7. 如何利用3Dslicer将mhd格式三维图像迅速转换为tif单张图片
  8. 零基础CSS入门教程(26)–CSS按钮实例
  9. Java中多态详解(参考刘意教程)
  10. 最火前端Web组态软件(可视化)