我正在计划一个系统,用户将存储在嵌套的组层次结构(例如,董事会成员,区域,部门,团队)中,这些系统将用于确定他们可以看到的数据级别。我需要规划层次结构以包含可能数千个用户。
要报告的数据存储在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)任何人都可以建议其他方法来实现上述目标吗?
答案 0 :(得分:0)
这种方法运行良好 - 自13年1月以来系统一直没有问题。
如果有人有其他选择仍然感兴趣