用户和角色

时间:2019-04-27 08:53:18

标签: sql sqlite

以下两个表用于定义用户及其各自的角色:

TABLE users
  id INTEGER NOT NULL PRIMARY KEY,
  userName VARCHAR(50) NOT NULL

TABLE roles
  id INTEGER NOT NULL PRIMARY KEY,
  role VARCHAR(20) NOT NULL

users_roles表应包含每个用户及其角色之间的映射。每个用户可以有多个角色,每个角色可以有多个用户。

修改提供的SQLite create table语句,以便:

users_roles中只能存在用户表中的用户。 users_roles中只能存在角色表中的角色。 一个用户只能具有一次特定角色。

1 个答案:

答案 0 :(得分:0)

以下DDL脚本将实现您的目标

drop table if exists users;
drop table if exists roles;
drop table if exists users_roles;


create table users (
  id INTEGER NOT NULL PRIMARY KEY,
  userName VARCHAR(50) NOT NULL
); 

create table roles (
  id INTEGER NOT NULL PRIMARY KEY,
  role VARCHAR(20) NOT NULL
);

create table users_roles(
    user_role_id integer not null primary key,
    user_id integer not null,
    role_id integer not null,
    FOREIGN KEY(user_id) REFERENCES users(id),
    FOREIGN KEY(role_id) REFERENCES roles(id),
    UNIQUE (user_id, role_id)
);