最初にエンティティ関係モデリングまたはオブジェクト指向モデリングを実行する必要がありますか?


9

アプリケーションをゼロから構築する場合、オブジェクト指向(OO)モデルまたはエンティティリレーションシップ(ER)モデルから始める必要がありますか?

回答:


13

アーキテクチャの決定を可能な限り遅らせるという原則を遵守するようにしてください。将来的には、問題のある領域について今よりも詳しく知ることができると考えています。したがって、今日の決定は疑わしいものです。

これと組み合わせるもう1つの良い原則は、要件の最もリスクの高い部分を最初に試すことです-簡単な部分を実行すると、危険な部分が別の方向に移動することがわかり、簡単なパーツをやり直す。ここでのリスクとは、どうすればよいかわからないことを意味します。

これら2つと、オブジェクト指向の観点から物事にアプローチしようとすることが多いので、最初にアプリケーションの最もリスクの高い部分のオブジェクト指向モデルから始めて、機能することができる最小限のコードを実装して、危険な要件。次に、必要に応じてOOモデルを拡張し、必要な機能を追加します。その間、SQLやNoSQL、フラットファイル、クラウドストレージなどを使用するかどうかの決定を完全に遅らせることができます。最終的には、リレーショナルがまったく必要ないことに気付く場合があります(ERモデルの必要性がなくなります)。


7

ERモデルはアプリケーションのデータがどのように永続化されるかを決定し、OOモデルは同じデータがメモリに格納される方法、またはアプリケーションの実行中に決定されます。したがって、データベーススキーマの設計(ERモデル)とクラス構造の設計(OOモデル)は関連する設計上の考慮事項であり、通常は同時に考えることもできます。実際、オブジェクトリレーショナルマッピング(ORM)ツールを使用している場合、ERモデルとOOモデルは同じものになる可能性があります。つまり、クラス(OOモデル)は、それ自体がERモデルを指定するように注釈を付けることができます。

ただし、設計する前に、ソフトウェアの実際の要件、使用目的、使用方法、および使用者について十分に理解していることを確認してください。多くの開発者は、製品で対処する必要があるニーズを完全に理解する前に、設計の決定について考え始め、最終的にアプリケーションの真の目的には不適切な設計になってしまいます。


+1は、2種類のモデリングの違いを識別します。2つのモデルを同時に考えることができるということに完全には同意しません。また、一部のOOファンは、OOモデルとERモデルが常に同じである必要はないと考えています。ただし、OOモデルをデータベース設計の基礎として使用することはできますが、この変換は少し注意が必要です。
NoChance

@EmmadKareemそうですね、2つのモデルを同時に考えるのは必ずしも適切ではありません。私はORMを使用してクラスに注釈を付け、ERモデルの設計をOOモデルに統合する、ということを言って話をしていました。一部の人々は、この方法でアプリケーションを開発することを選択します。これは、基本的にOOとERの両方を同時に実装しています。
CFL_Jeff 2012年

ドメインモデルをデータモデルと混同しないでください-オブジェクト(単一のインスタンスを表す)とデータベーステーブル(もののコレクションを含む)を混同しないでください
Narender Parmar 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.