2012-03-02 6 views
0

データベース構造はこのようなものです:各ユーザーが右割り当て自分のリストを作成し、アクセス権を持っています。たとえばこのデータベースの設計に複雑さを軽減

権の2種類があります

table: user 
attribute: UserID 

table: list 
attribute: ListID 

table: user_list 
attribute: ListID,UserID, Rights 

:読んで、私は権利が(誰もが編集できる)公共呼び出すようになるまで

すべてが正常に動作編集 私は10のリストと100メンバーを持っている場合は、私が1000ユーザーIDを作成するために持つように - 権利:編集行

が大幅に増加しています。

どのようにこの問題を解決するには:

1)公共の名前の別のテーブルを作成し、それにListIDを置きますか?

2)行をListID、null UserID、Rights 'Public'として格納しますか?

どの方法が優れていますか?ありがとうございました。

+1

誰もが編集できる場合、なぜ編集権があるかどうかを確認する必要がありますか? – gangreen

+0

あなたは正しいです。だから私は '公開'リストを追加したい場合、私はちょうど***** ListID ***、UserID、user_listテーブルに権利を追加する必要がありますか?やっているのはセパレートですか?またはuser_listとlistの違いを確認しますか?ありがとうございました。 – user782104

+0

例えば、リストから選択する*。List、User_List User_List.ListID <> List.ListIDこれらの公開リストを取得するには? – user782104

答えて

1

私はあなたが効率的にリストを公開したい場合は、なぜあなたはちょうどあなたのリストテーブルにIsPublicフィールドを作成していない

私はあなたの状況に完全には明らかだわからないんだけど、... 。リストが公開されているときにチェックします。リストIsPublicの場合、ユーザー固有の権利を確認する必要はありません。

あなたはuser_listテーブルにあまりにも多くの行を持つ懸念がある場合、あなたはフィールドでそれを設定することができます。

UserIDListIDCanEditCanRead

の数ならば、私は唯一のことをするだろうユーザー権利は拡大し続ける可能性は低いです。そして、私はパフォーマンスの違いがどうなるか分かりません。

関連する問題