1

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

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

我需要查询数据库以收集适用于单个用户或层次结构中的用户集合的总数(例如,收集 Division 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)任何人都可以提出替代方法来实现上述目标吗?

4

1 回答 1

0

这种方法效果很好 - 系统自 13 年 1 月以来一直运行,没有任何问题。

如果有人有替代品,仍然感兴趣

于 2014-01-13T11:34:12.387 回答