0

私は、MySQLデータベース用のPHP / HTML / Javascript駆動のフロントエンドを持っています。これは、オフィス用のさまざまなファイル/ペーパー(物理的な事務処理用の電子インデックスの一種)をアーカイブします。

ユーザーは、これらの各エントリに対する権限を持つことができることを望んでいます。たとえば、HRの苦情にはインデックスを付ける必要がありますが、データベースのすべてのユーザーが表示できるようにする必要はありません。

ユーザー階層は2層です。各ユーザーは、1つ以上の配布リスト(メーリングリストと同様)のメンバーです。ファイルのインデックスが作成されると、ユーザーは他のユーザーの権限を選択します。たとえば、HR苦情のサンプルとして次を選択できます。

List           |      Permission
`````````````````````````````````
HR Dept        |      Read/Write

Board Members  |      Read

John Smith     |      Read/Write
Mary Smith     |      Read

そして、他の誰にも見えないようにする必要があります。今、私はこれを実装するためにいくつかのことを試みました。最新のものは、以下に関連するリレーションテーブルです。

User 1->Many DistributionList // Assoc the user to some lists
Permission 1->Many DistributionList  //Indicates level of permission that the list has
Permission 1->Many User //Indicates level of permission for each user

ただし、パーミッションテーブルには、パーミッションごとにファイルごとの行が含まれています。これは、数千のファイルと最大50〜60のリスト/ユーザーが与えられた場合、数十万のエントリを意味します。このインデックスは頻繁にフラッシュされないため(おそらく50年以上前のファイルをフラッシュする)、その数は急増する可能性があります。言うまでもなく、クエリはやや複雑で、わずか数百のファイルに対してかなりの時間(SQL要求の場合は約1秒)かかります。

この種のユーザーベースのものを作成するためのより効率的な方法はありますか?代わりに、SQL自体でこれらのアクセス許可を持つユーザーを作成し、接続にこれらの処理を許可することは可能ですか?

tl; dr:PHP、Javascript、HTML、およびPHPMyAdminを使用して、MySQLのエントリに読み取り/書き込み/非表示のアクセス許可を設定するための最良の方法は何ですか?

4

1 に答える 1

0

グループの数が少ない場合(最大64)、ファイルごとに一連のアクセス許可を使用できます(1列追加)。 http://dev.mysql.com/doc/refman/5.0/en/set.html

したがって、各ファイルには、それが属するグループを示す1つの列を含めることができます。この列は、システムの成長に合わせて拡張できます。

64を超えたい場合は、2番目の列を追加することもできますが、これにはより複雑なクエリが必要になります(ここでは、部門を分離しておくと、HRグループ、ボードグループなどが役立ちます)。

特定のユーザーに例外を追加したり、別のグループを作成したりすることもできます。しかし、あなたが言うように、ファイル/ユーザーごとに1つの関連付けエントリが最適です。

于 2012-06-29T12:51:10.683 に答える