Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
実践データベース設計サブ資料:①概念データモデリング
Search
Recruit
PRO
August 09, 2024
5
620
実践データベース設計サブ資料:①概念データモデリング
2024年度リクルート エンジニアコース新人研修の講義資料です
Recruit
PRO
August 09, 2024
Tweet
Share
More Decks by Recruit
See All by Recruit
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
72
VPC Traffic Mirroring とOSS を利⽤した ネットワークフォレンジック基盤の構築・運⽤
recruitengineers
PRO
1
43
スタサプ ForSCHOOLアプリのシンプルな設計
recruitengineers
PRO
3
1k
リクルート流データ基盤塾~鶴谷と学ぶ~
recruitengineers
PRO
5
240
『SUUMO』 スマホサイト デザインリニューアルへの挑戦
recruitengineers
PRO
5
340
『リクルートダイレクトスカウト』 のリニューアルから振り返る: ビジョンドリブンの可能性
recruitengineers
PRO
3
310
負債あるモノリスのオブザーバビリティに組織で向き合う
recruitengineers
PRO
9
400
あなたの知らないiOS開発の世界
recruitengineers
PRO
4
330
大規模プロダクトにおける組織作りと技術ポートフォリオマネジメント
recruitengineers
PRO
4
490
Featured
See All Featured
Unsuck your backbone
ammeep
668
57k
Facilitating Awesome Meetings
lara
50
6.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Adopting Sorbet at Scale
ufuk
73
9.1k
How to Ace a Technical Interview
jacobian
276
23k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
How GitHub (no longer) Works
holman
310
140k
Done Done
chrislema
181
16k
KATA
mclloyd
29
14k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Transcript
サブ資料①:概念データモデリング(R書店) 概念データモデルとは ビジネス(業務)の観点でシステムに必要なデータの全体像を体系的に表現したデータモデル R書店全体のビジネスフロー R書店のビジネスフロー 概念データモデルの作成手順 ・Step1 リソース系エンティティの抽出と定義 ・Step2 イベント系エンティティの抽出と定義
・Step3 サブジェクトエリアに分割 ・Step4 リレーションシップの線を引く ・Step5 定義を確認 1 ページ
顧客のサイト訪問から購入までの流れ 今回のシステムでは顧客の行動として以下を想定 1. R書店のWebサイトを訪れる 2. 商品(書籍..etc)を検索/閲覧する 3. 購入希望商品をショッピングカートに入れる 4. アカウントを登録する
5. 配送先を登録(確認)する 6. 支払い方法を登録(確認)する 7. レジに進む 8. 商品代、配送料、配送予定日等を確認して注文を確定する 9. R書店より確認メールが届く(※メールは今回はMockで対応) 10. 配送予定日に商品が届く 11. クレジット会社から引き落としされる 12.クレジットの明細を確認する(引き落とし額を確認する) 業務フロー図(詳細はFigamaで確認) 全体の業務フロー R書店の現状(仮) ここではR書店の現状を以下のように想定 ・単一のWebショップ(複数店舗は存在しない)で、書籍がメインだが、DVD等の関連商品 も売りたい。将来的には商品の種類を増やしたいと考えている ・商品の発送はR書店運営の配送センターが担い、複数の配送業者が登録している ・商品の決済はクレジットカードで行い、決済代行システムを使用している 2 ページ
決済予約(オーソリ)とは 決済は即確定ではなく、クレジット会社の与信チェックを経て確定される それにともない、決済ステータスの管理も必要になる 補足:決済の仕組み クレジットカード決済の仕組み 出典:https://www.gmo-pg.com/blog/articles/images/article-096_thumb07.jpg 今回決済はクレジットカードのみで行うものとする クレジットカード決済を実現するにはクレジットカード会社や決済代行会社のゲートウェイ (システム)との連携が必要になる ※今回はR書店が決済代行と連携することを想定
決済 3 ページ
ユースケースの整理 今回想定するアクターとユースケースは以下 アクター ・顧客 ・R書店サイト担当者 ・配送センター担当者 ・配送業者(配達担当者) システム要件の整理:今回の開発範囲 今回は以下の仕様で開発(今回は会計や各種申請システム等との連携等は省く) R書店
オンラインストアのアプリケーションおよび管理画面を作成 配送センター 在庫情報の管理画面を作成 配送業者 配送情報管理の画面を作成 決済代行ゲートウェイ モック(Mock)で対応 4 ページ
Step1 リソース系エンティティの抽出と定義 業務ルール、業務規定、要求仕様、要件定義書、新システム全体図等から、ユースケースやビジネス フローの実現に必要なリソース系を抽出し、次にそれらの概要を定義する 全てのエンティティには抽出に足るだけの意味があるので、それらを明らかにすること そのエンティティは「何のために存在するのか?」、「誰が管理するのか?」等を中心にして定義す る なお、その時点でわかる範囲で説明・制約・ルール・範囲になりうるものは余さず洗い出す リソース系エンティティの初期のピックアップ Step2
イベント系エンティティの抽出と定義 リソース系と同様に、現時点で把握可能なイベント系エンティティを抽出する また、各エンティティの概要定義も同様に行う イベント系エンティティの初期のピックアップ 注文と注文詳細の分離 後ほどリレーションを貼る際に、注文と商品を直接つなぐこともあるが、ここでは注文と注文明細は 分離させるものとする 5 ページ
Step3 サブジェクトエリアに分割 全体のデータモデルをサブジェクトエリアに分割する そのエリアひとつひとつについて、サブジェクトエリアの一覧表と、現時点で把握可能な各サブジェ クトエリアに属するエンティティの一覧表を作成する サブジェクトエリアの初期整理 6 ページ
顧客エンティティ 今回は顧客情報を扱うエンティティとして定義 Step4 リレーションシップの線を引く 抽出したエンティティ同士の間にリレーションシップの線を引き、各リレーションシップの意味つい て定義を行う すべてのリレーションシップの線には、それが引かれた理由があり、引かれた方向、矢印にも意味が ある それらを明確にして、リレーションシップの意味を定義する なお、リレーションシップの意味の定義文は、矢印の方向に沿って「親(エンティティ)は子(エン
ティティ)を~する」というように「~する」という動詞句で統一すると解りやすい 7 ページ
商品エンティティ 今回は書籍以外の文具やCD/DVD等も入る想定(後ほど論理データモデリングで詳述) ショッピングカートエンティティ 顧客が商品を追加するためのカートを扱うエンティティとして定義 出版社エンティティ 今回は商品となる書籍の出版元の情報として扱う 8 ページ
クレジットカードエンティティ 今回は唯一の決済手段として扱い、個々のユーザに紐づく従属エンティティ 注文エンティティ 注文情報を扱うためのエンティティ 配送会社エンティティ 今回は商品を配送する会社の情報を扱うエンティティとして定義 なお、物流会社と配送会社は意味合いが違うが、今回はR書店の配送センターに出入りする配送会社 を想定 9 ページ
配送モデル そもそも出荷と配送は別 出荷:倉庫から商品を棚出しして送り出すこと 配送:実際に購入者の元に届けること 両者の区別と要件や設計上の整理が必要 ※今回は出荷(Shipping)情報を配送情報に含める 出荷(Shipping)と配送(Delivery)の違い 注文詳細エンティティ 注文エンティティから切り出し 決済エンティティ
決済情報を扱うエンティティとして定義 注文エンティティに従属し、クレジットカードともリレーションを貼る 10 ページ
Step5 定義を確認 エンティティの概要とリレーションシップの意味ついての定義が、きちんと記述されているかを確 認する 11 ページ