用于用户和组访问控制的MySQL数据库模式

我一直在努力寻找解决这个问题几天,现在我似乎无法想出有用的东西。 问题如下:

我目前正在开发一个统计工具,显示一些应用程序的一些图形和数据。 显然需要限制访问这些数据,因为用户A拥有应用程序“一”和“两”,并且不能看到“三”或“四”。

现在,每个用户都可以是多个组的成员,并从该组继承权限,但也可以拥有单独的权限。 这些权限必须为每个应用程序设置。 在下列情况下,可以访问一个应用程序的一组数据:

  • 用户本人有权访问此应用程序的这一段数据
  • 用户所属的任何一个组都有权访问此应用程序的这部分数据
  • http://i.stack.imgur.com/y4W6E.png

    我们的目标是建立一个表,用于存储每个用户当前拥有的每个应用程序的实际权限,并根据组成员身份和个人权限计算出来,并且由于与其他表的关系,该信息始终保持一致。

    我不知道这是否有助于找到解决方案,但以下是获取ID为1的用户的当前活动权限的SQL:

    (
    SELECT u.perm_id AS perm, u.user_id AS uid, u.app_id AS app
    FROM daUsers_has_daPermissions AS u
    WHERE u.user_id = 1
    )
    UNION
    (
    SELECT g.perm_id AS perm, u.user_id AS uid, g.app_id AS app
    FROM daUsers_has_daPermissions AS u, daUsergroup_has_daPermissions AS g, daUsergroup_has_daUsers AS g_has_u
    WHERE u.user_id = 1
    AND u.user_id = g_has_u.user_id
    AND g.group_id = g_has_u.group_id
    );
    

    这是我想存储在一张额外的表格中(仅供所有用户使用)。


    听起来你应该使用一个视图。 您已经拥有查询,请使用查询来创建视图。

    链接地址: http://www.djcxy.com/p/12747.html

    上一篇: MySQL database schema for user and group access control

    下一篇: ExpectedException attribute is not working