mysql - 为单行关系创建关系表?

标签 mysql database relationship

我有以下结构:

-- 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/

相关文章:

MySQL:获取表的最小值和最大值及其两个标题

c# - MySQL -> 事务上下文 -> 代码审查

database - 热门关键字在 Access 2007 中不起作用

python - 用 pre_save() 填充 django 字段?

iphone - iPhone上是否需要在代码中手动设置核心数据对象的逆关系

Concat 之前的 MySQL 时间差异(同一行)

php getaddrinfo 失败 : "A non-recoverable error occurred during a database lookup."

reactjs - 错误: Expected an assignment or function call and instead saw an expression no-unused-expressions. How to solve it?

ios - 如何避免获取关系中的子实体

php - 如何在表(MySQL DB)中为一行存储大量数据(超过 3000 行)?