数据库设计:与父表和父表关联的第三个表
问题描述:
我正在为银行设计一个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链接到不同的发起人。
对于上述情况的表设计的最佳做法的任何想法?
在此先感谢。
答
我会去的两个附加表:
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
全都是你的钥匙的相同数据类型? – 2010-12-06 15:53:03
是的,所有的键都是int。 – Aphillippe 2010-12-06 16:20:20