1

ユーザーがグループの入れ子になったセット階層 (役員、地域、部門、チームなど) に格納されるシステムを計画しています。これは、ユーザーが表示できるデータのレベルを決定するために使用されます。何千人ものユーザーが含まれる可能性がある階層を計画する必要があります。

レポート対象のデータは SQL Server 2008 データベースに保存され、該当する各レコードがそのアクション (電話など) を実行したユーザーの ID にリンクされます。

個々のユーザー、または階層からのユーザーのコレクションに適用される合計を収集するには、データベースにクエリを実行する必要があります (たとえば、部門 X のメンバーによって 1 日に行われたすべての通話の数を収集するか、またはすべての会社全体で電話をかける)。

次のクエリを想定します。

    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 に答える