1

我想要一个通用的威胁目录,最初将用于所有用户。该目录有大约 100 个威胁。威胁与其他模型有关,例如 AssetType。一种威胁影响多种资产类型,一种资产类型受多种威胁影响。

我的问题是我希望用户修改目录中的威胁,删除威胁和添加威胁,但目录的修改需要只针对他,而不是针对其他用户。与asset_types 和关系相同。我希望每个用户都能够修改关系,但不是所有用户。

我的方法是,我可以拥有 CatalogThreat 和 CatalogAssetType 以及 CatalogThreatsAssetTypes,它们将成为一般目录,当创建新用户时,我会将每个 catalog_threat 复制到名为威胁的表中,其中每个威胁都与用户相关。但是这种方式我认为我会有很多重复,因为我认为用户会修改很少的目录。

你有其他选择吗?这是一个好的数据库设计吗?我应该知道任何设计模式吗?

4

1 回答 1

1

复制所有内容的唯一真正替代方法是对主目录的更改列表进行建模。因此,如果用户从目录中删除了某些内容,您可以将其存储在一条记录中,指示“就像主目录一样,除了 Fred 已删除威胁 3”。如果他们插入新的关系,您将需要存储它。

查询此模型将非常困难,因为您需要选择不存在从当前用户删除的目录记录,并与来自当前用户的任何插入联合。根据您的数据库,您可能可以将其包装在视图中。

于 2013-01-25T05:12:24.727 回答