0

假设我有以下实体:客户、帐户、协议、子协议、子协议帐户。

客户拥有零个或多个帐户,客户拥有零个或多个协议。每个协议都有客户可以访问的特定类型的所有帐户。客户可以访问比他自己的帐户更多的帐户,因此我有一个视图可以检索客户有权访问的所有帐户(具有帐户类型)。

由于协议具有某种类型的帐户,因此我想要一个新视图来帮助我轻松查询,这将为我提供某个协议的所有帐户(基本上使用第一个视图,但将其与协议的帐户类型结合起来)。

然后,客户可以使用该协议作为基础创建子协议。因此,客户可以选择使用基本协议(子协议帐户)上的某些帐户子集创建子协议。在这里,我想要基本协议帐户的外键,以防止将帐户插入不在基本协议中的子协议中。但由于这只是一个视图,这是不可能的!

我是否应该跳过外键并使用应用程序逻辑(也可能是 Account 和 sub-agreement-account 之间的外键)来确保无法在不基于 base 的子协议中插入帐户协议?或者我应该引入一个表“协议帐户”,具体化帮助我获得协议帐户并让我的应用程序维护该表的视图?

4

1 回答 1

0

我永远不会创建任何额外的表来强制(偶尔)关系约束。
务必在帐户和协议之间创建自然关系/约束,但不要为了偶尔使用而引入任何额外的数据复杂性。
在创建子协议时向用户展示对基本协议有效的帐户子集,并在保存时仔细检查所选列表。

于 2012-08-13T14:05:55.430 回答