电影院票务管理系统数据库设计(1)
這兩天聽到一道面試題:設(shè)計一個電影院票務(wù)管理系統(tǒng)的表結(jié)構(gòu)。
挺有意思的,我自己也試著做了一做,感覺還是有不少收獲的。在本文中我想把做這道題的整個思路重新理一下,也算做個整理了。
?
現(xiàn)在能得到的需求只有一個:設(shè)計一個電影院票務(wù)管理系統(tǒng)的表結(jié)構(gòu)。再沒有其他信息了,可能真的面試的時候面試官還會給出其他業(yè)務(wù)需求,但我這里沒有。
所以我只能猜測可能的業(yè)務(wù)需求會有哪些。
最初想到的:
1. 電影院會有多個播放廳,從而在同一時間播放不同的電影來滿足客戶需求
2. 每個廳的大小可能不同,即容納的人數(shù)不同
3. 電影院會不斷引進新片
4. 電影院會把電影安排在各個播放廳的不同時間段來進行播放,即會有一個排片表
5. 一個客戶可能買一張或多張電影票,這些電影票可能會是不同廳,不同場次的電影
?
對于以上的需求設(shè)計中應(yīng)該會有一張存放電影的表(Table_Movie),一張存放影院各個廳信息的表(Table_Hall)。
還應(yīng)有一張排片表,其中會包含兩個外鍵分別指向Table_Movie的主鍵和Table_Hall的主鍵,還有時間、價格等信息。
對于用戶買票的需求,使用經(jīng)典ERP訂單結(jié)構(gòu)來設(shè)計就行了,即會有Table_OrderHead,Table_OrderDetail表。
簡單表關(guān)系圖如下:
這一設(shè)計需要注意的有兩點:
1. 票價信息存儲在Table_Schedule中(Schedule_Price列),即影片在不同時間段和不同廳中播放票價可以不同。
2. Table_OrderDetail中有外鍵Schedule_ID指向Table_Schedule。
?
加入會員信息
如上設(shè)計已滿足最初提出的5點需求。但這樣的電影院無法辦會員卡,也就沒法打折了。為了與其他影院競爭提供會員卡功能,即:
6. 影院應(yīng)提供會員卡功能,根據(jù)會員卡的等級,給予不同的折扣
對于這一需求加入一張會員信息表Table_Customer顯得很自然,同時為了能根據(jù)不同等級給予不同的折扣,需要再加一張等級表Table_Class
簡單表關(guān)系圖如下:
需要注意的是:
1. Table_Customer中外鍵Class_ID指向Table_Class
2. 我給Table_Class加了一個Class_IsActive列,當(dāng)一個會員等級無效時只要置標(biāo)簽,而無需做刪除操作
3. Table_OrderHead中加了一列Customer_ID,我把該列的默認(rèn)值設(shè)為-1。當(dāng)非會員顧客買票時,改列值即為-1,當(dāng)會員買票時,該列值為在Table_Customer中對應(yīng)的Customer_ID
4. Table_OrderDetail中加了一列OrderDetail_AdjustedPrice,該列可以不加,出于方便的考慮,我還是加了此列。對于會員該列值為原票價打折后的值,即Schedule_Price * Class_Discount,對于非會員該列為原票價
?
再進一步思考
以上做的設(shè)計作為面試題的解答,應(yīng)該差不多了,所有前面提到的6點需求已滿足。
但這是否真的滿足實際影院的需求呢?
我的答案是否定的,其中有一個很致命的缺陷,我們的設(shè)計中沒有包含座位號。
系統(tǒng)出的票只知道什么時間,哪個廳,什么電影,但沒有座位號,顧客只能去搶位子了。
那我們再加一條需求:
7. 顧客可以在買票時選擇座位
對于這一需求,我們直接來看表關(guān)系圖
如上設(shè)計增加了Table_Seat和Table_OrderSeat兩張表,改動比較小。
需要注意的有:
1. Table_Seat中的外鍵Hall_ID指向Table_Hall
2. Table_Seat中除包含座位的排數(shù)(Seat_Row)和列數(shù)(Seat_Column)外,還包含Seat_IsActive列來表示此座位是否可用,如果座位壞了,這個位子的票就不應(yīng)該賣
3. Table_OrderSeat中OrderDetail_ID,Seat_ID為聯(lián)合主鍵,同時OrderDetail_ID為外鍵指向Table_OrderDetail的OrderDetail_ID列
4. Table_OrderDetail中的OrderDetail_Qty列被刪除了,從Table_OrderSeat中可以計算此值
?
--后面的內(nèi)容還比較多,單獨分出一篇“電影院票務(wù)管理系統(tǒng)數(shù)據(jù)庫設(shè)計(2)”
轉(zhuǎn)載于:https://www.cnblogs.com/DBFocus/archive/2010/07/21/1781885.html
總結(jié)
以上是生活随笔為你收集整理的电影院票务管理系统数据库设计(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2003 SERVER 本地连接 TCP
- 下一篇: C#网络编程:4订立协议和发送文件