1

すべてのユーザーに対して最初に使用される脅威の一般的なカタログが必要です。カタログには約 100 の脅威があります。脅威は、AssetType などの他のモデルと関係があります。1 つの脅威が複数の asset_type に影響し、1 つの asset_type が複数の脅威の影響を受けます。

私の問題は、ユーザーがカタログ内の脅威を変更し、脅威を削除し、脅威を追加することを望んでいますが、カタログの変更は、他のユーザーではなく、彼だけが行う必要があることです。asset_types と関係についても同様です。すべてのユーザーではなく、各ユーザーが関係を変更できるようにしたいと考えています。

私が持っている方法は、一般的なカタログになる CatalogThreat と CatalogAssetType と CatalogThreatsAssetTypes を持つことができ、新しいユーザーが作成されたときに、各 catalog_threat を、各脅威がユーザーに関連する Threat と呼ばれるテーブルにコピーすることです。しかし、この方法では、ユーザーがカタログをほとんど変更しないと思うので、重複が多くなると思います。

代替手段はありますか?これは適切なデータベース設計ですか? 知っておくべき設計パターンはありますか?

4

1 に答える 1

1

すべてをコピーするための唯一の実際の代替手段は、メインカタログへの変更のリストをモデル化することです。したがって、ユーザーがカタログから何かを削除した場合、これを「FredがThreat3を削除したことを除いてメインカタログと同じように」を示すレコードに保存します。彼らが新しい関係を挿入する場合、あなたはそれを保存する必要があります。

現在のユーザーからの挿入と結合された現在のユーザーからの削除が存在しないカタログレコードを選択する必要があるため、このモデルのクエリは非常に困難になります。データベースによっては、これをビューでラップできる場合があります。

于 2013-01-25T05:12:24.727 に答える