1. 程式人生 > >MonkeyEye電影售票系統--領域模型和資料模型

MonkeyEye電影售票系統--領域模型和資料模型

案例來源:SYSU SE305 課程大作業。網際網路售票軟體是比較常見的軟體系統。通常由多個零售系統和多個供給系統系統。 機票、酒店房間、電影票似乎是風馬牛大相關的系統,但它們之間存在極其相似的業務模型。 以電影票為例,格瓦拉、蜘蛛網、騰訊等等都做類似的電影票分銷、推廣業務,但票是由各大院線排期提供的。 分銷-院線-影院形成了一個完整的生態體系。 本課程以大家熟悉的訂票為例,學習分析、設計、開發的方法。

我所在的小組做的是一個叫做MonkeyEye的專案,實現一個簡單的電影購票系統,並在專案完成過程中學習系統分析與設計,學習UML建模等技能。本系列文章將會以此專案為案例,總結整個專案的設計、建模與開發過程。

一、基本功能

  1. 電影資訊
  2. 購票
  3. 使用者資訊
  4. 收藏
  5. 評論

使用者使用該可以實現檢視和搜尋正在熱映和即將上映的電影資訊,對感興趣的電影可以進行收藏。想要觀看某部電影,可以進行下單購票操作。對於已經放映的電影訂單,使用者可以對該訂單對應的電影進行評分評價的操作。另外,使用者還可以更新自己的個人資訊。下面是整個應用的介面邏輯概要圖,方便對應用有個直觀的理解。

這裡寫圖片描述

二、領域建模

領域模型是一組概念類圖,即沒有定義操作的類圖。通過分析整個應用的功能,找出其中的名詞,大致可以分為如下8個概念類:電影(Movie)、場次(Screen)、推薦(Recommend)、評論(Comment)、收藏關係(Favorite)、使用者(User)、訂單(Order)、優惠券(Coupons)。

下面對每個概念類進一步分析,得到他們的基本屬性。

1、電影(Movie)

電影需要有以下8項基本資訊:名稱、海報、型別、放映型別、上映時間、電影時長、電影評分和電影簡介。型別是指動作片、喜劇片之類的,而放映型別則是指”2D國語”、”3D英語”之類的。

這裡寫圖片描述

2、場次(Screen)

不同場次出售的電影票數量可能因為作為關係變得有所不同,電影票的價格也可能因為高峰期或者冷清期而有所變化,不同場次開始播放電影的時間也有所區別。因此,場地大概會需要下面這4項資訊:對應的電影、本場次電影票價格、本場次電影票數量、本場次開始時間。最後,電影與場次的對應關係為:1部電影可能有零或多個場次,但1個場地只能有1部關聯的電影。

這裡寫圖片描述

3、推薦(Recommend)

後臺管理員可以設定每天的推薦電影,會以海報輪播的形式在應用首頁呈現。推薦相當於一種標記,標記了某部電影,一個推薦例項對應一部電影,一部電影最多隻能有一個推薦。

這裡寫圖片描述

4、使用者(User)

使用該應用的使用者需要以下7項資訊:使用者名稱、登入密碼、支付密碼、暱稱、頭像、簡介、賬戶餘額。由於本應用沒有第三方支付或者充錢功能,目前加入賬戶餘額欄位方便我們可以模擬出購票下單付款的行為。至於賬戶餘額如何補充不是本應用關注的問題,保留這個欄位後續如果需要做第三方支付或者充錢等功能的時候也不會產生衝突。

這裡寫圖片描述

5、收藏關係(Favorite)

使用者對感興趣的電影可以進行收藏,收藏關係就是用來描述使用者和電影之間的關係的。1個使用者可以收藏多部電影,每個收藏關係都對應1個使用者和1部電影。

這裡寫圖片描述

6、優惠券(Coupons)

優惠券需要的資訊比較簡單:折扣、使用條件、持有該券的使用者。另外需要有1個有效時間,過期的優惠券無法使用。並且使用過的優惠券需要標記狀態,便於判斷。一個使用者可以擁有多張優惠券。

這裡寫圖片描述

7、訂單(Order)

一個訂單需要包括:該訂單對應的電影、該訂單對應的場次、該訂單所使用的優惠券、訂單應付價格、訂單建立時間、訂單所屬使用者以及座位資訊。一個使用者能夠建立多個訂單,一個訂單隻對應一部電影和一個場次,並且一個訂單最多隻能使用一張優惠券。

