我是当地一所高中的鼓乐教练,我正在制作一个网页,供学生访问他们的音乐。
我在表格中制作用户列表,需要将权限添加到用户,以便他们只能访问我分配给他们的音乐(PDF文件)。最初,我想过可能会使用数组来处理文件名,但是在看到SQL中有多少关于数组的争议之后,我决定伸出手来看看是否有更好的建议。
截至目前,我有一张桌子上有所有用户' 有列 的电子邮件,
密码
名/姓,
和乐器。
我希望能够添加另一个字段来控制他们有权访问的文件。
答案 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
的作业。