以下两个表用于定义用户及其各自的角色:
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
中只能存在角色表中的角色。
一个用户只能具有一次特定角色。
答案 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)
);