今回は概念データモデルの作成として
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 >>
#01_はじめに
#02_VisualStudio2022のインストール
#03_SQLServerのインストール
#04_データベースとテーブルの作成
#05_プロジェクトの作成
#06_接続先文字列の作成
#07_データテーブルでのデータの取得
#08_Sqlアクセスクラスの作成
#09_SqlDataReaderでのデータ取得
#10_SqlDataReaderの結果をカスタムクラスに入れる方法
#11_SqlCommandでInsert文を発行する方法
#12_SqlCommandでUpdate文を発行する方法
#13_Update対象がなかったらInsertする方法
#14_SqlCommandでDelete文を発行する方法
#15_Dapperでデータを取得する方法
#16_DapperでInsert文を発行する方法
#17_EntityFrameworkをインストールしてDbContextを作成する方法
#18_EntityFrameworkでデータを取得する方法
#19_EntityFrameworkでInsert文を発行する方法
#20_EntityFrameworkでUpdate文を発行する方法
#21_EntityFrameworkでDelete文を発行する方法
#22_Helperクラスを作ってSqlCommand操作を共通化する方法
#23_パフォーマンスチェックの方法
#24_4つのデータのとり方のパフォーマンスチェック
#25_4つの結果を踏まえて講評
#26_さいごに
下記URLは、ベネッセが提供する教育用プラットフォームにて
私が公開しているプログラミング学習コースです。
無料コースもあるので、よかったらご覧になってみてください。
【無料動画】「C#を勉強する順番」