データモデリング CRUD分析
Quiz: CRUD分析とは 生成,参照,更新,削除を,だれがいつ実施するのかのタイミングの分析 実施者とタイミングを見るためDFDを使う
DFDを活用 復習: DFDでは, アクティビティ データの流れ 保存されるデータ(エンティティ) データ発生源(組織) ボックスで表現 矢印で表現 保存されるデータ(エンティティ) データストアで表現 データ発生源(組織) エクスターナルで表現
DBMe書店のDFD
DFD 図8-1のDFD 要求分析のためのDFD データモデリングのためのDFD 一般に入ってくる矢印を入力データ,出て行く矢印を出力データと捕らえれば理解はできる. 要求分析のためのDFD アクティビティの流れを捉えるのが目的 データモデリングのためのDFD アクティビティ間を流れる詳細データ記述が目的 DFDで,だれが何をいつ更新したかを突き止める
Quiz: CRUD分析は,どのレベルまで実施すべきか データベースのレベル 作成・参照・更新された表はどれか? エンティティのレベル 作成・参照・更新された行(インスタンス)はどれか? 属性のレベル 作成・参照・更新された属性はどれか? 属性レベルで実施するのは,後に紹介するIRUN分析
CRUD分析 Create(生成), Refer(参照), Update(更新), Delete(消去)の頭文字 特定データについて発生から消滅までを分析 データのライフサイクル(一生)の分析 データモデルはある時点でのスナップショット 同じキーで一意に定まるデータをひとまとめに ライフサイクルによるエンティティの設定 属性の発生,更新,消滅のタイミング でまとめる これらはトレードオフ データ・モデラーと業務担当者で昔から揉めるところ
エンティティ主管部署の決定 主管部署 2種類の図を突き合わせて主管部署を決定 データの発生から消滅までについての責任を負う部署 データの所有者 2種類の図を突き合わせて主管部署を決定 エンティティとその間の関係を示す図(ER図) 業務プロセスのDFD
小売業の商品開発を例としたER図
小売業の商品開発を例としたDFD エクスターナル アクティビティ データストア
処理の流れ 「バイヤー」により「新商品提案」がなされ、「商品基本データ」が作成される。 「商品企画部」で「新商品採用」が決まったら、どの分類に属する商品か「商品カテゴリー」を決め、画像データを含むサイズや形状などの「商品カタログ」を作成する。 「商品仕入部」でどの「メーカー」に発注し、どこの「仕入業者」から仕入れるかを決定する。 「販売促進部」では、販売価格を含む「販売属性」とどの地域で売り出すかの「販売地域」を決定する。
DFDの矢印,もしくはそれにつながったデータストア マトリックスからの主管部門決定 エンティティと各属性決定部門のマトリックス 作成している 部門が主管部門 DFDの矢印,もしくはそれにつながったデータストア DFDの エクスターナル
CRUD分析 特定のアクティビティに着目して, 「配送・支払い指定」で 入る矢印と,出る矢印にエンティティを割り当てる 出るエンティティについて,このアクティビティで 生成されるのか 更新されるのか を分析 「配送・支払い指定」で 商品請求先 商品配送先 は生成される DBMe書店のDFD
発生タイミングによるエンティティ分割 トップダウン分析では「注文内容」エンティティに「商品請求先」と「商品配送先」は含まれる 「注文内容」 生成時では,「顧客」エンティティの住所が「商品請求先」と「商品配送先」のデフォルト値 しかし後の「配送・支払い指定」で変更可能 「配送・支払い指定」で「商品配送先」を生成と考えるべき 「商品請求先」「商品配送先」を別のエンティティとして分割
IRUN分析 Insert(挿入), Refer(参照), Update(更新), Null(空値設定)の略 エンティティでなく,その内部の属性値についてのCRUD分析 特定アクティビティに着目して,挿入や更新される属性をピックアップする
配送支払い指定のIRUN分析 顧客が登録した属性が表示されるが,それが更新される.
Quiz: なぜ,CRUD分析とは別にIRUN分析が必要か? どの属性が更新されたかがわからないと,正確なモデリングができないから? 正規化により,エンティティから属性が切り離されたときに備えて 他の属性から導出される属性の値を見切るため その属性と同時に更新される他の属性とその関係式が把握できれば,アクティビティを見切ったことになる
更新される他属性との関係式の把握 属性「商品配送料」の値は他の属性値により変化 1回の注文で通常は300円. 購入金額が3000円以上は無料 図が小さいので 教科書p.142 図8-10 をご覧ください. 属性「商品配送料」の値は他の属性値により変化 1回の注文で通常は300円. 購入金額が3000円以上は無料
エンティティから見た更新の把握 今度は各エンティティに対し,そのライフサイクルをまとめる どこで生成・更新・削除されるかを調べる 結果をエンティティとアクティビティのマトリックスにまとめる 特に,生成については 頻度や増分の予測値があると,のちの物理的設計で必要ディスクの容量を見積もるのに役立つ
エンティティ「注文」「注文明細」の ライフサイクル
「注文」「注文明細」のライフサイクル ショッピングカート内容が確定したとき,「注文」「注文明細」が生成される レジカウンタで配送先,支払い方法が指定される 注文確定時に,請求書番号が自動発番される.注文がキャンセルされると「注文」「注文明細」が削除される