這裡寫圖片描述

8、評價(Comment)

評價的內容包括等級分數和評語兩部分內容。另外,每一條評論都有對應的釋出人和對應的電影。一個使用者可以有多條評價,一部電影也可以有多條評論。

這裡寫圖片描述

三、資料模型

根據領域模型,對各個概念類的欄位和型別進行完善,我們可以很容易得到以下資料模型。根據資料模型對欄位的描述和型別的確定,以及領域模型中確定的關聯關係,可以很方便進行資料庫建模。實際開發中可以繼續對各個類的欄位和方法進行完善。

1、電影(Movie)

{
    "movie": {
        "id": "uid, 資料庫ID",
        "name": "string, 電影名稱",
        "poster": "string, 海報連結",
        "movieType": "string, 電影型別, 動作/冒險/愛情/喜劇等",
        "playingType": "string, 播放型別, 2D/3D/國語/外語等",
        "playingTime": "date, 上映日期",
        "duration": "integer, 電影時長",
        "rating": "integer, 電影評分, 取值範圍0-5",
        "description": "string, 電影簡介"
    },
    "example": {
        "id": "0db1a2e4bf7e42dfb2bde06c81eaca91",
        "name": "速度與激情8",
        "poster": "/static/images/poster/dheusidewhxj289f74gsuc78.png",
        "movieType": "冒險 動作",
        "playingType": "英語 3D",
        "playingTime": "1493001432820",
        "duration": "136",
        "rating": "5",
        "description": "一位神祕女子Cipher(查理茲·塞隆 飾)的出現,她引誘多米尼克走上犯罪道路,令整個隊伍捲入信任與背叛的危機"
    }
}

2、場次(Screen)

{
    "screen": {
        "id": "uid, 資料庫ID",
        "movieId": "uid, 資料庫ID",
        "price": "double, 本場次電影票價格",
        "ticketNum": "integer, 本場次售票數量",
        "time": "date, 開始放映的時間"
    },
    "example": {
        "id": "58cc02902b0f45ad80938b125aade2d0",
        "movieId": "fc57ab4586284680a4285db878cab44e",
        "price": "48",
        "ticketNum": "120",
        "time": "1493001432820"
    }
}

3、推薦(Recommend)

{
    "recommend": {
        "id": "uid, 資料庫ID",
        "movieId": "uid, 資料庫ID"
    },
    "example": {
        "id": "c4b6e699a6d44abb968ce7cc05b2ffeb",
        "movieId": "7e3b99a9a89e42748f389bf94650ef4b"
    }
}

4、使用者(User)

{
    "user": {
        "username": "string, 使用者名稱/賬號",
        "password": "string, 登入密碼",
        "payPassword": "string, 支付密碼",
        "nickname": "string, 暱稱",
        "avatar": "string, 頭像連結",
        "description": "string, 個籤",
        "money": "double, 使用者賬戶餘額"
    },
    "example": {
        "username": "18819210086",
        "password": "xxxxxxxx",
        "payPassword": "xxxxxxx",
        "nickname": "風不定,人初靜",
        "avatar": "/static/images/user/18819253798.png",
        "description": "風不定,人初靜,明日落紅應滿徑。",
        "money": "1234.56"
    }
}

5、收藏關係(Favorite)

{
    "favorite": {
        "id": "uid, 資料庫ID",
        "username": "string, 使用者名稱",
        "movieId": "uid, 電影的資料庫ID"
    },
    "example": {
        "id": "8bf8a8998bcd4d9cba380107e46785c",
        "username": "18819210086",
        "movieId": "7e3b99a9a89e42748f389bf94650ef4b"
    }
}

6、優惠券(Coupons)

{
    "coupons": {
        "id": "uid, 資料庫ID",
        "discount": "double, 折扣, 5%、10%等",
        "condition": "double, 使用條件, 例如滿60元可用",
        "username": "string, 使用者名稱",
        "expiredTime": "date, 過期時間",
        "status": "integer, 優惠券狀態, 0: 未使用, 1: 已使用, 2: 已失效"
    },
    "example": {
        "id": "760f4f2150e84b5989f1149b80addb11",
        "discount": "0.1",
        "conditions": "36",
        "username": "18819212345",
        "expiredTime": "1497628800000",
        "status": "0"
    }
}

