小编典典

如何将用户表连接到角色表(使用表user_roles)?

sql

我需要创建一个用于用户身份验证的基本数据库。到目前为止,每个用户都有一个名称,一个密码和一个角色。我在Internet上的某个地方找到了它,这看起来很有希望:

create table if not exists users (
  id int unsigned not null auto_increment,
  username varchar(100) not null,
  password binary(60) not null,
  primary key(id),
  unique(username)
);

create table if not exists roles (
  id int unsigned not null auto_increment,
  role varchar(100) not null,
  primary key(id),
  unique(role)
);

create table if not exists user_roles (
  user_id int unsigned not null,
  role_id int unsigned not null,
  unique(user_id, role_id),
  index(user_id)
);

但是…如果我要创建新用户,该如何填写user_roles表格?我感觉有某种“自动方式”可以做到这一点,但是我完全不知道(成为数据库菜鸟:-)。如何以某种方式将用户连接到角色?


阅读 309

收藏
2021-04-22

共1个答案

小编典典

您将首先填充roles表格。然后,将用户添加到users表中。然后,从users表中获取ID
,您要将其与roles表内部user_roles表中的ID关联。像这样:

---- Users Table ---------
ID | UserName | Password
 1 | Test     | *****
--------------------------

---- Roles Table ---------
ID | Role
 1 | Test_Role
 2 | Another_Role
--------------------------

---- User Roles Table ---------
UserID | RoleID
     1 |      1
     1 |      2
-------------------------------

这是针对“多对多”关系完成的。它也被称为“规范化”您的数据库。

2021-04-22