More than 1 year has passed since last update.


概念データモデル

概念データモデルとは、情報構造を抽象化して表現したもの。

(例)

image.png


データモデリング

データモデリングとは、データを一定のルールに基づき整理する手法。

概念データモデルの作成は、開発工程でいう基本設計に当てはまる。

この工程により、適切な物理設計(≒テーブル設計)が行え、APP側の開発負担を軽減できる。


E-R図

E-R図とは、DBで使う設計手法の一つ。

(例)

image.png


エンティティ

エンティティとは、対象事例を概念としてモデル化したもの。

エンティティには属性とインスタンスという概念がある。

(例)

image.png


リレーションシップ

エンティティ間の結びつきのこと。


多重度

エンティティとリレーションシップ間にあるインスタンスの対応関係。

1対1, 1対多, 多対多など。


オプショナリティ

多重度にゼロを含むかどうかを区別して表記したもの。


  • 相手のインスタンスが0あり : ○

  • 相手のインスタンスが0なし : ●


連関エインティティ

多対多の関係を論理データモデルに転換すると非正規形になってしまう。

(例)

image.png

そこで、エンティティ間にエンティティを1つ加え、1対多の関係に変換する。

新しく設けられた連関エンティティと呼ぶ。


強エンティティ

他のエンティティのインスタンスに関係なく存在可能なエンティティ


弱エンティティ

他のエンティティのインスタンスの存在時のみ存在可能なエンティティ


特殊なリレーションシップ

自己参照型や、一つのエンティティに対し複数のリレーションシップがあるような場合もある。


スーパータイプ(汎化), サブタイプ(特化)


  • 各エンティティの共通属性を抜き出し、作成したものがスーパータイプ

  • 主keyとその他で成り立つエンティティがサブタイプ

スーパータイプ+サブタイプ, サブタイプを同一テーブルに格納, あえてスーパータイプを作成せず、個別に設計など、論理設計を行う上での目安となる。


排他的サブタイプ, 共存的サブタイプ

排他的 : インスタンスが複数のサブタイプの中のいずれか一つにしか属せない

共存的 : インスタンスが複数のさサブタイプに属せる

(例)

image.png


排他的サブタイプの場合

スーパータイプにサブタイプ識別子を持たせ、識別させる。

image.png


共存的サブタイプの場合

スーパータイプにフラグを持たせ、識別させる。

image.png


関係スキーマ(定義)

関係名(属性名1, 属性名2, ・・・, 属性名n)のこと。

主キーは下線, 外部キーは破線で表現する。

型やインデックスを表記はせず、主に物理設計の前に記述する。


関数従属性

一つのレコード内(インスタンス内)での話で、ある属性xを決定すると他の属性yが一意に決まる場合、以下が成り立つ。


  • yはxに関数従属している : x -> y

  • x : 決定項(ユニーク), y : 被決定項

  • 様々な推測論がある


キー

※いずれのキーも、実際のレコードをみて判断することになる


主キー


  • 一意制約とnot null


候補キー


  • 関係の中に複数存在

  • レコードを一意に識別できる

  • 極小(余分な属性を含まない最小限の組み合わせ)である

  • = どれかが一つでもかけたら一位に識別できなくなる

  • nullを許容


スーパーキー


  • 関係の中に候補キーの数以上に存在するキー

  • レコードを一つに特定できるようなもの。いうなれば全部。

主キー <= 候補キー <= スーパーキー

(※ 主キーは全て、候補キーであり、候補キーは全てスーパーキーである)


サロゲートキー


  • ナチュラルキー

    エンティティが本来持つ属性からなる主キー

    (例)都道府県を主キーにした場合


  • サロゲートキー

    ナチュナルキーに対して代わりに付与されるキー

    (例)都道府県の代わりにシークエンス連番番号



サロゲートキーが使われるケース


  • 主キーが複数の属性で定義されている場合

  • 長期間の履歴を管理したい場合(主キーとは別に連番を要して区別化)

(例)「以前、社員ID = 001は”三好”であったが、退職したため”山下”に割り振りがされた」場合

長期間の履歴を管理する場合、その期間内にマスタが変更される可能性がある。

この場合、社員IDとは別に”連番”を割り当て両者を別物とわかるようにする必要がある。

image.png


外部キー

リレーションの中で相手エンティティの主キー(候補キー)を参照する項目