用户之间如何共享信息?
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 |
+----------+------------------+------------+
我正在构建一个软件,我的用户负责管理合同。每个用户只能看到自己负责的合约。
现在,我想实现一个共享功能,用户可以决定与另一个用户共享一些合同细节,这样另一个用户现在可以在他的合同列表中看到一个共享合同。
但首先,我想确保我在数据库方面正确地实现了这一点。
所以目前,关于用户和合约之间的关系,我有以下几点:
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 |
+----------+------------------+------------+