14

誰かがキャズムトラップとは何か教えてもらえますか?私はあまりはっきりしていないので、おそらくファンの罠もあります。また、わかりやすい例を提供してください(Chen表記を使用)。

これまでの私の理解:ファントラップはM:1:1:Mであることを理解しています。これは、エンティティ間のパスがあいまいであることを示しています。
という事は承知しています。たとえば、Mが生徒を表し、他のMが学校を表す場合、どの生徒がどの学校で勉強しているかわからないため、あいまいになります(これは私がこれまでに理解したことです)。

しかし、キャズムトラップとは何かがわかりません。

また、トラップを特定して修正するにはどうすればよいですか?

4

3 に答える 3

37

Conolly&Beggに基づく:

ファントラップは、モデルがエンティティタイプ間の関係を表すが、特定のエンティティオカレンス間のパスがあいまいな状況で発生します。

例:(スタッフ)-1:N-has-1:1-(Division)-1:1-operates-1:N-(Branch) ファントラップ このモデルでは、スタッフが属するブランチを特定できない場合があります。スタッフが複数の支店を持つ部門に所属している場合。

モデルを再構築すると、トラップが解決されます(分割)-1:1-操作-1:N-(ブランチ)-1:1-has-1:N-(スタッフ) ファントラップではありません

キャズムトラップは、モデルがエンティティタイプ間の関係を示唆しているが、特定のオカレンス間のパスが存在しない場合に発生します。

例:(ブランチ)-1:1-has-1:N-(Staff)-0:1-oversees-0:N-(PropertyForRent) キャズムトラップ

PropertyForRentへのスタッフの関係はスタッフのオプションの参加(0:1)であるため、PropertyForRentへのブランチのパスが存在しない場合があります。これに対する解決策は、BranchとPropertyForRentの間の直接的な関係であり、必須の参加が必要です。

于 2013-05-07T17:23:57.570 に答える
8

簡単に言うと、どちらの場合(FANとCHASM)でも、実際よりも多くの行(結果セット)が生成されます。識別する方法

  • FAN-> 1-NNは、1つからのテーブル関係->多く->多くを意味します
  • CHASM-> N-1-Nは、1行のテーブルから2つ以上のテーブルへの多くの関係を意味します
  • LOOP->すべてのテーブルを結合し、円のようにループを作成する場合(この場合、一部の行が完全に失われます)

識別できるものはありませんが、宇宙を作成するときは、目を開いておく必要があります。宇宙の開発中にこれらの状況から目を離すと、常に問題が発生します。したがって、エイリアス、コンテキストを適用して修正します。

すべての問題が宇宙レベルで解決されたら、報告に取り掛かることができます。練習することで、あなたは優れた知識を持つことになります。

于 2013-01-22T14:22:10.193 に答える
0

ファントラップは、3つのテーブルが互いに1対多の方法で結合するときに発生します。テーブルABとCが1対多でテーブルBにリンクし、テーブルBがテーブルCにリンクしていることを意味します。テーブルBは再びメインウェイA->B->Cに関連しています。

于 2013-10-25T09:35:27.143 に答える