MySQL - 如何为SQL用户提供访问不同文件的权限

时间:2018-05-28 07:59:22

标签: php mysql user-permissions file-access

我是当地一所高中的鼓乐教练,我正在制作一个网页,供学生访问他们的音乐。

我在表格中制作用户列表,需要将权限添加到用户,以便他们只能访问我分配给他们的音乐(PDF文件)。最初,我想过可能会使用数组来处理文件名,但是在看到SQL中有多少关于数组的争议之后,我决定伸出手来看看是否有更好的建议。

截至目前,我有一张桌子上有所有用户' 有列 的电子邮件,

密码

名/姓,

乐器。

我希望能够添加另一个字段来控制他们有权访问的文件。

1 个答案:

答案 0 :(得分:0)

您所拥有的是学生和文件之间的many-to-many关系。我们通常在MySql中解决此问题的方法是创建pivot table。这是一个小例子:

CREATE TABLE users (
    id INTEGER PRIMARY KEY,
    email VARCHAR(100) NOT NULL
);

CREATE TABLE assignments (
    id INTEGER PRIMARY KEY,
    filepath VARCHAR(100) NOT NULL
);

CREATE TABLE user_assignment (
    id INTEGER PRIMARY KEY,
    user_id INTEGER NOT NULL,
    assignment_id INTEGER NOT NULL,
    FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE RESTRICT ON UPDATE CASCADE,
    FOREIGN KEY (assignment_id) REFERENCES assignments (id) ON DELETE RESTRICT ON UPDATE CASCADE,
);

因此,user_assignment数据透视表中的每个条目都表示标识为user_id的用户可以访问ID为assignment_id的作业。