概念的、論理的、および物理的なモデルを作成する理由を理解する必要があります。
概念モデルは、ユーザーが理解できる形式で対象領域を表現したものです。これは、属性を持つエンティティのクラスと、これらに関するビジネス ルールで構成されます。これらのポイントを完全に説明するには、図だけでなく、自然言語による記述も必要になります。すべての利害関係者が、概念モデルが関心領域を完全に文書化することに同意した場合、その目的は達成されたことになります。
論理モデルは、概念モデルをデータ構造と整合性制約に形式化します。論理モデルは、リレーショナル データ モデル (RDM) として表すことができます。その場合、すべてのデータ構造と整合性制約は、数学的関係のみを使用して正式に表現されます。データベース管理システムに依存しません。
たとえば、次のような整合性制約を定義できます。
{ t(ID_TORRENTU) | t∈v(TORRENT) } = { o(ID_TORRENTU) | o∈v(OBSAHUJE) }
つまり、 の値のセットは のID_TORRENTU
値のTORRENT
セットと同じです。ID_TORRENTU
OBSAHUJE
物理モデルは、特定のデータベース管理システム上の論理モデルを表したものです。CREATE ASSERTION
ステートメントを使用して、SQL 標準に従ってこの整合性制約を実装できます。
CREATE ASSERTION torrent_obsahuje AS
CHECK
( NOT EXISTS
( SELECT t.id_torrentu
FROM torrent t
WHERE NOT EXISTS
(SELECT NULL
FROM obsahuje o
WHERE o.id_torrentu = t.id_torrentu) ) )
CREATE ASSERTION
ただし、SQL DBMS (Oracle を含む) はこのステートメントをサポートしていません。この整合性制約を Oracle に実装するには、自分でコーディングする必要があります。カスタム トリガーの作成やマテリアライズド ビューの作成など、さまざまな方法でこれを実現できます。インターネット上には、Oracle で複雑な整合性制約を実装する方法について詳しく説明しているさまざまなリソースがあります。
方法論は非常に複雑で、使用している自動化ツールでは、この複雑な整合性制約を実装するために必要なコードを生成できません。