我有一张包含不同实验数据的表格。
experiment_id data_1 data_2
------------- ------ -------
1
2
3
4
..
我在django上有一个用户数据库,我想存储权限,指明哪些用户可以访问哪些行,然后只返回用户被授权的行。
我应该使用什么格式来存储权限?只是一个表格,每个用户都有一行,每个实验的列都有布尔值?在这种情况下,每次添加实验时我都必须在此表中添加一行?
user experiment_1 experiment_2 experiment_3 ..
---- ------------ ------------ ------------ --
user_1 True False False ..
user_2 False True False ..
..
关于该主题的任何参考文献也都很棒,最好与sqlite3功能相关,因为那是我当前的db后端。
答案 0 :(得分:0)
我并不是100%确定哪一项最适合您,但过去我发现使用以下解决方案是最容易查询和维护的。
Table: Experiment
Experiment_Id | data_1 | data_2
-----------------------------------
1 | ... | ...
2 | ... | ...
Table: User
User_Name | Password | ...
----------------------------
User1 | ...
User2 | ...
Table: User_Experiment_Permissions
User_Name | Experiment | Can_Read | Can_Edit
--------------------------------------------
User1 | 1 | true | false
User2 | 1 | false | false
User1 | 2 | true | true
User2 | 2 | true | false
如您所见,在新表中我们引用了用户和实验。这使我们能够对用户和实验之间的关系进行细粒度控制。此外,如果此关系具有新的权限,例如can_delete
,那么您可以使用默认值将其添加到新的交叉引用表中,并且更改将改装到您的系统中: - )
答案 1 :(得分:0)
这取决于您使用权限的方式。
- 如果您将在查询中使用此值
例如,您有两个选项可以让具有特定权限的用户
- 如果您不将它用于任何查询并将在代码处理它,您只需将 JSON 转储到一个列中,包括用户喜欢的所有权限:
{"experiment_1": 1, "experiment_2": 0, "experiment_3": 1}