Php 文档级读取权限连接表?

Php 文档级读取权限连接表?,php,mysql,yii2,Php,Mysql,Yii2,我需要在文档级别控制子客户端的用户类型在登录时在列表中看到的内容 我有表userTable和docTable。 该应用程序只是一个团队文档应用程序。Manager登录并设置一个客户机,在该客户机下有任意数量的关联文档和子客户机,但通常都在4或5个左右。客户、子客户和文档组成一个组。一对多用于客户端=>子客户端和客户端=>文档。单向的 我用它来控制“子客户端”的PDF在登录时看到的内容。从数据库的角度来看,处理文档级读取权限的最佳方法是使用userID、DocID、AccessRightCode字

我需要在文档级别控制子客户端的用户类型在登录时在列表中看到的内容

我有表
userTable
docTable
。 该应用程序只是一个团队文档应用程序。Manager登录并设置一个客户机,在该客户机下有任意数量的关联文档和子客户机,但通常都在4或5个左右。客户、子客户和文档组成一个组。一对多用于客户端=>子客户端和客户端=>文档。单向的

我用它来控制“子客户端”的PDF在登录时看到的内容。从数据库的角度来看,处理文档级读取权限的最佳方法是使用
userID、DocID、AccessRightCode
字段的简单的
userdocjuncontable

我觉得我没有想到什么,我发现的每个例子对于这个应用来说都太复杂了,比如

JIC这是一个Yi2应用程序,具有基于数据库的RBAC身份验证

CREATE TABLE userTable
(
    UserID int PRIMARY KEY,
    UserEmail varchar(50) NOT NULL,
    UserPassword varchar(50) NOT NULL
);

CREATE TABLE documentTable 
(
    DocumentID int PRIMARY KEY,
    DocumentDescription varchar(500) NOT NULL
);

CREATE TABLE UDJunction
(
    -- User/Document Junction table
    id int auto_increment primary key,
    userId int not null,
    documentId int not null,

    -- charlyRoot (OP) had this:
    readaccess tinyint not null, -- 1 = yes, 0 no

    -- Drew recommends this (extensible to dozens of permissions per file):
    docPermissions int not null, -- or just jam a bitmask in here (bit OR)

    unique key(userId,documentId), -- WHAT IS THIS USED FOR?
    key (documentId,userId),
    CONSTRAINT fk_ud_user FOREIGN KEY (userId) REFERENCES userTable(userId),
    CONSTRAINT fk_ud_documents FOREIGN KEY (documentId) REFERENCES documentTable(documentId)
);
Drew的参考资料来自:


如果我把你的标签弄错了,请更正你的标签。谢谢。你需要决定什么东西在它和文档之间有一个连接表。它可以是一个用户表,也可以是一个客户端组,一个客户端子组。或者,为了增加灵活性,您可能需要将多个连接表挂接到文档中。然后你建立这些关系。如果有什么好处,请看我的一般回答。有时候最好的开始是一张新的纸和一支蜡笔。对客户的需求导致了一切。客户机并不总是有与其关联的子客户机,但客户机总是有文档。我需要切换文档是否显示在doc index函数中的唯一用户类型(他们都有登录名,因此我的应用程序中的每个人对象都在
用户表中)。“我是客户先生。我想让FredSubClient查看此文档,但我不想让SallySubClient知道此文档存在,因此我将取消选中此框,她将看不到它。”我无法根据上面的链接粘贴我的SQL,因此这里有一条注释,从引用中可以看出,我有一个唯一的键(一个复合键,表示两列或更多列)。它强制不允许重复条目。接下来的关键是一个辅助索引,用于相反方向的查询。也就是说,那些主要关心
courseId
的查询。像课程的春季或秋季这样的
术语增加了一个转折点。但通常情况下,可以使用
唯一键(col13,col14),键(col14,col13)。。。所以只有一对翻转了。每个实现都将是不同的。因此,毫无疑问,您的应用程序也会有其独特之处。
readaccess
更加人性化。Drew
docPermissions
更像推进器头,我会这样做(减少所需的列,但涉及一个位掩码)。关于
唯一键(userId,documentId),您需要了解的唯一一件事是——这是用来做什么的?
只有一行可以在该表中使用该组合。就是这样。时期否则,您的表中有太多的碎片,您的数据就会被弄乱。
unique key(studentId,courseId,term), -- no duplicates allowed for the combo (note student can re-take it next term)
key (courseId,studentId),