1

私は学校の宿題のための概念的なスキーム (Power Designer) を持っており、テーブルの torrent とサーバーの間には必須の関係があります (torrent には少なくとも 1 つのサーバーが必要です)。物理モデルを生成し、次にコード(Oracle 10g)を生成し、新しい行をトレントに挿入すると、トレントとサーバーを接続するテーブルにはまだ何もないため、トレントには実際にはサーバーがありません。必須の場合、変更しても生成されたコードは変更されません。

  1. それが何もないのに、概念モデルでは何のためにそこにあるのでしょうか?
  2. トレントに少なくとも 1 つのサーバーが必要になるようにするにはどうすればよいですか?

概念モデル

4

1 に答える 1

3

概念的、論理的、および物理的なモデルを作成する理由を理解する必要があります。

概念モデルは、ユーザーが理解できる形式で対象領域を表現したものです。これは、属性を持つエンティティのクラスと、これらに関するビジネス ルールで構成されます。これらのポイントを完全に説明するには、図だけでなく、自然言語による記述も必要になります。すべての利害関係者が、概念モデルが関心領域を完全に文書化することに同意した場合、その目的は達成されたことになります。

論理モデルは、概念モデルをデータ構造と整合性制約に形式化します。論理モデルは、リレーショナル データ モデル (RDM) として表すことができます。その場合、すべてのデータ構造と整合性制約は、数学的関係のみを使用して正式に表現されます。データベース管理システムに依存しません。

たとえば、次のような整合性制約を定義できます。

{ t(ID_TORRENTU) | t∈v(TORRENT) } = { o(ID_TORRENTU) | o∈v(OBSAHUJE) }

つまり、 の値のセットは のID_TORRENTU値のTORRENTセットと同じです。ID_TORRENTUOBSAHUJE

物理モデルは、特定のデータベース管理システム上の論理モデルを表したものです。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 で複雑な整合性制約を実装する方法について詳しく説明しているさまざまなリソースがあります。

方法論は非常に複雑で、使用している自動化ツールでは、この複雑な整合性制約を実装するために必要なコードを生成できません。

于 2015-01-19T19:16:12.667 に答える