プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

実体関連(ER)モデリングとは?データベース設計の基本と限界を解説

実体関連モデリングの概要

実体関連(Entity-Relationship:ER)モデリングは、データの冗長性を排除することを目的とした論理設計手法です。例として、ある企業がユーザーから注文を受け、製品を販売するというビジネスシナリオを考えてみましょう。

リレーショナルデータベース以前の課題

コンピュータへのデータ移行が始まった初期の時代、リレーショナルデータベースが登場するずっと前には、紙の注文書をそのまま1件の巨大なデータとして取り込むのが一般的でした。こうしたデータは50個ほどのフィールドにまたがり、1000バイトに達することもありました。注文の明細行は、マスターデータ内に埋め込まれた繰り返しフィールドの集合として定義されていました。

データをコンピュータで扱えるようになったこと自体は大きなメリットでしたが、データの保存や操作を通じて、いくつかの基本的な教訓を学ぶことになったのです。

データ重複と不整合の問題

顧客名や住所は、新しい注文が入るたびに繰り返し記録されるため、同じデータが何度も出現していました。さらに、顧客住所の一部のインスタンスが自律的に更新されることもあり、データの不整合は制御不能な状態に陥っていました。顧客の住所を更新する作業は、非常に手間のかかるトランザクションだったのです。

テーブル結合とソフトウェアの複雑化

データの取得や操作を担うソフトウェアシステムは、テーブル群を結合するための処理アルゴリズムに細心の注意を払う必要があり、次第に複雑で無秩序なものになっていきました。ここで求められたのは、テーブルの結合に非常に長けたデータベースシステムです。この需要こそが、データベースをこのタスク一つに特化させたリレーショナルデータベース革命への道を開いたのです。

実体関連モデリングの目的

実体関連モデリングは、データ要素間の微細な関係性を明らかにするための手法です。その最大の設計目標は、データ内のあらゆる冗長性を排除することにあります。これはトランザクション処理にとって非常に有効であり、トランザクションを極めて単純かつ決定論的にします。

高速なトランザクション処理の実現

顧客住所の更新トランザクションは、顧客住所マスターテーブルに対する単一のデータ参照へと簡素化できます。この参照は、顧客住所データの一意性を表すキーによって保証され、完全に高速なインデックス検索を可能にします。リレーショナルデータベースにおけるトランザクション処理の成功は、実体関連モデリングの発展によるものだと言っても過言ではありません。

大規模エンタープライズにおけるERモデル

企業向けの実体関連モデルには、数千の論理エンティティが含まれることがあります。SAPのようなハイエンドのエンタープライズ・リソース・プランニング(ERP)システムには、数千のエンティティが存在します。データベースを実装する際、各エンティティは通常、物理的なテーブルへと変換されます。

実体関連モデルの限界

一方で、実体関連モデルには以下のような限界があります。

エンドユーザーには扱いにくい

エンドユーザーは実体関連モデルを理解したり習得したりすることが困難です。また、一般的な実体関連モデルをエンドユーザーにとって使いやすい形に変換するGUI(グラフィカルユーザーインターフェース)も存在しません。

自動クエリ最適化の難しさ

さらに、ソフトウェアが汎用的に実体関連モデルへクエリを発行することも容易ではありません。これを試みるコストベースオプティマイザーは誤った選択を下すことで悪名高く、パフォーマンスに壊滅的な影響をもたらすことがあります。実体関連モデリングの技法は、直感的かつ高性能な情報検索を目指すデータウェアハウスの目的と相容れない面があるのです。

  1. データセンターとは?仕組み・用途・セキュリティ対策をわかりやすく解説

    データセンターとはデータセンターとは、大量のコンピュータサーバーや関連機器を収容するために設けられた専用施設のことです。英語では「data center」と表記するのが一般的ですが、「datacenter」と一語で書かれることもあります。イメージとしては、「壁からはみ出してしまったコンピュータ室」のようなものです。データセンターには、企業ユーザーのメール、財務記録、ウェブサイトのデータなど、あらゆる種類のデータを保存することができます。データセンターは何に使われるのか?一部のオンラインサービスは規模が非常に大きく、1〜2台のサーバーでは運用できません。そうしたサービスでは、サービスを動かすため

  2. シリアライズ(直列化)とは?仕組みからマーシャリングとの違い、活用例まで徹底解説

    最近のプロジェクト進捗ミーティングで、私たちのチームは「シリアライズ(直列化)」を使ってアプリケーション間でデータをやり取りする方法について話し合いました。すると、ソフトウェア開発にもっと携わりたいというエンジニアから、「その用語はよく知らない」という声が上がりました。こうした重要なプロセスは、規模の大きいプロジェクトに踏み込むまで登場しないため、見落とされがちです。この方にとってはそうでしたし、かつての私自身もまったく同じでした。そこで、この記事を書くことにしました。あの日同僚にシリアライズについて教えたように、今日はあなたにその知識をお伝えします。シリアライズとは何か?シリアライズとは、あ