it-swarm-ja.com

2つのエンティティ間に必須の非識別関係を作成するにはどうすればよいですか?

私はMSVisio2010で作業しています。これは私のERDの関連部分です。

ERD

イベントとアドベンチャーの関係は正しいです。イベントからアドベンチャーへの外部キーがあり、そのFKはイベントの主キーの一部です。

しかし、私が理解できないのは、AdventureからAccomodationTypeへの関係線を、その関係を冒険のPKの一部にせずに、EventからAdventureへの関係線と同じにする方法です。その関係線の「その他」のプロパティを見ると、次のようになります。

  • カーディナリティ:ゼロ以上
  • 関係タイプ:非識別
  • 子には親があります:オプションではありません(必須)

ただし、3番目のプロパティのチェックボックスはグレー表示されており、関係を非識別/識別にすると、True/Falseが切り替わります。

私が理解できる唯一の方法は、[定義]タブから2つの列を切断することでした。これにより、[オプション]チェックボックスが灰色で表示されなくなりますが、accomType列の外部キープロパティが失われます。正しい場合、線は点線のままです。

アドベンチャーのPKにaccomTypeを追加せずに、左側の線のカーディナリティを右側の関係線と同じように表示するにはどうすればよいですか?

3
Cam Jackson

このMS TechNetスレッド エンティティ間の関係を作成するときに、Visio2010が外部キーを自動的に挿入する方法に関係している問題を特定します。

実際、最初に外部キーフィールド名を入力してから関係を確立することで、これが可能になるようです。外部キーで必須をチェック/チェック解除してから、関係のオプションを自動的にチェック/チェック解除します。

この問題を解決するには、ダイアグラムに新しい関係を作成するか、既存の関係を修正しようとするかによって、2つの方法があります。

必須の非識別関係を作成する方法

関係を作成する前に、親エンティティのPKと同じ名前を使用して、目的のFK属性を子エンティティに追加します。 FK属性ごとに「Req'd」オプションがチェックされていることを確認してください。

あなたの例では、Adventureエンティティに「name」属性を追加します。

関係を追加すると、FKが自動的に作成されますが、Adventureの既存の属性の非識別、非オプションの状態は保持されます。

この時点で、FK属性の名前を自由に変更できます。

[子には親があります:オプション]チェックボックスはまだグレー表示されていることに注意してください。この時点以降でも、関係のプロパティや関連する属性を変更すると、望ましくない副作用が発生することがあり、間違ったカラスの足のシンボルが再び「スタック」することがあります。幸い、関係を削除して最初からやり直すよりも、これを修正する簡単な方法があります。

既存の関係を修正する方法

「スタック」カラスの足のシンボルとの関係を選択し、[データベースのプロパティ]ウィンドウの[定義]タブに移動します。

親エンティティと子エンティティのPK属性とFK属性を結ぶ矢印の付いた線が表示されます。両方のテーブルで接続されている属性を選択し、中央の列のボタンをクリックしてそれらを切断します。キーが複合の場合、属性の複数のペアが表示されます。

関係に関連するすべての属性を切断すると、[その他]タブの[子には親があります:オプション]ボックスが再びアクティブになります。関係のプロパティをオプションの親で非識別に設定し、子エンティティのFK属性が「必須」に設定されていることを再確認してから、[定義]タブに戻り、PK属性とFK属性を再度関連付けます。 :

1
Air