我有一个 php/mysql 应用程序。有些用户拥有文件夹。文件夹只能是一层深。每个文件夹可以有无限数量的文档。相关表格如下:
用户表:
user_id(PK), name, password, etc
文件夹表:
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
)