2010-12-06 6 views
2

クライアント(親テーブル)とそのポートフォリオ(子テーブル)に関するレコードを保持する銀行のSQL Server 2005データベースを設計しています。複数のポートフォリオ。これまでのテーブルは:データベース設計:親テーブルと子テーブルの両方に関連する第3テーブル

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

は、あなたの鍵の全て同じデータであり、タイプ? –

+0

はい、すべてのキーはintです。 – Aphillippe

答えて

2

私は2つの追加のテーブルのために行くだろう:

Client_ThirdParty 
Portfolio_ThirdParty 

2つの既存のテーブルと「サードパーティ」の間のリンクの実体として作用するであろう。私は偽装のメタデータのように見える 'Relationship'テーブルをはっきり見ていきます。例えば

EDIT

、クライアント1は、ポートフォリオ1 ポートフォリオ2.クライアント1と ポートフォリオ1は1 をプロモーターに連結されているが、ポートフォリオ2は 異なるプロモーターに連結されています。

3つの追加テーブルを意味していますか? ThirdParty、Client_Relationship、 Portfolio_Relationship?私は としてクライアントとポートフォリオの両方が の関係を第三者の単一の「プール」 としています。

OKは、考慮すべき更なる関係があるならば、あなたはより多くの複雑さを必要とするかもしれない(しかし、私はあなたのデータを知らないように私が何かを見逃すこと!):

  • クライアントは、多くのポートフォリオを持つことができます
  • クライアントは多くのThirdPartysを持つことができます
  • ポートフォリオにはクライアントが1つありますか?
  • ポートフォリオはThirdPartysが、これはその後、正しい場合ThirdPartysは、多くのポートフォリオ

をMAVEすることができ、多くのクライアント

  • を持つことができ、多くのThirdPartys
  • を持つことができます。

    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 
    
  • +0

    3つの追加テーブルを意味しますか? ThirdParty、Client_Relationship、Portfolio_Relationship?クライアントとポートフォリオの両方の関係が第三者の単一の「プール」であるため、これを尋ねます。 – Aphillippe

    +0

    編集は物事をきれいに分かります、ありがとう。これは私が考えていたアプローチのようなものです。ありがとう。 – Aphillippe

    関連する問題