Supongamos que tengo una tabla que contiene roles de trabajo:
CREATE TABLE roles
(
"role" character varying(80) NOT NULL,
CONSTRAINT "role" PRIMARY KEY (role)
);
Supongamos que además tengo una tabla, usuarios y cada fila (un usuario específico) puede tener un número arbitrario de roles de trabajo:
CREATE TABLE users
(
username character varying(12) NOT NULL,
roles character varying(80)[] NOT NULL,
CONSTRAINT username PRIMARY KEY (username)
);
Probablemente debería asegurarme de que cada miembro de users.roles[]
existe en roles.role. Me parece que lo que quiero es una restricción de clave externa en cada miembro de users.roles[]
tal que si hace referencia a roles.role.
Esto no parece posible con postgres. ¿Estoy mirando esto de la manera incorrecta? ¿Cuál es la forma "correcta" sugerida para manejar esto?
fuente