2017-07-14 11 views
1

テーブルにFKを追加すると、1:Mの構成と1:Mの構成を区別するにはどうすればよいですか?例えば1:Mの関連付けVs 1:SQLのMの構成

、私は(Account表に)AccountIdを参照する外部キーに(Caseテーブル内の)既存の列Accountを変更するには、以下のクエリステートメントを使用します。

1つのアカウントが多くのケースを持つことができる1:Mの関連付けを共有します。彼らが1:Mの構成を持っていたらどうなりますか?この変更ステートメントはどのように見えますか?次の文は、1:M関連について正しいですか?

Alter table [dbo].[Case] with check add constraint [FK_Case_Account] foreign key ([Account]) 
references [dbo].[Account] ([AccountId]) 
GO 

Alter table [dbo].[Case] check constraint [FK_Case_Account] 
+0

「1:M構成」とは何か、「1:M関連」とはどのように違うのですか? –

答えて

0

質問にはいくつかの基本的な修正が必要です。

2つのエンティティ間の関連付けは、集約または合成のいずれかです。

1:Mの構成と1:Mの関連付けの違いについて話し合うと、あなたの質問は意味をなさない。

アトリビュートDBデザインの観点からアグリゲーションとコンポジションの違いを理解するには、通常、親指のルールに従います。

タイプがカスケード削除のFK関係の場合、間違いなく組成がです。

またはその他の方法で

場合、間違いなくあなたがいずれかの集約関係を作成する必要がある場合は、あなたの外部キー列は、例の面ではNULL

Table A(A_ID, ..)Table B(B_ID, ..)

が関与することが凝集いますMap_A_B(A_ID,B_ID)というマッピングテーブルが必要です。または、テーブルBにA_ID FKカラムを追加しますが、NULL可能にしてください。

マッピング関係を作成する必要がある場合は、マッピング・テーブルにマッピングを保持しますが、カスケード削除を実行すると、表Aの行が削除されているか、またはNOT NULLが追加されている場合は、表BのA_ID FK列(現在のケースのように)

+0

ありがとうございます。あなたの説明は、その概念を非常に明確にします。私はこれを実装し、それがどのように動作するのか見ていきます! –

関連する問題