2.3 概念設計の手順(2/3)

できるエンジニアになるためのちょい上DB術/第2章 概念設計

2.3 概念設計の手順(2/3)

リレーションの種類

エンティティ間のリレーションを考えるうえで、たとえばどのような例があるのか、また、パターン化できるとすれば、そのリレーションのパターンにはどのような特徴があるのかを順次見ていき、リレーションに慣れましょう。

クイズ2

以下のリレーションシップのパターンにあてはまるエンティティをいくつか考えてみてください。

クイズ2の解答例

2つのエンティティ間のリレーションシップを考えた場合、代表的なパターンとして以下の6つを考えることができます。

以降の項目で、順を追ってご説明していきます。

1対1のリレーションシップ

①のパターンは1対1のリレーションシップで、正規化するときにはこれを1つのエンティティに統合できないかを検討します。
ただし、次のような理由でエンティティを分ける理由が明確になっている場合は、エンティティを統合せず、分けます。

  • エンティティを配置する物理的なロケーションが異なる
  • 各エンティティによって管理すべき属性やリレーションが異なる
  • それぞれのエンティティのライフサイクルが異なる

1対多のリレーションシップ

解答例の中で最も多いパターンは②です。
つまり、1対多で任意対任意の組み合わせです。

②のパターンの両端のエンティティは、お互いの依存度が低く、独立性が高いエンティティ(そのエンティティのみで存在できる)ということができます。
このように依存性が低いエンティティのことを基本エンティティまたは独立エンティティといいます。

このパターンはお互いのオカレンスの存在が依存していないため、データベースヘのオカレンスの挿入、更新、削除等の処理が自由に実行でき、実装としては最も自由度を高く設計できます。

③と④のパターンは、1側のオカレンスが多側に対して必須になっており、多側のオカレンスが生成される場合には、対応する値が1側に必ず存在している必要があります。
また、多側のオカレンスを変更、削除する場合は、1側の値と整合性がとれている必要があり、制約が強い性格のリレーションということができます。

依存関係と非依存関係

③と④のパターンのうち、依存関係と非依存関係について説明します。

依存関係とは、すべての子側のオカレンスから見て、必ず親が存在する必要があり、かつ、すべての親のオカレンスから見ても、必ず子のオカレンスが1以上存在する必要があるという関係を表します。
これを別の表現で表すと、子のオカレンスの一意識別子の一部に親のオカレンスの一意識別子が含まれ(外部キーとして)、子側のオカレンスはNULLを許されないという関係になります。

依存関係にある2つのエンティティは、図2-14に示すように、IDEFlX表記では子側のエンティティを角の丸い四角形で表し、リレーションを実線で表します。
非依存関係のリレーションは破線で表され、親のオカレンスに対する子側のオカレンスは0を許すという意味になります。

多対多のリレーションシップ

⑥に表される多対多のリレーションシップは、正規化をしていない概念設計の最初のフェーズではよく出てきます。設計の初期段階において、業務を良く理解しているユーザヘのヒアリングを行いますが、その際リソース系のエンティティだけが抽出され、そのリソース系のエンティティ間に直接リレーションシップをはると、66 第2章 概念設計この多対多のパターンが出てきます。その他、次のような場合も多対多のリレーションシップが発生します。

  • リソース系のエンティティ間のリレーションを、履歴管理の観点も追加して管理する必要がある場合
  • エンティティの管理に時系列の考え方を取り入れて、拡張性をもたせた場合

初期概要設計では顧客とのコミュニケーションをはかりやすくするためにこのパターンを残しておくことが多いのですが、RDBに実装する際には、多対多のリレーションは、このままではテーブルに実装することができません。
そこで、エンティティ間に交差エンティティを作成して、最終的には多対多の関連は残さないようにします。この処理を行うのは、概念設計の詳細設計フェーズです。

< 前へ | 2.3 概念設計の手順(2/3) | 次へ >

解説トレーナー

Oracle / 上流工程 担当 中村 才千代

データベース設計、システム構築の上流~下流工程全般のインストラクターです。SE時代の経験を生かし「業務を知るエンジニアこそDB設計に関わるべき」「DB設計に携わるエンジニアは業務を知る人に知恵を貸してもらう」ことを伝えたいと思っています。

■認定・受賞

2000年 Oracle University「Best Instructor of the Year」受賞
2002年 Oracle University「Best Instructor of the Year」受賞

Page Top