2017-07-14 126 views
1

将FK添加到我的表时,如何区分1:M关联与1:M构成?区分1:M关联对1:M中的M构成

例如,我使用下面的查询语句来改变现有列Account(在Case表)引用AccountId(在Account表)的外键。

他们共享一个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 Association”有什么不同? –

回答

0

有几个基本知识需要纠正你的问题。

两个实体之间的关联是聚合或合成。

所以你的问题没有意义,如果你谈论1:M组合与1:M联系的区别。

要理解关系数据库设计方面的聚合和组合之间的差异,我通常遵循一个拇指规则。

如果您的FK类型Cascade删除删除,则为

OR

在其他的方式,它肯定,如果你的外键列是NULL

在示例方面涉及Table A(A_ID, ..)Table B(B_ID, ..)

如果需要可以创建聚合关系汇总你需要一个映射表,如Map_A_B(A_ID,B_ID),或者你添加一个A_ID FK列到表B,但是使它可以为NULL

如果您需要创建组合关系,则保留映射表中的映射,但强制执行级联删除以实现表B和映射表中的行的删除,如果表A中存在行删除或者添加了NOT NULL表B中的A_ID FK列(与您当前的情况类似)

+0

非常感谢。你的解释使得这个概念非常清晰。我要实现这个,看看它是如何工作的! –

相关问题