Suponha que eu tenha uma tabela contendo funções de trabalho:
CREATE TABLE roles
(
"role" character varying(80) NOT NULL,
CONSTRAINT "role" PRIMARY KEY (role)
);
Suponha que eu ainda tenha uma tabela, usuários e cada linha (um usuário específico) possa ter um número arbitrário de funções:
CREATE TABLE users
(
username character varying(12) NOT NULL,
roles character varying(80)[] NOT NULL,
CONSTRAINT username PRIMARY KEY (username)
);
Provavelmente eu deveria ter certeza de que cada membro users.roles[]
existe em functions.role. Parece-me que o que eu quero é uma restrição de chave estrangeira em cada membro de users.roles[]
tal forma que, se referir a role.role.
Isso não parece possível com o postgres. Estou vendo isso da maneira errada? Qual é a maneira "correta" sugerida para lidar com isso?