用于权限的SQL嵌套集层次结构

时间:2012-11-18 12:06:34

标签: sql sql-server-2008 hierarchy nested-sets

我正在计划一个系统,用户将存储在嵌套的组层次结构(例如,董事会成员,区域,部门,团队)中,这些系统将用于确定他们可以看到的数据级别。我需要规划层次结构以包含可能数千个用户。

要报告的数据存储在SQL Server 2008数据库中,每个适用的记录都链接到执行该操作的用户的ID(例如,电话)

我需要查询数据库以收集适用于单个用户的总计,或者来自层次结构的用户集合(例如,收集X部门成员为一天所做的所有呼叫的计数,或者,整个公司的所有电话都是。)

假设以下查询:

    SELECT Count(Id) FROM Calls 
    JOIN
    (
        SELECT Heirarchy.UserId 
        FROM Heirarchy
        {nested set joins}
        WHERE {nested set conditions to get relevant UserIds}
    ) H1
    ON Calls.UserId = H1.UserId 
    WHERE {conditions}

由于层次结构将包含数千个用户,如果顶级组用户(例如,董事会成员)运行上述查询,则子查询将返回所有用户记录并匹配

1)这是建立这样一个系统的正确方法吗?

2)任何人都可以看到任何问题,如果有,建议改进吗?

3)任何人都可以建议其他方法来实现上述目标吗?

1 个答案:

答案 0 :(得分:0)

这种方法运行良好 - 自13年1月以来系统一直没有问题。

如果有人有其他选择仍然感兴趣