私はphp/mysqlアプリケーションを持っています。フォルダを持っているユーザーがいます。フォルダの深さは 1 レベルのみです。各フォルダーには無制限の数のドキュメントを含めることができます。関連するテーブルは次のとおりです。
ユーザーテーブル:
user_id(PK), name, password, etc
folder_table :
folder_id(PK), name, user_id(FK into user_table)
ドキュメント テーブル
document_id(PK), user_id(FK), folder_id(FK), date, name, etc
フォルダーとドキュメントを操作するすべてのクエリは、次の形式です。
select/update/insert <blah, blah, bhah>
where user_id = %d
現在、ユーザーがフォルダーを他のユーザーと共有できるようにすることを検討しています。私はこれを可能な限り混乱の少ない方法で行いたいと思っています。また、結果の WHERE 句の実行時のオーバーヘッドを最小限に抑えたいと考えています。
私は頭を悩ませてグーグルで調べてきましたが、十分に簡単な解決策を見つけていません。UNIX の (読み取り、書き込み、実行) と (所有者、グループ、その他) のメカニズムに似た方法で実装することを考えることができます。しかし、私の謙虚なシステムには少し複雑すぎるようです。
どのアプローチを取ることができるかについて、誰かが私に指針を与えることができれば、本当に感謝しています. 私の目標は単純です。
- システムは大幅な手直しを必要としない
- 少なくとも、ユーザーは他のユーザーまたはグループとフォルダーを共有できる必要があります (必要に応じてグループの概念を追加します)。
- 現在のものとは対照的に、SQL ステートメントの WHERE 句に過度のオーバーヘッドがあってはなりません (以下のように単純です
WHERE user_id = %d
) 。