すべてのユーザーに対して最初に使用される脅威の一般的なカタログが必要です。カタログには約 100 の脅威があります。脅威は、AssetType などの他のモデルと関係があります。1 つの脅威が複数の asset_type に影響し、1 つの asset_type が複数の脅威の影響を受けます。
私の問題は、ユーザーがカタログ内の脅威を変更し、脅威を削除し、脅威を追加することを望んでいますが、カタログの変更は、他のユーザーではなく、彼だけが行う必要があることです。asset_types と関係についても同様です。すべてのユーザーではなく、各ユーザーが関係を変更できるようにしたいと考えています。
私が持っている方法は、一般的なカタログになる CatalogThreat と CatalogAssetType と CatalogThreatsAssetTypes を持つことができ、新しいユーザーが作成されたときに、各 catalog_threat を、各脅威がユーザーに関連する Threat と呼ばれるテーブルにコピーすることです。しかし、この方法では、ユーザーがカタログをほとんど変更しないと思うので、重複が多くなると思います。
代替手段はありますか?これは適切なデータベース設計ですか? 知っておくべき設計パターンはありますか?