代码之家  ›  专栏  ›  技术社区  ›  Frankie

MySQL如何存储数据+访问权限性能方面

  •  0
  • Frankie  · 技术社区  · 15 年前

    我最近遇到了一个问题,对此我只能想出模糊的解决办法。

    假设一张桌子有几个对象(比如说照片,让它更容易)。 每个照片/对象都必须有自己的权限集。

    1-上传者必须始终看到照片

    3-照片可以被关在门外,并成为私人照片
    4-照片可以是“授权”用户特定的
    5-照片可以“拒绝”特定于用户

    我不是在这里寻找SQL详细查询。只是希望有人能给我指出正确的方向。

    1 回复  |  直到 15 年前
        1
  •  1
  •   thomaux    15 年前

    我想指出的是,目前我在优化SQl方面没有太多经验,因此我的答案可能会给服务器带来太多的负载。

    我会选择一个表,比如photo_permission,它将包含每个用户id的用户id和授权照片id之间的映射。类似于:

    | user_id | photo_id |
    | 1       | 1        |
    | 1       | 3        |
    | 2       | 1        |
    | 2       | 2        |
    

    如果id为user\u id的特定用户和id为photo\u id的特定照片存在记录,则该用户有权查看该照片。

    | authority_id | authority_type | photo_id |
    | 1            | group          | 1        |
    | 1            | user           | 3        |
    | 2            | user           | 1        |
    | 2            | group          | 2        |
    

    现在,您可以检查用户的id是否列在具有权限\类型user的行上,或者检查他的id是否为 IN (SELECT id FROM user where group_id=authority_id) 在具有权限类型组的行上。请注意,上面的代码没有经过测试。