10-データベース

データベース(Part.4)| 概念モデルから論理モデルへの変換(概念スキーマ)| 現役エンジニア&プログラミングスクール講師

目標

「概念モデル」から関連型の「主キー(外部キー)」を決定する方法を理解する

概念モデルと論理モデル(再掲載)

この記事では、どのようにして関連型の「主キー(外部キー)」を決めるのかについて取り上げています。

関連型の主キーの決定

実体型の主キー

ER図を用いて概念モデルを図式化するとき、「実体」の「主キー」にはアンダーラインを引いて誰が見ても分かるようになっていました。

下のイラストでいうと商品の主キーはアンダーラインのある「商品番号」で顧客の主キーは、同じくアンダーラインのある「顧客ID」です。

ER図では実体の主キーは明示されますが、関連型は何が主キーなのかは図を読み解く必要があります。

関連型の主キー(外部キー)

「主キー」と「外部キー」の違いは次のようになります。

【主キー】
値が重複をしない。レコード(タプルという)を一意に決定できる
NULLが入らない

【外部キー】
参照している値のみを取り込むことができる
NULLが入ることが許されている

関連型のキーを決定する場合、そのキーは「外部キー」として扱うことになりますが、この記事では、「キーの決め方」として話を簡単にするために関連型での「主キー」という言い方をしています。

関連型の主キーの決め方は多重度から決定していきます。多重度のパターンは下のようになります。

  1. 関連型が「1対1」の場合
  2. 関連型が「1対多」の場合
  3. 関連型が「多対多」の場合
  4. 関連型が「所有実体型」と「弱実体型」の関連型の場合

関連型の主キーについては、関連型部分への直接の記載はありませんが、図に表示される多重度を利用して決定することができます。

ここでは下のそれぞれのER図を基にして関連型の主キーの選定方法を確認してみたいと思います。

関連型が「1対1」の場合

多重度が「1対1」の場合は「関連型Z」の主キーは「実体Aの属性A3」「実体Bの属性B3」のいずれかひとつで主キーとすることができます。

関連型が「1対多」の場合

多重度が「1対多」の場合は「関連型Z」の主キーは「多」側の主キー(下の図では「実体Bの属性B3」)を主キーとします。

多重度が「1対多」のときの注意点として、下のように多重度が「1」側の主キー(下の図では「属性A3」)を関連型で呼び出す場合がありますが、これは関連型からすると要素を一意に決めることのできない通常の属性と同じなので「属性A2」や「属性B1」と同様の扱いとなります。

関連型が「多対多」の場合

多重度が「多対多」の場合は「関連型Z」の主キーは「実体Aの主キー」と「実体Bの主キー」の両方が必要となります。

関連型が「所有実体型」と「弱実体型」の関連型の場合

「関連型」が「所有実体型」と「弱実体型」の関連の場合は「所有実体型の主キー」と「弱実体型の部分キー」の両方が必要となります。

ER図を利用した関連型の主キーの決め方については以上となります。次回は「正規化」についての記事となります。

「データベース」おすすめ書籍6選【初心者用3冊&実践用3冊】| 現役エンジニア&プログラミングスクール講師「データベース」初心者の方がデータベースを基本からしっかりと理解するためのお勧めの書籍について取り上げています。また中級者の方が更に進んだ学習ができる実践的な書籍についてお勧めできる3冊を取り上げています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】| 現役エンジニア&プログラミングスクール講師「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
10-データベース

データベース(Part.1)| データベースの概要 | 現役エンジニア&プログラミングスクール講師

2023年3月29日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

データベース(Part.8)| DBMSの仕組みと効率的なデータアクセス機構 | 現役エンジニア&プログラミングスクール講師

2023年4月7日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

データベース(Part.11)| MariaDB SQLと表の種類&SQLコマンド例 | 現役エンジニア&プログラミングスクール講師

2023年4月13日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

データベース(Part.9)| 保全機能・排他制御・障害復旧 | 現役エンジニア&プログラミングスクール講師

2023年4月10日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

データベース(Part.6)| リレーションと整合性制約 | 現役エンジニア&プログラミングスクール講師

2023年4月5日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
10-データベース

データベース(Part.3)| 概念モデルと論理モデル(概念スキーマ)| 現役エンジニア&プログラミングスクール講師

2023年4月1日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site