simon’s diary

思うがままに書き綴る。。。

DB設計のデータモデリングに関する備忘録

当ブログでは技術関係の記事は書かない予定でしたが、学んだ内容を自分でアウトプットしたほうが、知識の定着が良いのでたまに技術よりの記事も書きます。学んだ内容をわかりやすく解説しようとは思っていません。あくまで学んだ知識の備忘録としてまとめています。それ故、記事のタイトルもてきとーです。

現在、学んでいる本はこちら。

www.amazon.co.jp

わかりやすすぎます。三回は読みます、はい。

プロセス中心アプローチ

成果物:DFD(Data Flow Diagram)
データの一元管理ができていないので、DB設計が難しい

データ中心アプローチ

データを先に考え、1事象を1か所に管理する方法。DB設計ではこちらを利用すべき。

 スキーマ

「オブジェクトの集合」または「データベースの構造」

DB設計フロー

概念設計→論理設計→物理設計の手順で行う。概念設計、論理設計の一連の流れをデータモデリングと定義する。

概念設計:業務分析を行い、システムに依存しない正規化されたデータモデルを作成

論理設計:アプリケーションの性能要求の考慮し、必要があればデータモデルの非正規化を行う。また、データベースの論理構造や索引(インデックス)を決定する。

物理設計:システム要件に合わせて、物理的な検討をする。

データモデリング手法

トップダウンアプローチ:経営層の方々と打ち合わせをしながら業務分析を行い、エンティティを抽出し、ER図を作成

ボトムアップアプローチ:実際の実務ではトップダウンアプローチの成果物である概略ER図(リレーションシップが洗い出されている)を用いて、属性の洗い出しを正規化を行いながら進める。改修案件などの場合は現在使用しているシステムの画面や帳簿などを参考する。

トップダウンアプローチ

1.エンティティを洗い出す

・業務分析資料やエンドユーザの説明の中から、名詞を洗い出す。

・洗い出した名詞を分類し、エンティティとすべきか検討する。

2.リレーションシップを洗い出す

・エンティティで文章を作る

・カーディナリティ(基数)を定義する

・オプショナリティを定義する。

3.属性を洗い出す 

4.洗い出した属性の検証

・一つのオカレンスに対して複数値を持つ場合は、別途新しいエンティティを定義

・他の値から導き出せる属性は削除する

4.オカレンスを識別する属性または属性の組み合わせを見つける

・識別子(主キー)は「一意である」、「NULLを持たない」、「永続性がある」の三つの性質を持たなければならない

ボトムアップアプローチ

  1. データを洗い出し、データ項目を定義する(未正規系)
  2. データの正規化を行う
  3. 概念データモデル(概念ER図)を作成する

正規化

正規化とは、データの重複を排除し、「1つの事実は1箇所にのみ存在させる」というデータの一元化を実現する方法。第一正規化から第五正規化までの5つの状態に分けられるが、一般的に第三正規化までしか行わない。

第一正規化:繰り返し項目の排除

第二正規化:主キーの一部の属性に従属する属性の分離(主キーが複数の属性の組み合わせになっている場合)

第三正規化:主キー以外の属性に従属する属性の分離