Eli*_*oni 2 sql database arrays database-design list
我有一个users表,其中包含注册用户的数据,每行代表一个用户.特别是一列应该包含用户所属的组列表,此时该列是TEXT类型,并且我将该列表存储为字符串,其中组用分号分隔,例如:
admin;moderators;devteam
Run Code Online (Sandbox Code Playgroud)
而且我想知道:"这是一个好主意吗?",有没有更好/更安全的方法来做这个,不需要付出很多努力来实现,或者这是"好"吗?
这是现在的表格的照片:

我想知道:"这是个好主意吗?"
简短回答:可能不是.
为什么
如果您需要对该列进行任何操作,您将发现自己遇到了大麻烦.简单地选择组中的所有用户将需要对字符串进行一些操作(通常不是性能友好的).同样适用于排序,连接和SQL非常适合的所有其他操作.
解
您描述的是N:N关系的典型示例,其中每个用户可以属于多个组,每个组可以包含多个用户.
建立此关系的"标准"方法是创建一个新表,其中每一行代表属于一个组的用户.列将是group和userID.
使用您示例中的数据
userID | group
--------|----------
1 | admin
1 | moderator
1 | test
Run Code Online (Sandbox Code Playgroud)
这允许users表中的每个用户拥有一行,并且获取特定用户的组就像这样简单
select group
from user_groups
where userID = '1'
Run Code Online (Sandbox Code Playgroud)