【发布时间】:2016-10-13 10:33:58
【问题描述】:
假设我的数据模型中有许多(少于 50 个)实体,出于安全原因,我需要存储谁拥有该实体。如果允许对资源执行特定操作的用户(谁在哪个资源上做什么),我需要能够决定每个请求。为此,需要资源所有权。
我可以想出几种不同的方法来做到这一点。一个是在每个表中我都可以有一个指向所有者的外键。这个解决方案的一个缺点是在代码中我需要查看每个单独的表以找出所有权。每次添加新表时,我都需要更新代码以查看该新表。
另一种解决方案可能是将每个特定实体视为通用资源,即具有所有权的资源。并将所有权存储在一个表中。我什至可以在没有任何外键关系的情况下做到这一点,并在代码中处理它以保持资源表同步,例如确保任何表中的每个新条目在“资源”表中都有相应的记录。一个明显的缺点是该表中将有很多记录。这样做的好处是只有一个地方可以找到所有权。
那么首选的方法是什么?考虑到最终可能会有数十万条记录(甚至可能是数百万条),将所有权存储在一个表中是否会出现性能问题?保留大量外键约束的成本如何?有没有更好的方法来解决这个问题?
谢谢
【问题讨论】:
标签: sql-server database entity-framework