영화관 예약 시스템의 개념 모델링
개요
개념 모델링의 연습으로 모 영화관의 표 예약 시스템의 개념 모델을 만들어 보았다
생성 방법
입장권 발행 시 사이트의 흐름도에 따라 순서대로 모델링을 진행하다
사이트 흐름도
1단계: 영화관 선택
체인점이 같은 시스템을 사용하는 전제에서 각자의 영화관이라는 개념이 필요하다.
plantuml
@startuml
hide circle
hide methods
skinparam shadowing false
class 映画館_theater{
名前
}
@enduml
2단계: 작품 선택과 일정
시간표 화면에서 보고 싶은 작품과 일정을 고르다.화면에서.
여기서 고민하는 포인트는 다음과 같다.
극장이라는 개념은 영화관이나 방에 분배해야 한다
첫 번째로 선택한 대상, 여기는 사건입니다.시간 계획 중 하나를 어떻게 말해야 할지 고민 중입니다. 결론은 Google 달력의 영어 버전에서 각 계획이 이벤트로 간주되는 곳에서 나온 것입니다.(겸사겸사 일본어 버전에서는 예약이라고 부른다.)
두 번째 극장의 개념은 영화관은 극장이고 영화관 안의 각 방은 방이다.원래 나는 지역 전문가에게 물어보면서 이 방면의 토론을 추진하는 것이 가장 좋다고 생각한다.
plantuml
@startuml
hide circle
hide methods
skinparam shadowing false
class 映画館_theater{
名前
}
class プログラム_program{
名前
時間
}
class ルーム_room{
名前
}
class イベント_event{
開始時刻
}
class 予約_reservation{}
映画館_theater "1"--"1..*" ルーム_room
ルーム_room "1"--"*" イベント_event
プログラム_program "1"--"*" イベント_event
イベント_event "1"--"*" 予約_reservation
@enduml
이 작품과 관련해서는 영화관에서 생중계되는 등 영화 이외의 활동도 있어 프로그램의 일부로 바라본다.또 주문한 단위는 예약이라고 한다.
3단계: 좌석 선택
선택한 방의 좌석표를 표시합니다. 상한선까지 선택할 수 있습니다.
여기 자리는요.
plantuml
@startuml
hide circle
hide methods
skinparam shadowing false
class 映画館_theater{
名前
}
class ルーム_room{
名前
}
class プログラム_program{
名前
時間
}
class 座席型_seatType{
名前
最大人数
追加料金
}
class 座席_seat{
座標
}
class イベント_event{
開始時刻
}
class 予約_reservation{}
class 知識 {
1予約あたりの最大席数
}
映画館_theater "1"--"1..*" ルーム_room
ルーム_room "1"--"*" イベント_event
座席_seat "*"-"1" ルーム_room
プログラム_program "1"--"*" イベント_event
イベント_event "1"--"*" 予約_reservation
座席型_seatType "1"--"*" 座席_seat
座席_seat "*"--"*" 予約_reservation
note "[制約] 1予約あたりの座席数は\n「1予約あたりの最大席数」以下" as N1
プログラム_program -[hidden]l ルーム_room
@enduml
좌석의 좌표는 화면의 어디에 표시해야 하는지에 대한 정보로서 어떤 형태로 들어가는지 알 수 없다.4단계: 구매자의 정보 입력
구매자 이름 등을 입력하는 화면입니다.참고한 사이트라면 다음과 같은 두 가지 경로가 있다. ① 로그인 후 가입한 사용자 정보를 사용하고 ② 계좌를 발행하지 않고 주문한다. 그러나 이러한 처리는 통용되고 흥미가 없기 때문에 생략한다.
plantuml
@startuml
hide circle
hide methods
skinparam shadowing false
class 映画館_theater{
名前
}
class ルーム_room{
名前
}
class プログラム_program{
名前
時間
}
class 座席型_seatType{
名前
最大人数
追加料金
}
class 座席_seat{
座標
}
class イベント_event{
開始時刻
}
class 予約_reservation{}
class 知識 {
1予約あたりの最大席数
}
class ユーザー_user {
氏名
電話番号
メールアドレス
}
映画館_theater "1"--"1..*" ルーム_room
ルーム_room "1"--"*" イベント_event
座席_seat "*"-"1" ルーム_room
プログラム_program "1"--"*" イベント_event
イベント_event "1"--"*" 予約_reservation
座席型_seatType "1"--"*" 座席_seat
座席_seat "*"--"*" 予約_reservation
予約_reservation "*"-"1" ユーザー_user
note "[制約] 1予約あたりの座席数は\n「1予約あたりの最大席数」以下" as N1
プログラム_program -[hidden]l ルーム_room
@enduml
5단계:선택표의 종류
선택표의 종류(어른, 아이, 노인 등).선택할 수 있는 것은 지정된 좌석에 대응하는 선택 방법뿐이다.
plantuml
@startuml
hide circle
hide methods
skinparam shadowing false
class 映画館_theater{
名前
}
class ルーム_room{
名前
}
class プログラム_program{
名前
時間
}
class 座席型_seatType{
名前
最大人数
}
class 座席_seat{
座標
}
class イベント_event{
開始時刻
}
class 予約_reservation{}
class 知識 {
1予約あたりの最大席数
}
class ユーザー_user {
氏名
電話番号
メールアドレス
}
class チケット型_ticketType{
料金
}
note "[制約] 1予約あたりの座席数は\n「1予約あたりの最大席数」以下" as N1
note "[制約] 予約と紐づく座席の型に\n対応したチケットのみ紐付け可能" as N2
チケット型_ticketType "*"-"*" 座席型_seatType
映画館_theater "1"--"1..*" ルーム_room
ルーム_room "1"--"*" イベント_event
座席_seat "*"-"1" ルーム_room
プログラム_program "1"--"*" イベント_event
イベント_event "1"--"*" 予約_reservation
座席型_seatType "1"--"*" 座席_seat
座席_seat "*"--"*" 予約_reservation
予約_reservation "*"-"1" ユーザー_user
チケット型_ticketType "1"--"*" チケット_ticket
チケット_ticket "*"--"1" 予約_reservation
座席_seat "*"--"1" チケット_ticket
座席_seat..N1
チケット_ticket..N2
プログラム_program -[hidden]l ルーム_room
@enduml
6단계: 구매 수속
각종 결제 방법으로 비용을 지불하다.여기도 통용되기 때문에 간소화하여 모델링을 진행한다.
plantuml
@startuml
hide circle
hide methods
skinparam shadowing false
class 映画館_theater{
名前
}
class ルーム_room{
名前
}
class プログラム_program{
名前
時間
}
class 座席型_seatType{
名前
最大人数
}
class 座席_seat{
座標
}
class イベント_event{
開始時刻
}
class 予約_reservation{
/支払済
}
class 知識 {
1予約あたりの最大席数
}
class ユーザー_user {
氏名
電話番号
メールアドレス
}
class チケット型_ticketType{
料金
}
class 決済{
}
note "[制約] 1予約あたりの座席数は\n「1予約あたりの最大席数」以下" as N1
note "[制約] 予約と紐づく座席の型に\n対応したチケットのみ紐付け可能" as N2
チケット型_ticketType "*"-"*" 座席型_seatType
映画館_theater "1"--"1..*" ルーム_room
ルーム_room "1"--"*" イベント_event
座席_seat "*"-"1" ルーム_room
プログラム_program "1"--"*" イベント_event
イベント_event "1"--"*" 予約_reservation
座席型_seatType "1"--"*" 座席_seat
座席_seat "*"--"*" 予約_reservation
予約_reservation "*"-"1" ユーザー_user
チケット型_ticketType "1"--"*" チケット_ticket
チケット_ticket "*"--"1" 予約_reservation
座席_seat "*"--"1" チケット_ticket
座席_seat..N1
チケット_ticket..N2
予約_reservation "0..1"--"1" 決済
プログラム_program -[hidden]l ルーム_room
@enduml
단계 7: 발행 발행 번호
결제가 끝나면 발행번호가 나옵니다.
plantuml
@startuml
hide circle
hide methods
skinparam shadowing false
class 映画館_theater{
名前
}
class ルーム_room{
名前
}
class プログラム_program{
名前
時間
}
class 座席型_seatType{
名前
最大人数
}
class 座席_seat{
座標
}
class イベント_event{
開始時刻
}
class 予約_reservation{
/支払済
/? 発券番号
}
class 知識 {
1予約あたりの最大席数
}
class ユーザー_user {
氏名
電話番号
メールアドレス
}
class チケット型_ticketType{
料金
}
class 決済{
}
note "[制約] 1予約あたりの座席数は\n「1予約あたりの最大席数」以下" as N1
note "[制約] 予約と紐づく座席の型に\n対応したチケットのみ紐付け可能" as N2
note "[導出?] 発券番号は予約自体を指す or 新規発行する" as N3
チケット型_ticketType "*"-"*" 座席型_seatType
映画館_theater "1"--"1..*" ルーム_room
ルーム_room "1"--"*" イベント_event
座席_seat "*"-"1" ルーム_room
プログラム_program "1"--"*" イベント_event
イベント_event "1"--"*" 予約_reservation
座席型_seatType "1"--"*" 座席_seat
座席_seat "*"--"*" 予約_reservation
予約_reservation "*"-"1" ユーザー_user
チケット型_ticketType "1"--"*" チケット_ticket
チケット_ticket "*"--"1" 予約_reservation
座席_seat "*"--"1" チケット_ticket
座席_seat..N1
チケット_ticket..N2
予約_reservation..N3
予約_reservation "0..1"--"1" 決済
プログラム_program -[hidden]l ルーム_room
@enduml
발행번호가 새로 발행됐는지 아니면 예약 실체 자체라는 명칭(ID)이 바뀌었는지 판단할 수 없기 때문[導出?]
.그리고 저는 개념적으로 중요한 역할이 없으면 각 실체의 ID를 생략해서 씁니다.깨끗이 정리하다
개념을 대충 적어 놓고 좀 정리하다
plantuml
@startuml
hide circle
hide methods
skinparam shadowing false
package 映画館知識レベル <<Cloud>>{
class 映画館_theater
class ルーム_room
class 座席型_seatType
class 座席_seat
}
package イベント知識レベル <<Cloud>>{
class イベント_event
class プログラム_program
}
package チケット販売知識レベル <<Cloud>>{
class チケット型_ticketType
class 知識
}
class 映画館_theater{
名前
}
class ルーム_room{
名前
}
class プログラム_program{
名前
時間
}
class 座席型_seatType{
名前
最大人数
}
class 座席_seat{
座標
}
class イベント_event{
開始時刻
}
class 予約_reservation{
/支払済
/? 発券番号
}
class 知識 {
1予約あたりの最大席数
}
class ユーザー_user {
氏名
電話番号
メールアドレス
}
class チケット型_ticketType{
料金
}
class 決済{
}
チケット型_ticketType "*"-"*" 座席型_seatType
映画館_theater "1"--"1..*" ルーム_room
ルーム_room "1"--"*" イベント_event
座席_seat "*"-"1" ルーム_room
プログラム_program "1"--"*" イベント_event
イベント_event "1"--"*" 予約_reservation
座席型_seatType "1"--"*" 座席_seat
座席_seat "*"--"*" 予約_reservation
予約_reservation "*"-"1" ユーザー_user
チケット型_ticketType "1"--"*" チケット_ticket
チケット_ticket "*"--"1" 予約_reservation
座席_seat "*"--"1" チケット_ticket
予約_reservation "0..1"--"1" 決済
@enduml
이용자의 예약을 통해 제작된 실체(운용수준)는 표, 예약, 이용자, 결제 4개로 쉽게 알 수 있다.물론 완벽한 개념도는 아니다.예컨대
총결산
개념 모델링 연습으로 표 예약 시스템의 개념도를 써 보았다.일본어에서'예정'이라고 많이 부르는 개념을'이벤트'라고 부르는 것은 제 개인적인 가장 큰 수확입니다.
Reference
이 문제에 관하여(영화관 예약 시스템의 개념 모델링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/fuuki/articles/20201206-movie-ticket-modeling텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)