2009-04-17 18 views
0

私のデータベースにはユーザーとユーザーのスタンプがあり、これらの2つのテーブルに関連付けられた市、州、郡、地域などの情報もあります。このシナリオでは、私は事実上、夜間または段階的なプロセスによって、ユーザスタットを都市、州、郡および地域レベルに簡単にロールアップできます。データスキーマモデルの動的階層を効率的に設計する方法は?

私は都市、州、郡などのグループが固定されていませんが、私は特定のスーパーユーザが独自のグループを作成するための柔軟性を持っているし、次の形式でユーザーを手動で接続する必要の代替シナリオ:

User1| 
User2| - group1 
User3| 
       -> group3 
User4| 
User5| - group2 
User6| 

また、私はまだ私の都市、国家、このような郡のグループを持ち続けることができます。

User1| 
User4| - city1 
User3| 
       -> county1 
User4| 
User5| - city2 

効果的にこれらの様々なバケットに関連するデータをロールアップするために使用することができます知られているデータベースのパターンがありますか?何らかの種類のタグ付けパターン?

私に知らせてください私が明確でない場合、私は明確にするために詳細を述べることができます。

さらに明確化:

私は国によってユーザーがクリックのレポートを追跡したい、と私はさらに状態、および都市に2つのレベルをドリルダウンすることができます。

ここでは、ユーザーインターフェイスを使用して独自のグループを作成する機能があり、さまざまな州の都市を持つ新しい地域を作成できるようになりました。だから、私のレポートは国ごとのユーザーのクリック数を表示することができます。その後、カスタム地域(都市のグループ)にドリルダウンできます。ユーザーのクリック、さまざまな平均などのすべての分析は、新しいグループに基づいて再計算されるようになりました。

+0

追加の明確化はいいと思います。正確に言えば、より具体的なものが良いでしょう。あなたが話していることを本当に知るのは少し難しいです。 –

+0

詳細情報を追加しました。 –

答えて

3

nested setsまたは隣接リスト(同じ記事内にあります)をご覧ください。彼らはプラスとマイナスを持っています....

+0

入れ子にされたセットは、私はあなたに同意します。それが可能な解決策になる可能性があります。 +1 –

+0

一般的なテーブル式があるのでこれは今のところ関連していますか?あるいは、CTEによって緩和された隣接リストを使用することの欠点であるため、ネストされたセットのメンテナンスにより、それらはあまり有用ではありません。 – BenCr

0

これは私の質問user defined hierarchical data modelsに似て聞こえるかもしれませんが、おそらくその答えは助けになるでしょう。

+0

提案したモデルを実装しましたか? –

+0

私はAdam Robinsonの提案(受け入れられた回答)に行ってきましたが、これまでのところうまくいきましたが、あなたが探しているものとは多少異なるかもしれません。 – ninesided

0

あなたのロジックに間違いがあります。都市、郡、州は階層的ではありません。異なる都市に1つの都市が存在する可能性があります。

関連する問題