7、訂單(Order)

{
    "order": {
        "id": "uid, 資料庫ID",
        "movieId": "uid, 電影的資料庫ID",
        "screenId": "uid, 場次的資料庫ID",
        "seat": "string, 座位",
        "price": "double, 訂單總額",
        "username": "string, 使用者名稱",
        "status": "integer, 訂單型別, 0:未支付, 1:待取票, 2:未上映, 3:待評價",
        "couponsId": "uid, 優惠券的資料庫ID",
        "createTime": "date, 訂單建立時間"
    },
    "example": {
        "id": "0201c7a8d99c41d9a6666d38a7a6363f",
        "movieId": "fc57ab4586284680a4285db878cab44e",
        "screenId": "58cc02902b0f45ad80938b125aade2d0",
        "seat": "36,37",
        "price": "80",
        "username": "18819210086",
        "status": "0",
        "couponsId": "760f4f2150e84b5989f1149b80addb11",
        "createTime": "1496546632000"
    }
}

8、評價(Comment)

{
    "comment": {
        "id": "uid, 資料庫ID",
        "username": "string, 使用者名稱",
        "movieId": "uid, 電影的資料庫ID",
        "rating": "integer, 評分, 取值範圍0-5",
        "content": "string, 評價內容"
    },
    "example": {
        "id": "13ee9e892892496e84b10ab392b333d9",
        "username": "18819210086",
        "movieId": "fc57ab4586284680a4285db878cab44e",
        "rating": "5",
        "content": "很好看,很刺激!!!"
    }
}

相關推薦

MonkeyEye電影售票系統--領域模型資料模型

案例來源:SYSU SE305 課程大作業。網際網路售票軟體是比較常見的軟體系統。通常由多個零售系統和多個供給系統系統。 機票、酒店房間、電影票似乎是風馬牛大相關的系統,但它們之間存在極其相似的業務模型。 以電影票為例,格瓦拉、蜘蛛網、騰訊等等都做類似的電

MonkeyEye電影售票系統--前端技術要點總結

案例來源:SYSU SE305 課程大作業。網際網路售票軟體是比較常見的軟體系統。通常由多個零售系統和多個供給系統系統。 機票、酒店房間、電影票似乎是風馬牛大相關的系統,但它們之間存在極其相似的業務模型。 以電影票為例,格瓦拉、蜘蛛網、騰訊等等都做類似的電

第一、二章資料庫系統概論資料模型

資料庫——是一種依照特定資料模型組織、儲存和管理資料的檔案集合。這些檔案一般存放在外部儲存器中,以便長久儲存資料,並可快速訪問。 資料模型是指描述事物物件的資料結構組成、資料語義聯絡、資料約束的抽象結構及其說明。 資料結構: 用於描述事物物件的靜態特徵,包括事物物件的資料組成、資料型別、資料

Flask高階應用05---模型資料遷移

新建專案做好基礎配置 一、Flask模型簡介 Flask預設並沒有提供任何資料庫操作的API 我們可以選擇任何適合自己專案的資料庫來使用 Flask中可以自己的選擇資料,用原生語句實現功能,也可以選擇ORM(SQLAlchemy,MongoEngine) SQLAlche

我對前後端資料模型資料流的理解

程式設計源於生活 程式設計是什麼?我們寫的業務程式碼是什麼?它和我們的現實世界有什麼關係? 我之前一直在想這個問題。現在我覺得,程式碼是對現實世界的一種抽象,源於生活又高於生活,他通過資料的方式來抽象現實世界的一些過程,可能是一次商業活動,可能是一次運動的過程等等。 資料是最基礎的東西,資料來源於自動採集的

[Ext JS6]檢視模型資料繫結

文章目錄 ViewModel 元件繫結 繫結的優先順序 子元件的繫結 雙向繫結 繫結和元件狀態 多值繫結 繫結記錄 關聯繫結 繫結的選

Netflix Media Database - 起源資料模型

前言 Netflix(美國最大的PGC視訊內容商)在18年下半年陸續發了幾篇文章來講述他們內部的NMDB系統的設計和實現,NMDB的全稱是Netflix Media Database,用於解決Netflix內部視訊結構化資料的統一儲存和分析問題。NMDB是完全由其內部業務需求驅動而孵化出來的,Netflix

