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
78
VPC Traffic Mirroring とOSS を利⽤した ネットワークフォレンジック基盤の構築・運⽤
recruitengineers
PRO
1
44
スタサプ 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
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
How STYLIGHT went responsive
nonsquared
95
5.2k
The Invisible Side of Design
smashingmag
298
50k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Documentation Writing (for coders)
carmenintech
65
4.4k
Happy Clients
brianwarren
98
6.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Fireside Chat
paigeccino
34
3k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
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 ページ