用户之间如何共享信息?

How to share information between users?

我正在构建一个软件,我的用户负责管理合同。每个用户只能看到自己负责的合约。

现在,我想实现一个共享功能,用户可以决定与另一个用户共享一些合同细节,这样另一个用户现在可以在他的合同列表中看到一个共享合同。

但首先,我想确保我在数据库方面正确地实现了这一点。

所以目前,关于用户和合约之间的关系,我有以下几点:

user (1) 管理 contracts (1..*)

为了实现共享功能,我添加了以下内容:

user(0..*)可以看到contracts(0..*)

这导致了一个新的 table,我称之为 SharedContracts。 table 将存储现在有权访问合同的用户的用户 ID 和共享合同的合同 ID。

所以现在会发生的是,每当用户 A 决定与用户 B 共享他的合同详细信息时,SharedContracts table 将用于存储此数据。

而下次用户B登录时,系统会通过查询SharedContractstable来判断他是否有共享合约。系统将 select 与他的用户 ID 关联的所有合同 ID。

我想知道这是否是实现此类功能的正确方法?还有别的办法吗?如果它一直这样,我可以 运行 遇到一些问题吗?

我认为您提出的架构很好。我建议的唯一修改是在 SharedContracts table 中包括共享合同的用户以及共享接收者的 ID。这将允许共享合同的用户在以后撤销该共享。

共享合同

+----------+------------------+------------+
| SharerId | ShareRecipientId | ContractId |
+----------+------------------+------------+
|        1 |                2 |          1 |
+----------+------------------+------------+