最近,我遇到了一个问题,我只能想到泥泞的解决方案。
假设一个表有几个对象(让我们说照片使它更容易)。每个照片/对象都必须有自己的权限集.
上传者必须始终看到照片。
2-照片属于一组照片,所有访问该组的用户都可以看到它。
3-照片可以被关闭和私密。
4-照片可以是“授权的”特定用户。
5-照片可以“拒绝”特定用户。
用户和照片组都将增长到中等大小。
我不是来找SQL详细查询的。只是希望有人能给我指明正确的方向。
发布于 2010-10-11 14:20:44
我想指出的是,我在优化SQl方面没有太多经验,所以我的答案可能会给服务器带来太多的负担。
我会选择一个表,比如photo_permission,它将包含每个用户id的user _id和授权照片_id之间的映射。类似于:
| user_id | photo_id |
| 1 | 1 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |如果有id user_id的特定用户的记录和id photo_id的特定照片,则用户有查看照片的权限。
如果无法阻止访问包含照片的组的用户的照片,甚至可以简化上表。
| authority_id | authority_type | photo_id |
| 1 | group | 1 |
| 1 | user | 3 |
| 2 | user | 1 |
| 2 | group | 2 |现在,您可以用authority_type用户检查用户的id是否列在行上,也可以检查他的id在authority_type组的行上是否为IN (SELECT id FROM user where group_id=authority_id)。请注意,上面的代码没有经过测试。
https://stackoverflow.com/questions/3906783
复制相似问题