今回は概念データモデルの作成として
ER図,多重度(カーディナリティー)の部分を解説
1対多とか多対多とか
そのあたりのややこしい部分も
あるコツを使えば,簡単に覚えることができます。
そのほか主キーと外部キーの見極め方の
コツも公開しています。
ER図とは?
ER図とはエンティティ間の関連を表す図。
エンティティとはデータ属性の集まり。
データ属性とは項目の事。
関連とはリレーションの事。
つまり,表と表のつながりを
矢印などでつないで表現する図の事。
多重度(カーディナリティー)
1対1
1対多
多対多
がある。
学生 --> 講義
などと,多の方を矢印を付けて表記する。
表記の方法は何種類かある。
多対多
学生<ー->講義
1つの学生にたいして
複数の講義が対応する
1つの講義に対して
複数の学生が対応する
講義は複数の学生が受講している
学生は様々な講義を受講している
1対多
学生ーー>講義
「多」とは相手から見てどう見えるかを示している。
この場合,1つの学生に対して複数の講義が対応する
という意味となる。
講義はマンツーマン形式のように
学生専用のものを用意する
学生は様々な講義を受講できる
多対1
学生<--講義
講義は複数の学生が受講している
学生は1つしか講義を受講することができない
1対1
学生ーー講義
学生Noと講義Noを同一の位置づけを表す
スーパータイプ
UMLクラス図での
スーパークラス
サブクラスと同じ関係を表現する
スーパークラス
共通するデータ項目
メソッドを定義する
サブクラス
スーパークラスとの
差だけを定義する
共通したデータをスーパークラスに定義
差分をサブクラスに書く
連関エンティティ
連関エンティティとは,多対多のエンティティを
1対多のエンティティに変換すること。
データベースの世界では多対多のエンティティは
実装できない構造になっている。
多対多は必ず2つの1対多の関係に変形させる必要がある。
やり方
新しいエンティティを作って
そのエンティティにお互いのキーを持ち寄る。
学生<-->講義
こんな感じの多対多は実装できないので
新しいエンティティ「学生講義」を作成する。
学生ー>学生講義<ー講義
矢印は,新しいエンティティに向くようにする。
一人の学生に対して講義が多,
一つの講義に対して学生が多,なので
学生講義は両方からの「多」を受け持つ。
外部キー
外部キーとは,他のエンティティのキーを
属性として保持している事。
受注明細(受注No,商品No,数量)
商品(商品No,商品名)
このようなエンティティがある場合
受注明細の商品Noは商品表のキーなため,
受注明細の商品Noは「外部キー」となる。
エンティティの多重度を定めると
おのずとこの外部キーは決まる。
ポイントは,1対多の場合,
1の側が主キーであり,
多の側が外部キーとなる。
受注明細<--商品
一つの商品は多くの受注明細に存在する
ため,商品Noに関しては
商品表が主キーで
受注明細では外部キーとなる。
SQLやデータベースについてもっと学びたい方は次の記事でおすすめの書籍を紹介しています↓
<< 1 2 3 4 5 6 7 8 9 10 11 12 >>
C#を正しい3層構造で造れてますか?
#00_はじめに
#01_単一責務の原則とは
#02_原則違反の例
#03_変更理由単位でクラスを分ける
#04_3層構造の例
#05_修正箇所を最小にできる
#06_修正する場所が明確になる
#07_共通化しましょうという話ではない
#08_少々悪いコードでも問題視しない理由
#09_探しやすいコード
#10_クラスは機能ごとに小さく作る
#11_小さなクラスがそれぞれに協調して目的を達成させる
#12_多数の部品群のなかから摘まんで作る
#13_クラスはどこまで小さくすればいいのか
#14_アンダーソン式単一責務の原則
#15_最小カプセルの検証_監視タイマークラス
#16_最小カプセルの検証_受注画面クラス
#17_最小カプセルの検証_ユーザークラス
#18_最小カプセルの検証_商品マスターデータアクセス
#19_登場人物に合わせたモデリングの四角と線
#20_四角と線を最小カプセル化する
#21_アンダーソン式手順
#22_パターンを見つけ出す
#23_プログラミングの自問
#24_さいごに