2017-07-14 113 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

非常感謝。你的解釋使得這個概念非常清晰。我要實現這個,看看它是如何工作的! –

相關問題