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
660
実践データベース設計サブ資料:①概念データモデリング
2024年度リクルート エンジニアコース新人研修の講義資料です
Recruit
PRO
August 09, 2024
Tweet
Share
More Decks by Recruit
See All by Recruit
Azure Functions HTTPトリガーにおけるタイムアウトでハマったこと
recruitengineers
PRO
2
180
実務につなげる数理最適化
recruitengineers
PRO
7
740
うちにも入れたいDatadog
recruitengineers
PRO
2
580
リクルートのデータ基盤 Crois 年3倍成長!1日40,000コンテナの実行を支える AWS 活用とプラットフォームエンジニアリング
recruitengineers
PRO
2
350
Splunk Enterpriseで S3のデータを直接検索してみた!
recruitengineers
PRO
2
160
Looker APIを使い倒す ユーザーフィードバックを基にした継続的改善サイクル
recruitengineers
PRO
3
58
Kaggleふりかえり会〜LLM 20 Questions & ISIC 2024
recruitengineers
PRO
2
240
Balancing Revenue Goals and Off-Policy Evaluation Performance in Coupon Allocation
recruitengineers
PRO
2
52
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
400
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
Producing Creativity
orderedlist
PRO
342
39k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
Typedesign – Prime Four
hannesfritz
40
2.4k
Documentation Writing (for coders)
carmenintech
67
4.5k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
A Tale of Four Properties
chriscoyier
157
23k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Scaling GitHub
holman
459
140k
Embracing the Ebb and Flow
colly
84
4.5k
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 ページ