今回は論理データモデルについて解説します。
論理データモデルとは、データベースの構造を抽象的に表現する方法の一つで、データベースを構成するデータの形式、属性、関係性、制約などを定義しますが、一方で具体的な技術的詳細(物理的なストレージの構造など)には言及しません。
なぜ具体的な詳細がないのに論理データモデルが重要なのかと言うと、論理データモデルによってデータがどのように整理され、関連付けられるかが決まり、データベースが簡単で使いやすくなるからです。
以下、論理データモデルの種類を紹介します。
階層モデル
階層モデルは、各データが親子関係で直接繋がるようなモデルです。階層モデルにおける親子関係は、1対1もしくは1対多となり、子は複数の親とつながらないという特徴があります。
階層モデルは、以下のようなツリー構造、ピラミッド構造が特徴です。
![](https://chefyushima.com/wp-content/uploads/2024/05/image-35.png)
ネットワークモデル
ネットワークモデルの場合は、階層で表現できないデータの関係性も表現可能です。各データが親子関係で直接繋がることができ、かつ階層モデルでは不可能な多対多の関係性が可能になります。それはつまり、親子関係においては子が複数の親を持ちうる、ということです。
![](https://chefyushima.com/wp-content/uploads/2024/05/image-34.png)
関係モデル
関係モデルは、階層モデルやネットワークモデルとは本質的に異なり、テーブル(表)とテーブルの関係を表現するモデルです。
![](https://chefyushima.com/wp-content/uploads/2024/05/image-33.png)
1つのシステムのデータを1つのテーブルで管理し、何でもかんでもそこに保存するのではなく、データを各テーブルに分けて管理してそれらを関係(=リレーション)で繋げたものをデータベースとします。この考え方をデータ独立と呼びます。データ独立については以下の記事を参照ください。
関係モデルは、データベースを考えるうえで非常に重要なモデルです。関係モデル構築されたデータベースをRDB(関係データベース)と呼ばれますが、データやデータベースが重宝される現代において、RDBは欠かせません。
RDBの各テーブルは、結合されたりして活用されます。これはExcelでいうLOOKUP系のワークシート関数のような動作で、SQLやPythonでは”JOIN”と呼ばれます。RDBを関連付けるデータを”キー”と呼びます。RDBの関係は1対1でも1対多でも可能です。
オブジェクト指向モデル
オブジェクト指向モデルは、属性とそれに関連する動作(メソッド)を一つの”オブジェクト”としてグループ化します。これにより、データの属性や機能が体系的に整理されます。例えば、車をオブジェクトとした場合、その属性には”色”や”モデル”が含まれ、メソッドには”加速する”や”停止する”などの動作が定義されます。次に、コーヒーに関する例を示します。
![](https://chefyushima.com/wp-content/uploads/2024/05/image-32.png)
オブジェクト指向という考え方は、データの取り扱いのみならず、複雑なシステムや再利用性および拡張性が求められるソフトウェア開発、プログラミングにおいても重宝されます。
コメント