Пользователи и роли - PullRequest
       2

Пользователи и роли

0 голосов
/ 27 апреля 2019

Следующие две таблицы используются для определения пользователей и их соответствующих ролей:

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 так, чтобы:

В users_roles могут существовать только пользователи из таблицы пользователей. Только роли из таблицы ролей могут существовать в users_roles. Пользователь может иметь определенную роль только один раз.

1 Ответ

0 голосов
/ 27 апреля 2019

Следующий скрипт 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)
);  

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...