我有以下结构:
-- Table Users ---
- User1
- User2
- User3
-- Table Roles ---
- Role1
- Role2
- Role3
- Role4
每个用户必须拥有一行,不能多也不能少。我应该创建一个新表,例如。 `user_roles”并将用户角色存储在其中,例如:
-- Table user_roles --
- user_id = User1 role_id = Role2
- user_id = User2 role_id = Role1
- user_id = User3 role_id = Role4
或者,我应该将用户角色存储在 Users
表中吗?由于每个用户始终只有一个角色,因此我认为没有理由不将其保留在 Users
表中。我的想法正确吗还是应该放在单独的表格中?很简单的问题,但我想了很久。过去,我将“ key ”保存在 Users
表中。
最佳答案
要强制每个用户必须只有一个角色,您应该向用户表添加一个role_id,使其不为空
并引用角色表
create table roles
(
id integer primary key,
role_name varchar(50) not null
);
create table users
(
id integer not null primary key,
username varchar(50) not null,
role_id integer not null,
... other columns ...
);
alter table users
add constraint fk_users_rol
foreign key (role_id) references roles(id);
关于mysql - 为单行关系创建关系表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13541801/