我正在计划一个系统,其中用户将存储在组(例如董事会成员、地区、部门、团队)的嵌套集层次结构中,这将用于确定他们可以看到的数据级别。我需要规划层次结构以包含潜在的数千名用户。
要报告的数据存储在 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)任何人都可以提出替代方法来实现上述目标吗?