2010-12-06 56 views
2

我正在爲銀行設計一個SQL Server 2005數據庫,用於存放與客戶(父表)及其組合(子表)相關的記錄,每個客戶多個組合。目前爲止的表格:數據庫設計:與父表和父表關聯的第三個表

Client (Client_Number PK ...) 

Portfolio (Portfolio_ID PK, Client_Number FK ...) 

我需要包含一個表格來存放相關第三方(例如基金經理,管理員,發起人等)的記錄。第三方是不確定的,可能會改變,關係類型也是如此。的關係顯然是多到很多,所以我想其他表如下:

Third_Party (Third_Party_ID PK, Third_Party_Name ...) 
Relationship (Relationship_ID PK, Third_Party_ID FK, Client_Number FK ...) 

這會工作得很好,但是,第三方可以與投資組合(子表),以及客戶端(父表)。

例如,客戶端1有投資組合1和投資組合2.客戶端1和投資組合1鏈接到發起人1,但投資組合2鏈接到不同的發起人。

對於上述情況的表設計的最佳做法的任何想法?

在此先感謝。

+0

全都是你的鑰匙的相同數據類型? – 2010-12-06 15:53:03

+0

是的,所有的鍵都是int。 – Aphillippe 2010-12-06 16:20:20

回答

2

我會去的兩個附加表:

Client_ThirdParty 
Portfolio_ThirdParty 

這將作爲現有的兩個表,「第三方」之間的鏈路實體。我會避開看起來像變相的元數據的'關係'表。

EDIT

例如,客戶機1具有組合1 與組合2.客戶端1和 組合1被鏈接到啓動子1 但組合2被連接到一個不同 啓動子。

你的意思是三個附加表嗎? ThirdParty,Client_Relationship和 Portfolio_Relationship?我問這個問題: 客戶和投資組合 的關係都是關於第三方的單一「池」 。

OK,如果有進一步的關係來考慮,那麼你可能需要更復雜(但我不知道你的數據我可能會錯過什麼!):

  • 客戶可以有多種投資組合
  • 客戶可以有很多ThirdPartys
  • 投資組合可以有1個客戶?
  • 投資組合可以有很多ThirdPartys
  • ThirdPartys可以有很多客戶
  • ThirdPartys可以MAVE許多投資組合

如果這是正確的,那麼:

Client 
Portfolio (contains ClientId to refer to its client) 
ThirdParty 

Client_ThirdParty <-- link entity that handles the Client/ThirdParty M-to-M 
Portfolio_ThirdParty <-- link entity that handles the Portfolio/ThirdParty M-to-M