假设我有以下实体:客户、帐户、协议、子协议、子协议帐户。
客户拥有零个或多个帐户,客户拥有零个或多个协议。每个协议都有客户可以访问的特定类型的所有帐户。客户可以访问比他自己的帐户更多的帐户,因此我有一个视图可以检索客户有权访问的所有帐户(具有帐户类型)。
由于协议具有某种类型的帐户,因此我想要一个新视图来帮助我轻松查询,这将为我提供某个协议的所有帐户(基本上使用第一个视图,但将其与协议的帐户类型结合起来)。
然后,客户可以使用该协议作为基础创建子协议。因此,客户可以选择使用基本协议(子协议帐户)上的某些帐户子集创建子协议。在这里,我想要基本协议帐户的外键,以防止将帐户插入不在基本协议中的子协议中。但由于这只是一个视图,这是不可能的!
我是否应该跳过外键并使用应用程序逻辑(也可能是 Account 和 sub-agreement-account 之间的外键)来确保无法在不基于 base 的子协议中插入帐户协议?或者我应该引入一个表“协议帐户”,具体化帮助我获得协议帐户并让我的应用程序维护该表的视图?