3

私の質問はおそらく、以前にここで尋ねられた質問の反響かもしれません: How to design a User Object Model using MS Roles & Membership、しかし、まだ良い答えがなく、私の質問はデータモデルの設計を対象としているため、もう一度質問しますとりあえず:

とにかく、私のアプリケーションにはユーザーとグループがあります。ユーザーは多くのグループに属することができ、もちろんグループには多くのユーザーを含めることができます。問題は今のところ、ユーザー、ゲスト、管理者のいくつかの基本的なグループしかわかっていません。将来的には、can-do-X、can-do-Y グループが存在する可能性があり、管理者、ユーザー、およびゲストだけでなく、それ以上またはそれ以下になる可能性があります。だから私は簡単なアプローチを取るように誘惑されています. アプローチについての私の考えは次のとおりです。

必要最小限の User テーブルと Role テーブル、および多対多の関係をシミュレートする別のテーブルを用意しようとすると、少し過剰に設計されているように見えます。私が正しく理解していれば、これは正規化されたアプローチと見なされます。逆に、IsAdmin、IsGuest、CanDoX、CanDoY などの次の列を User テーブルに投入すると、これは非正規化されます。

複雑さと柔軟性、時間と空間などのバランスをとろうとしています。提案してください。

4

2 に答える 2

2

正規化された USER_ROLE (または ROLE_USER) テーブルを強くお勧めします。「過度に設計された」ものではなく、要件を正確かつ正確に反映しています。

私はまさにこのモデルを使用するデータベース システムに取り組んでいます。現在、250 の異なる役割があり、正常に動作します。users テーブルに 250 個の "CanDoX" 列を持つことは悪夢であり、一部のスーパーユーザーは新しいロールを定義することが許可されているため、選択肢にはなりません。

于 2010-02-18T13:18:37.600 に答える
1

"CanDoX"、"CanDoY" の複数の列ではなく、ビットマスクを使用して権限を表します。

于 2010-02-18T13:21:46.880 に答える