2012-01-30 5 views
1

のシナリオで、データの特定のサブセットを除外する最適な設計方法は何ですか。データベースモデル

私はライブラリのshelf、library、user、applicationテーブルをデータベースに持っています。 1つのライブラリシェルフに多数のライブラリファイルを格納できます。私は各アプリケーションの下でユーザーにファイルを関連させたい。 1つのアプリケーションの下にあるユーザーに、UserXLibraryShelfテーブルを使用してライブラリファイルにアクセスさせることができます。どのような棚が利用可能であるかを言うのではなく、どの棚が利用できないのかを伝えたいと思う。ほとんどの場合、ユーザーはアプリケーション3と5以外のすべての棚にアクセスできます。おそらく、これはUserXNotAvailableShelfを持つことで可能です。しかし、これはルックアップテーブルのように動作し、私はこのユーザーのNotAvailableテーブルに存在しないすべての棚を持ってくると言う必要があります。

データベース設計に例外シナリオ(例外ではなく除外)を処理するためのベストプラクティスは何ですか。

+1

ルックアップテーブルのアプローチに何が問題なのかよくわかりません... – FrustratedWithFormsDesigner

+0

レコードがたくさんある場合は十分速いですか?私は棚がルックアップテーブルにないファイルを取得すると言う必要があります。 –

+0

"たくさん"何冊ですか?このシステムでどれだけのデータを期待していますか?大量のデータと適切に調整された指標でクエリがどのように機能するかを確認するために、生成されたデータで簡単なテストをいくつか設定できますか? – FrustratedWithFormsDesigner

答えて

2

すべてのシェルフとユーザーの対応がこれらのテーブルのうちの1つに確実に入るように、「使用可能」と「使用不可」の両方に(ベース)テーブルを持つことは、しかし、更新集中型環境では、このような設計の実用上の問題があるかもしれません。 p.s.あなたはこれらのグループを持つ対応するシェルバーを作成することを検討しましたか?

+0

はい、それはユーザーのグループごとになります。このグループのために、これらの棚は、私が決定したものに基づいて利用可能であるか、利用可能ではありません。棚のマスターリストが同じであるため、そのどちらか一方です。だから私は利用できないか利用可能なものを保管する必要がある。使用不可能とは、データの保存期間を短くすることですが、利用可能な時間はより短く、簡単です。誰かがいつも利用不可能であることをチェックすることを忘れないでください。通常のフローの例外です。 –

0

これは、通常、MS-SQLのロールを使用して行われます。たとえば、特定のシェルフ値を除外するVIEWまたはPROCEDUREを作成し、すべてのシェルフを含むVIEW/PROCとロールに割り当てて、それを別のロールに割り当てます。その後、ユーザーは適切な役割に割り当てられます。

関連する問題