私は、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のエントリに読み取り/書き込み/非表示のアクセス許可を設定するための最良の方法は何ですか?