web-dev-qa-db-ja.com

SQLServerでの1対0または1の関係の実装

私はEntityFramework4.1データベースの最初のアプローチを使用しています。レガシーデータベースを使用しました。レガシーデータベースのテーブルに基づいてエンティティクラスを作成した私のedmxファイルには、いくつかのエンティティ間に1対0または1の関連付けがあります。

データベースのテーブルとそれらの間の関係を調べましたが、1対0または1関係がデータベースにどのように実装されているのかわかりませんでした。

詳細については、データベース図のスクリーンショットと、その関係および対応するエンティティのプロパティをedmxファイルに配置します。

enter image description hereenter image description here

14
Mostafa

データベース内の1-0..1関係は直接表示されます。これは、CourseテーブルとOnlineCourseテーブルの間に構築され、Courseはリレーション(1)のプリンシパルであり、OnlineCourseはCourseIDで構成されたFKに依存します。 FKはOnlineCourseのPKでもあります=一意である必要があるため、0..1です。

実際の1-1はデータ挿入に効果的に使用できないため、データベースは「常に」1-0..1を使用します。 1-1は、左を右の後に挿入する必要があるが、右を左の後に挿入する必要があることを意味します=不可能。そのため、1-0..1が使用されます。ここで、左が主であり、右と右が依存する前に挿入する必要があり、左の後に挿入する必要があります。

30
Ladislav Mrnka

データベーステーブルがすでに1:1の関係(または1:0-1)で設計されている場合、EFは子テーブルの名前を複数形にしますが(複数形にする場合)、それで問題なく機能します。

基本的なアプローチは、外部キーを作成し(1:manyの関係を作成しているかのように)、外部キーフィールドに一意のインデックスを配置することです。それはあなたが達成しようとしていることですか?

これも役立つ可能性があります: SQL Serverで1:1および1:mの関係を設計する

ちなみに、1-1の関係は必要ない場合や、データベース設計の症状を再考する必要がある場合がよくあります。でも、デザインを受け継いだようですね…それは全部知ってるよ!

0
Graham Charles