GW企画 3回目 ERDで学ぶDB設計

|
さて、3回目ではJavaから少し離れた話題も取り入れつつ実際に役立つプログラミングを学びましょう。

 この企画の受講状況を各自で管理してもらおうと思い、管理表をGW_firstJava.xlsからダウンロードできますので、使ってもらえると各自の進行具合が分かります。学び終えた場所の「日付」に「Ctrl+;」を「時刻」に「Ctrl+:」を押せば終了した日付と時刻を記憶できます。PDF版も用意してありGW_firstJava.pdfからダウンロードできます。なお、ファイルはウィルスバスターでウィルスチェックしています。

3-1.ERDで学ぶDB設計
●3-1-1.ERDとは何か
 2回目では、社員を説明する文章から社員クラスを作成しましたが、もっと複雑な関係が出てくる文章から直接クラスに書き直すのは大変になってきます。
そこで利用するのが「ERD」(Entity-relationship Diagram)又は「ER図」とも表現しますがどちらも同じです。
「ERD」は、実体関連図と訳されデータベース設計時に利用される事が多く、オブジェクトやクラス間の関連を把握するのに便利です。
その為に何段階かの手順が必要ですが、難しく考える事はありません。
手順を列挙してみると、
1.文章の把握
2.文章から情報を抽出
3.第一正規化
4.第二正規化
5.第三正規化
6.ERD
の順になります。

●3-1-2.文章の把握
 はじめに、何と言っても文章を知らない事には始まりません。
以下は今回作業を進める為の文章です。
ジャバ銀行という銀行がありユーザは登録する事によりユーザIDごとに口座を作ることが出来ます。
銀行にユーザが登録できる数は制限がありませんが、ユーザIDは他と重複する事ができません。
ユーザは、ユーザID・名前・パスワード・生年月日の要素を持っています。
口座は、口座番号・預金金額の要素を持っています。
ユーザは、指定した口座番号、ユーザID及びパスワードを入力し一致したら預金の表示、
積み立て又は積み下ろしが出来ます。

文章を把握しないといけませんが、ただ読むだけではなく自分自身で言葉を変えたり整理してみるのも理解する近道です。

●3-1-3.文章から情報を抽出
 文章から情報を抽出すると以下の図が導き出されます。
次からは、第一正規形、第二正規形、第三正規形の順で進めていくのですが、次の図は、非正規形とも言います。


非正規化.png

背景が黄色で塗られている箇所がありますが、これは「主キー」といい主キーを指定すれば集合の要素から一意な要素を識別出来ます
図の「主キー」を1つでも指定しないと一意な要素を導き出来ません。

●3-1-4.第一正規形
 第一正規形は、非正規形から繰り返しグループを取り除く事により正規化します。
次の図が第一正規形です。

第一正規化.png

ジャバ銀行と口座管理の2つに分けて、口座管理は、銀行名、ユーザID及び口座番号を主キーに設定する事により繰り返し項目を排除しています。

●3-1-5.第二正規形
 第二正規形は、複合主キーの1つのキーから導き出せる属性を取り除いた状態を指します。
次の図が第二正規形です。

第二正規化.png

 「ジャバ銀行」、「口座管理」、「ユーザ」及び「口座」の4つに分けて、口座管理からユーザ及び口座を特定できるようにしています。
第二正規形まで行うと重複部分が大分少なくなってきています。

●3-1-6.第三正規形
 第三正規化は、主キー以外の項目から導き出せる属性を取り除いた状態を指します。
次の図が第三正規形です。

第三正規化.png

 口座種類を別のテーブルに移す事により重複部分をより少なくしています。
口座テーブルの口座種類番号は、主キーである必要は無く口座番号で識別できる為です。

●3-1-7.ERD
 ERDは、正規化されたテーブル同士を関連付けを図で示します。
以下の図がERDです。

ERD.png

 テーブルの主キーを参照する側の主キーに矢印を向けています。
ERDを見る事により、テーブルがどこから参照しているかが分かり文章で説明するよりも関係がはっきりしている事が分かると思います。

さて、次回は、「ERD」からプログラミング(Java)がどう関係するのかを中心に説明したいと思っています。
お楽しみに!!

参考Web
ERD 「実体関連図」
30分間データモデリング ~ER図を描こう!