0

私は、契約管理を担当するユーザーがいるソフトウェアを構築しています。各ユーザーは、自分が担当している契約のみを見ることができます。ユーザー間で情報を共有するにはどうすればよいですか?

ここで、ユーザーが契約の詳細の一部を他のユーザーと共有することを決定できる共有機能を実装したいので、他のユーザーは契約リストに共有契約を見ることができます。

しかし、まず、私はこれをデータベースの観点から正しく実装したいと考えています。

ので、現時点では、私は、ユーザーとの契約との関係に関して、次のいる:

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

および共有機能を実装します、私は次のように追加しました:

user(0 .. *)contracts(0 .. *)見ることができます私はSharedContracと呼ばれる新しいテーブルに結果

ts。このテーブルには、共有契約の契約IDと契約IDにアクセスできるユーザーのユーザーIDが保存されます。

これで、ユーザーAがユーザーBと契約の詳細を共有することを決定するたびに、SharedContractsテーブルがこのデータを格納するために使用されます。

次回ユーザーBがログインすると、システムはSharedContractsテーブルを照会して共有契約があるかどうかを確認します。システムは、自分のuserIDに関連付けられているすべてのcontractIDを選択します。

これがこのような機能を実装する正しい方法であるかどうかを知りたいですか?他の方法はありますか?このようなことがあれば、いくつかの問題に遭遇することはできますか?

答えて

0

あなたの提案したアーキテクチャはうまくいくと思います。私が提案する唯一の変更は、契約を共有したユーザーと共有の受信者の両方のIDをSharedContractsテーブルに含めることです。これにより、後で契約を共有したユーザーがその共有を取り消すことができます。

SharedContracts

+----------+------------------+------------+ 
| SharerId | ShareRecipientId | ContractId | 
+----------+------------------+------------+ 
|  1 |    2 |   1 | 
+----------+------------------+------------+ 
関連する問題