假设我有以下实体: Customer、Account、Agreement、Sub-agreement、sub-agreement-account。
客户拥有零个或多个帐户,客户拥有零个或多个协议。每个协议都包含客户有权访问的特定类型的所有帐户。客户可以访问比他自己的帐户更多的帐户,所以我有一个视图,可以检索客户有权访问的所有帐户(具有帐户类型)。
因为一个协议有一个特定类型的帐户,所以我想要一个新的视图来帮助我方便地查询,它将为我提供某个协议的所有帐户(基本上使用第一个视图,但将其与协议的帐户类型结合在一起)。
然后,客户可以使用该协议作为基础创建子协议。因此,客户可以选择与基本协议(子协议-帐户)上的某个帐户子集创建子协议。在这里,我想要一个基本协议帐户的外键,以防止帐户被插入到不在基本协议中的子协议中。但由于这只是一个视图,这是不可能的!
我是否应该跳过外键并使用应用程序逻辑(也可能是帐户和子协议帐户之间的外键),以确保不可能在不在基本协议上的子协议上插入帐户?或者我应该引入一个表“协议-帐户”,实现帮助我获得协议帐户并让我的应用程序维护该表的视图?
发布于 2012-08-13 22:05:55
我永远不会创建任何额外的表来强制(偶尔)关系约束。
一定要在帐户和协议之间创建自然的关系/约束,但不要为了偶尔使用而引入任何额外的数据复杂性。
在创建子协议时向用户显示基本协议有效的帐户子集,并在保存时复选选定列表。
https://stackoverflow.com/questions/11935570
复制相似问题