我有一个php / mysql应用程序。有些用户有文件夹。文件夹只能是一层深。每个文件夹可以包含无限数量的文档。相关表格如下:
USER_TABLE:
user_id(PK), name, password, etc
folder_table :
folder_id(PK), name, user_id(FK into user_table)
document_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(读,写,执行)的方式以及(所有者,组,其他)机制来实现它。但对于我这个不起眼的系统来说,这似乎有点过于复杂。
如果有人能指出我可能采取的方法,我真的很感激。我的目标很简单:
WHERE
user_id = %d
)答案 0 :(得分:2)
您可以使用列folder_id(FK), user_id (FK)
* folder_table *中的user_id
代表文件夹的所有者。当所有者与另一个用户共享此文件夹时,您将folder_id和user_id(与谁共享文件夹)添加到folder_user
表中。
稍后,您可以将列access (enum 'READ', 'READ_WRITE')
添加到同一个表中,以查看是否允许用户编辑文件夹中的文档。
user_id(FK), group_id(FK)