2012-02-11 9 views
1

私が進めているプロジェクトでは、ユーザー用のデータベース、いくつかの異なるタイプのアイテム、およびaclのようなアクセス権システムを設計する必要があります。ACL用データベースの設計

基本的に、これは私がやりたいことである(はるかに複雑なのが、これは私が何を意味するかを証明するのに十分である):

  • ユーザー:(ID、名前、パスワード)
  • 記事:( ID、タイトル、本文)
  • 画像:(ID、タイトル、file_nameに)
  • 許可:(ITEM_TYPE、ITEM_IDは、USER_ID、()

読み取り、書き込み、管理itemTypeにnd itemIdは複合外部キーであり、item_typeに応じてアーティクルまたはイメージを参照します)

パーミッションテーブルの使用は良い考えではなく、記事や画像を表示することはできますが、同じアイテムに対して異なる権限を持つ複数のユーザーがいる可能性があります。これを与えることは選択肢ではありません。

私の意見では、これは正常に動作します。しかし、それは実装になると、私はこれを行うために私にいくつかの自由を与えるために単一のPHPのORMを見つけることができませんでした。これは、私が間違って何かをしているかもしれないと私に信じさせる。

私の質問は次のとおりです。 ACLとデザインデータベースを実装する正しい方法は何ですか? エンタープライズレベルのアプリケーションではどのように行われますか? 非db ACLソリューションはありますか?

答えて

1

あなたはアクセス許可にバインドする1つのmany-to-manyテーブルと、恐らくチョークポイントを解決するオブジェクトが必要です。 - user_idとpermission_idを持ち、object_idは3つの異なるテーブルを参照します。

user_id(references users),permission_id(references permissions),object_id (references image?) 
1 ,2(read),2 
1 ,3(write),2 
1 , 4(exec),2 

が、それはabitの

を役に立てば幸い:

手段は次のようになります