mysql—有没有一种正确的方法来管理数据库中不同类型的用户?

nuypyhwy  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(296)

我刚刚第一次设置了用户注册。用户存储在mysql数据库中,现在一切正常,但我知道这不是最好的方法。用户可以有不同的访问类型,现在有5种不同的访问类型,但是将来可能会有更多的访问类型。
目前,users表是这样设置的(我跳过了一些列):

id     |username    |password    |access1 |access2 |access3 |access4
----------------------------------------------------------------------
1      |user1       |12345678    |1       |0       |0       |1
----------------------------------------------------------------------
2      |user2       |12345679    |0       |0       |1       |0

因此,用户1可以访问访问级别1和4所允许的任何内容,而用户2只能访问级别3。
在未来,可能会有10个甚至更多的access10,并且会有几十个用户。
我知道这并不是实现这一点的正确方法,因为每当需要做一些小的更改时,我都必须不断添加访问列(并更改一些代码)。
我想我可以通过做这样的事情使事情变得简单:

id     |username    |password    |accesses 
-------------------------------------------
1      |user1       |12345678    |1,4       
------------------------------------------
2      |user2       |12345679    |3

但我也发现这有点难相处。e、 g.当我使用where访问(如“%2%”)从表中选择时,我可能会得到12号访问。
第三种选择是有一个单独的表,看起来像这样:

user_id |access
-----------------
1       | 1 
-----------------
1       | 4 
-----------------
2       | 3

现在,我倾向于最后一种方法。但我觉得我可能忽略了什么。因为我对编码和数据库还很陌生,我希望你能在我允许用户注册之前帮助我,这样我就可以避免出现问题。
有正确的方法吗?

mnowg1ta

mnowg1ta1#

我建议你在第三种选择之外再做一步。有3个表:一个用于用户,一个用于可以担任的各种角色,还有一个实际将用户链接到其角色。
您的用户表将保持与现在类似的状态,只是没有所有的access\ux列。
您的角色表:

id | name
---------------
1  | User
---------------
2  | Admin
---------------
3  | Sales
---------------
4  | Inventory

以及用户角色表,将两者链接在一起:

id | user | role
-----------------
1  | 1    | 2
-----------------
2  | 2    | 1
-----------------
3  | 3    | 1
-----------------
4  | 3    | 3
-----------------
5  | 3    | 4

相关问题