在php/mysql应用程序中与多个用户实现文件夹共享

在php/mysql应用程序中与多个用户实现文件夹共享,php,mysql,Php,Mysql,我有一个php/mysql应用程序。有些用户有文件夹。文件夹只能有一级深度。每个文件夹可以有无限数量的文档。有关表格如下: 用户表: user_id(PK), name, password, etc 文件夹\u表: folder_id(PK), name, user_id(FK into user_table) 文件表 document_id(PK), user_id(FK), folder_id(FK), date, name, etc 要对文件夹和文档进行操作的所有查询都是 selec

我有一个php/mysql应用程序。有些用户有文件夹。文件夹只能有一级深度。每个文件夹可以有无限数量的文档。有关表格如下:

用户表:

user_id(PK), name, password, etc
文件夹\u表

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
选择/更新/插入
其中用户\u id=%d
现在,我希望允许用户与其他用户共享他们的文件夹。我想以尽可能少的破坏性方式来做这件事。我还希望最小化由此产生的WHERE子句的运行时开销

我一直绞尽脑汁在谷歌上搜索,但还没有找到一个足够简单的解决办法。我可以考虑以类似于unix(读、写、执行)以及(所有者、组、其他人)机制的方式实现它。但对于我简陋的系统来说,这似乎有点太复杂了

如果有人能给我指点一下我可能采取的方法,我将不胜感激。我的目标很简单:

  • 这个系统不需要大量的返工
  • 用户应至少能够与其他用户或组共享文件夹(I 如果需要,将添加组的概念)
  • SQL语句的WHERE不应该有太多开销 子句,而不是它现在的形式(简单到:
    WHERE
    用户id=%d
  • 与用户共享文件夹 您可以添加一个表*文件夹\用户*,其中包含
    文件夹id(FK)、用户id(FK)

    *文件夹表*中的
    user\u id
    表示文件夹的所有者。当所有者与其他用户共享此文件夹时,您可以将文件夹id和用户id(与之共享文件夹的用户)添加到
    folder\u user
    表中

    稍后,您可以将列
    access(enum'READ'、'READ_WRITE')
    添加到同一个表中,以查看是否允许用户编辑文件夹中的文档

    与组共享文件夹
  • 你需要一个桌子组
  • 然后您需要将用户添加到组中,因此添加一个表*user\u group*:
    user\u id(FK),group\u id(FK)
  • 然后,若要向组授予文件夹的访问权限,请添加表*folder\u group*:folder\u id(FK),group\u id(FK)以向组授予文件夹的访问权限

  • 这听起来像是一个开销最小的计划。谢谢