Document

データモデリング
トップダウンモデルと
ボトムアップモデルの融合
Quiz: トップダウンモデルの復習
① 対象システムの要件に着目
②
ここは何だったでしょう?
③ 想定される属性を付加
④ 一意に識別できる属性を候補キーにする
以下のうちから,お選びください.
• 思いつくエンティティをすべて列挙する
• 必要と思われるエンティティを切り出す
• イベント・エンティティを切り出す
正解は次のスライド
トップダウンモデルの復習
①
②
③
④
対象システムの要件に着目
必要と思われるエンティティを切り出す
想定される属性を付加
一意に識別できる属性を候補キーにする
•
トップダウンモデルとボトムアップモデルを対
比
– トップダウンモデルを使い、ボトムアップモデルに
漏れがないことをチェック
DBMe書店のトップダウンモデル
• 大きすぎて入りません。
• 教科書p.148-149の図9-1をご覧ください
DBMe書店のボトムアップモデル
エンティティだけを切り出すと
これも見づらいから
教科書p.147の表9-1を
ごらんください
エンティティを比較
• トップダウンモデルのほうが広範囲のデータを
対象にしている
– トップダウンにあるエンティティがボトムアップにはな
い
– 「商品」については集中的に分析したので、ボトム
アップモデルのほうが細かく分割されている。
• トップダウンモデル
– システムの全体像
• ボトムアップモデル
– 特定のアクティビティについて詳細な分析
トップダウン vs. ボトムアップ
• Webでの地図検索に似ている
– 最寄駅名をたよりに駅の位置から目的地を探す
場合、広域図から地域の拡大図へ
– 目的地の番地から最寄りのホテルを探す場合,
地域の拡大図からすこしずつ広域図に
– どちらが優れているというわけでなく,交互に使う
ことが大切
[補助] 地図検索に本当に似てるの?
広域図
拡大図
モデルの融合
以下の順で実施
① エンティティの併合
② 主キーの統一
③ リレーションシップ付け
• 一方のモデルを基準に他方のモデルを融合
• 主キーとして,今回はボトムアップモデルを採用
なぜなら
–
–
トップダウンモデルでは、実在するデータ
ボトムアップでは、現実的データ(ときにはコードを採用)
主キーの対比
実在するデータを主キーに
現実的な主キー
融合では
こちらを採用
統合したモデル
•
•
•
大きすぎて入りません。
教科書p.152-153の図9-3をご覧ください
図だけでなくモデルも大きすぎるので検証
不可能.こんなとき便利な機能は?
① サブジェクト分割
② モデル分割
③ テーブル分割
正解は次のスライド
サブジェクト ごとに検証
ここでは以下のように分割して検証
–ネット販売
–顧客管理
–収納決済
–商品管理
–発注・仕入れ
ボトムアップモデルを基軸に
トップダウンモデルでの
エンティティを追加していく
トップダウンモデルのみに現れた
エンティティに○が付いている
「発注・仕入れ」の場合で説明すると
• 「書籍」には「商品在庫」として保持するものと
保持しないもの
• 在庫がなければ「書籍卸(取次店)」へ「発注」
し「入荷」
• どの「書籍」をどの「書籍卸(取次店)」から仕
入れるかを示すために「取次書籍」が必要
– 「書籍卸(取次店)」と「書籍」は多対多の関係
– 「取次書籍」が必要
• 「書籍」の注文の書籍名と数量を示すため、
発注明細が必要
トップダウンとボトムアップを比較すると、
不足しているエンティティが見えてくる
[補助] どうして見えてくるの?
• トップダウンは、全
体を見ているが詳
細は見ていない。
• ボトムアップは、一
部分の詳細は見て
いるが、全体を見て
いない。
ボトムアップ
トップダウン
ここに死角あり
現行システムとの整合性
• インタネットを使わないシステムと融合
• 現行システムの要件
– 稼動中のDBのスキーマからモデルを引き出す
リバース・エンジニアリング
通常の商用DBにはツールが用意されている
でも、エンティティや属性の名は英語のまま
– ポイントカード制、獲得ポイントでキャッシュバック
– 店舗別の売り上げ集計システム
エンティティの修正
• 現行モデルの「ポイント会員」のうち、氏名と住所は
新モデルの「顧客」に移す。
• 「購入履歴」は、現行モデルのほうが詳細化されて
いたので、現行モデルを採用
• 現行モデルのデータが新モデルに移行できるかの
検査を怠るな!
– 現行モデルにあって新モデルにないデータ項目がよく現
れる
– 同じデータ項目でも型が異なっていて移行できないことが
ある。
新旧で整合したモデル
• 大きすぎて入りません。
• 教科書p.162-163の図9-10をご覧ください
整合モデルでのエンティティ定義表
• 大きすぎて入りません。
• 教科書p.164-169の表9-4をご覧ください
(古典的)データモデリングのまとめ
• トップダウンによるモデリング
– エンティティ、データ項目、主キー、リレーションシップ
• ボトムアップによるモデリング
– 正規化
• 1つの事実は1箇所で管理
– CRUD分析
• タイミングによるエンティティの分割
• トップダウンとボトムアップの融合
– これらは1度実施すると終わるのでなく、繰返し実施する
ことで、抜けがなくなる