首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将users表连接到roles表(使用表user_roles)?

如何将users表连接到roles表(使用表user_roles)?
EN

Stack Overflow用户
提问于 2011-06-21 05:14:36
回答 2查看 10K关注 0票数 3

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

代码语言:javascript
复制
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表?我感觉有一些“自动的方法”可以做到这一点,但我完全不知道(作为一个数据库菜鸟:-))。我如何才能以某种方式将用户连接到角色?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-21 05:27:20

您首先要填充roles表。然后,将用户添加到users表中。然后,从users表中获取ID,将其与user_roles表中的roles表中的ID相关联。如下所示:

代码语言:javascript
复制
---- 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
-------------------------------

这是为“多对多”关系所做的。这也被称为“规范化”你的数据库。

票数 12
EN

Stack Overflow用户

发布于 2011-06-21 05:20:34

对于每个用户,只需在user_roles表中为要分配给该给定用户的每个角色插入一行。这不是自然而然的。这是一个多对多的关系。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6417608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档