Eu tenho um modelo de banco de dados com uma tabela de usuários e uma tabela de funções. Quero controlar o acesso (direitos) a até 10 elementos diferentes. O acesso pode ser concedido a uma função ou a um único usuário. Abaixo está a definição da tabela de usuários, funções e itens:
CREATE TABLE users
(
id serial NOT NULL PRIMARY KEY,
username character varying UNIQUE,
password character varying,
first_name character varying,
last_name character varying,
...
);
CREATE TABLE roles
(
id serial NOT NULL PRIMARY KEY,
name character varying NOT NULL,
description character varying,
...
);
CREATE TABLE element_1
(
id serial NOT NULL PRIMARY KEY,
name character varying NOT NULL,
description character varying,
...
);
...
Agora eu tenho duas maneiras diferentes de projetar os direitos. Uma tabela com uma coluna de tipo de direitos ou 10 tabelas de direitos - uma para cada elemento ao qual desejo controlar o acesso.
Quais são os prós e contras de uma tabela de direitos versus uma tabela de direitos por elemento? - ou é a maneira mais adequada de fazer isso?