【無私分享:從入門到精通ASP.NET MVC】從0開始,一起搭框架、做專案(2)建立資料庫資料模型

索引 簡述 我們建立一個數據庫然後生成資料模型,新增ADO.NET實體資料模型,這裡呢常用的有兩種方式,一種是DbFirst,一種是CodeFirst,為了簡便,我們使用DbFirst。有基礎的朋友可以使用CodeFirst,對專案沒有影響的。 專案準備 我們用的工具是:VS 2013 + Sql

資料模型的概念,資料模型的作用資料模型的三個要素

資料模型是資料庫中用來對現實世界進行抽象的工具,是資料庫中用於提供資訊表示和操作手段的形式架構。一般地講,資料模型是嚴格定義的概念的集合。這些概念精確描述了系統的靜態特性,動態特性和完整性約束條件

生成模型判別模型,自己看完資料後總結

1. Ref:  http://blog.csdn.net/zouxy09/article/details/8195017  講的非常清晰了。http://www.cnblogs.com/lifegoesonitself/p/3437747.html ---進一步補充豐富理

簡單的部落格系統(二)Django編寫資料模型

設計資料庫和表結構是做網站的基礎。在Django中,不需要通過SQL語句直接跟資料庫打交道,而是完全用Python的類來建立資料

判別模型生成模型

使用 sin cow ria regress gauss 生成 == 給定 【摘要】 - 生成模型:無窮樣本==》概率密度模型 = 產生模型==》預測 - 判別模型:有限樣本==》判別函數 = 預測模型==》預測 【簡介】 簡單的說,假設o是觀察值,

生成模型判別模型

特征 數據 學習方法 最大 mem 針對 表示 不能 問題 1、定義: 生成模型(或稱產生式模型)和判別模型(或稱判別式模型)的本質區別在於模型中觀測序列x和狀態序列y的決定關系。前者假設y決定x,後者假設x決定y。 2、生成模型特點 2.1、生成模型以“狀態序列y按照一定

對星型模型雪花模型的簡單理解

alt 存在 body 所有 維度 info 多層 分享 post 星形模型 雪花模型 星型模型是所有維度表都是連接在一個事實表上面,雪花模型是將維度表拆分地更加詳細,是多層次的。 在星型模型的維度表裏面,一張維度表儲存了眾多存在冗余的信息,為什麽冗余,在哪裏冗余,我

Actor模型CSP模型的區別

  Akka/Erlang的actor模型與Go語言的協程Goroutine與通道Channel代表的CSP(Communicating Sequential Processes)模型有什麼區別呢?   首先這兩者都是併發模型的解決方案,我們看看Actor和Channel這兩個方案的不同:

【IM】關於引數模型模型的理解

學習模型按照引數與維度還是樣本相關,可分為引數模型(引數與維度相關)和核模型(引數與樣本相關)。 對於核模型的核方法或核函式說明有如下博文,參考《圖解機器學習》理解如下兩頁。 https://blog.csdn.net/fjssharpsword/article/details/8166

MVC模型MTV模型

MVC模型 MVC 設計模型是一種使用 Model View Controller( 模型-檢視-控制器)設計建立 Web 應用程式的模式。 Model(模型):是應用程式中用於處理應用程式資料邏輯的部分。     通常模型物件負責在資料庫中存取資料。 View(檢視):是

機器學習之---生成模型判別模型

  監督學習方法可分為兩大類,即生成方法與判別方法,它們所學到的模型稱為生成模型與判別模型。 判別模型:判別模型是學得一個分類面(即學得一個模型),該分類面可用來區分不同的資料分別屬於哪一類; 生成模型:生成模型是學得各個類別各自的特徵(即可看成學得多個模型),可用這些

判別模型生成模型——機器學習

轉載自:https://www.cnblogs.com/zeze/p/7047630.html    判別式模型(discriminative model) 產生式模型(generative model)

bs模型cs模型

  bs模式 客戶端通過瀏覽器,瀏覽web伺服器上的網頁,這樣的模型叫bs模型,b指客戶端browser,s指服務端server。在客戶端和瀏覽器端之間走的報文是http協議(即超文字傳輸協議)   cs模型 客戶端(client)發報文,伺服器(