数据库选择有效的用户访问权限查找

时间:2012-06-07 05:22:02

标签: database database-design social-networking user-permissions

我想创建一个方案,用于在社交网站的数据库中存储和访问查看权限。此问题类似于此处的其他问题,例如how are viewing permissions usually implemented in a relational database?What is the most efficient way to specify user permissions in a database?,但主要有一个显着差异:我没有像这些人那样被迫使用关系数据库是,并且可以四处寻找其他解决方案。我也可以使用缓存来存储我想要的任何类型的预先计算的结构,即使我最终选择了关系解决方案,只要可以合理的方式处理更新。

有几个项目应该共享类似的访问权限设置(照片,状态更新等),这些是我现在想要处理的主要设置:

  • 私人
  • 公共
  • 我的朋友可用
  • 适用于我朋友的朋友
  • 可用我的论坛

前两个当然很简单,但最后两个似乎很复杂。当前实现使用带有每个项目标志的关系数据库,如果没有子查询或多个查询,我无法想办法解决它。当然,我可以使用多对多的表将项目与组甚至用户组合在一起,但我担心每次更改都会导致大量更新。

现在,获取实际内容是轻而易举的,但我花了大量时间来检查权限。此外,我可以在一个请求中获得一堆照片,但我需要单独检查查看权限,因为可能适用不同的规则。这个解决方案似乎根本没有扩展。

我还想为特定项目处理特定用户或组的例外情况。除此之外,根据项目类别,可能会有一些情况应该区别对待。例如,您可能希望为照片中标记的用户提供查看该照片的权限(例如,为了抵消cyberbullying)。

  • 其他人如何解决这个问题?
  • 是否有巧妙的方法可以使用关系数据库?
  • 如果应该以类似的方式处理很多类别的项目,我可以干一切地这样做吗?
  • 我应该研究其他类型的数据库,比如图形数据库还是什么?在这种情况下对特定软件的任何建议?

0 个答案:

没有答案