如何将id从一个表插入到另一个表中?

时间:2016-10-25 14:57:57

标签: mysql sql phpmyadmin

我有两张桌子就像那样:

id name   roles
0  admin
1  lab 
2  user

第二个看起来像:

id  name 
0   xxx  
1   yyyy 
2   zzz 

我想从table2.id填充table1.roles,其中包含一些id(由我选择)。

例如:

id  name   roles
0   admin  1,2,3
1   lab    1,2
2   user   1

1 个答案:

答案 0 :(得分:0)

为了保持简单并避免在更新和解析所选值时遇到麻烦(如果我们不需要,我们真的不想)我建议拆分用户,角色和拨款(您希望授予特定用户的角色)到三个不同的表。一个用于存储角色的目的,一个用于存储用户,另一个用于维护两者之间的链接。

我从角色表开始:

id role
0  admin
1  lab 
2  user

现在,您将始终从数据库中的其他位置引用相同的角色。

然后我转到用户表:

id name   
0  John
1  Sam
2  Rocky

现在我们为用户提供了一个单独的表,并为角色提供了一个单独的表。没有混淆任何东西或重复输入的风险。

要以非常简单的方式为用户声明角色,我们只需转到 users_grants 表:

id user_id role_id
0  1  0
1  1  2
2  0  1
3  2  0
4  2  1
5  2  2

在此示例中,以下情况属实:

Sam is an admin and an user.
John is lab.
Rocky is an admin, lab and a user.

假设您使用适当的主键和引用索引创建表。您可能希望创建约束以确保同一个用户不能两次拥有相同的角色,这根本没有任何意义。

每个用户现在都可以拥有一组角色,如果您希望删除他们的授权,或者为用户添加新角色,则只需删除行。

还可以创建第4个表,该表可以定义为角色集,因此每个用户始终是一组角色的一部分,然后管理员可以修复这些角色而无需修复特定角色用户,但这是更先进的,没有必要,除非它是你的要求的一部分。

我很确定我们在这里保留First Normal Form以确保数据的质量。

您现在应该以标准化方式获得所需的连接。请随意询问我能做些什么来澄清。