我需要为用户身份验证创建一个基本数据库。到目前为止,每个用户都有一个名称,一个密码和一个角色。我在互联网上找到了这个地方,看起来非常有希望:
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
表?我有一种感觉,有一些“自动方式”来做到这一点,但我完全不知道(作为数据库noob :-))。我怎么能以某种方式将用户连接到角色?
答案 0 :(得分:9)
您将首先填充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
-------------------------------
这是为了“多对多”的关系。它也被称为“规范化”您的数据库。
答案 1 :(得分:1)
对于每个用户,只需在user_roles表中为要分配给该给定用户的每个角色插入一行。关于它没有任何自动化。这是一种多对多的关系。