繁体   English   中英

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

[英]How to insert id's from one table to another one?

我有两个表,看起来像这样:

id name   roles
0  admin
1  lab 
2  user

第二个是这样的:

id  name 
0   xxx  
1   yyyy 
2   zzz 

我想用table2.id中的一些id(由我选择)填充table1.roles。

例如:

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

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

我将从角色表开始:

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.

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

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

也可以创建第四个表,该表可以定义为角色集,因此每个用户始终是一组角色的一部分,然后管理员可以修复该角色,而无需修复特定用户的角色,但是除非它是您要求的一部分,否则它会更高级,并且没有必要。

我很确定我们会在这里维护“ 第一范式”以确保数据质量。

现在,您应该以标准化的方式获得所需的连接。 随时问我有什么事情可以澄清。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM