我正在构建一个软件,其中我有负责管理合同的用户。每个用户只能看到他们负责的合同。
现在,我想实现一个共享功能,用户可以决定与另一个用户共享一些合同细节,因此其他用户现在可以在他的合同列表中看到一个共享合同。
但是首先,我想确保我在数据库方面正确地实现了这一点。
因此,就使用者与合约的关系而言,我现在有以下几点意见:
用户(1)管理合同(1.*)
为了实现共享功能,我添加了以下内容:
用户(0..*)可以看到合同(0.*)
这导致了一个新的表,我称之为SharedContracts。此表将存储用户的userID,用户现在将有权访问共享合同的契约和contractID。
因此,现在发生的情况是,每当用户A决定与用户B共享他的合同细节时,将使用SharedContracts表来存储这些数据。
下次用户B登录时,系统将通过查询SharedContracts表来检查他是否有共享合同。系统将选择与他的userID相关联的所有契约his。
我想知道这是否是实现这样一个功能的正确方式?还有别的办法吗?如果这样的话,我会遇到一些问题吗?
发布于 2017-05-10 03:33:42
我想知道这是否是实现这样一个功能的正确方式?还有别的办法吗?
好的,到目前为止(考虑到有限的信息),但是设计是不完整的,所以我不会说它肯定是正确的。设计功能,设计类设计。当您了解了所有的需求之后,请详细查看数据库。
我不是说不要考虑数据库。但是你应该设计类和它们的交互。这将为数据库设计提供信息,而不是相反的情况。
我试着把数据库看作是“实现细节”。换句话说,特定的数据库及其细节基本上与类功能设计无关。
发布于 2017-05-09 12:18:39
很好的问题,但没有单一的,一种方法来统治他们所有的实现这种“共享”。您所选择的应该有效。
我看到的唯一缺点是:“当一个资源需要一个以上的管理器时,会发生什么?”
但是,所有的实现都有一个缺点或另一个缺点。我会从这个开始,在你遇到真正的问题之前不要想得太多。
https://softwareengineering.stackexchange.com/questions/348606
复制相似问题