[英]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.