2012-04-17 15 views
1

私は小さなソーシャルネットワークの開発に携わり、ユーザーはそれらの間の関係を確立できなければならず、コンテンツに対するアクセス権も必要とします。例:私は友人として1人のユーザーを追加しますが、このユーザーは彼/彼女のすべてのコンテンツを見ることができないので、ユーザーが許可するコンテンツ(アクセス許可)にしかアクセスできません。だから私は問題があり、この部分のDERを設計する助けが必要です。私は(SELECT)私が検索した場合ので、ユーザー1>ユーザー1>ユーザー2とユーザー2:ユーザー間の人間関係

- users (id, name) 
- relations_type (id, name, active) 
- users_relations (id, id_user_1, id_user_2) 
- users_permissions (id, id_relation, id_module, id_user, view, edit, delete) 

これは以下を引き起こす:すべての関係について

  • 2列私はには、このテーブルを持っていると思いますユーザー1の友人であり、どちらがUser2の友達であるかを知る必要があります。私が片方向の関係を残しておけば、UNIONが必要になり、このマイグレーションが私のDBを遅らせます

間違いはありませんか?あなたがこれをCRUDするとき、あなたはどのようにこれを扱いますか?私は方法とMyISAMテーブルでMySQLを使用しています。

答えて

0

user1とuser2をテーブル名として使用しないでください。スコープが拡大するときには、どちらがどちらであるかを忘れてしまいます。 ユーザーテーブルのアクセス許可を非正規化することができます。テーブルをいくつかのブール値ビットで分割する必要はありません。 組合には数えられませんが、予想外の状況であなたを裏切ります。

関連する問題