我希望有一个威胁的一般目录,将最初用于所有用户。该目录有大约100个威胁。这些威胁与其他模型有关,例如AssetType。一个威胁影响多个asset_types,一个asset_type受到多个威胁的影响。
我的问题是,我希望用户修改目录中的威胁,删除威胁和添加威胁,但目录的修改需要只为他自己,而不是为其他用户。asset_types和关系也是如此。我希望每个用户都能够修改关系,但不是所有用户。
我的方法是,我可以拥有CatalogThreat、CatalogAssetType和CatalogThreatsAssetTypes,这将是通用目录,当创建新用户时,我会将每个catalog_threat复制到一个名为threats的表中,其中每个威胁都与用户相关。但是这样的话,我认为我会有很多的重复,因为我认为用户只会对目录进行很少的修改。
你还有其他选择吗?这是一个好的数据库设计吗?有什么我应该知道的设计模式吗?
发布于 2013-01-25 13:12:25
复制所有内容的唯一真正替代方法是对主目录的更改列表进行建模。因此,如果用户从目录中删除了某些内容,您可以将其存储在一个记录中,表示“就像主目录一样,除了Fred已经删除了Threat 3”。如果他们插入了新的关系,您需要存储该关系。
查询此模型将非常困难,因为您将需要选择不存在当前用户的delete的目录记录,并与来自当前用户的任何插入联合。根据您的数据库,您可能能够将其包装在视图中。
https://stackoverflow.com/questions/14499737
复制相似问题