Załóżmy, że mam tabelę zawierającą role zadań:
CREATE TABLE roles
(
"role" character varying(80) NOT NULL,
CONSTRAINT "role" PRIMARY KEY (role)
);
Załóżmy, że dalej mam tabelę, użytkowników, a każdy wiersz (określony użytkownik) może mieć dowolną liczbę ról zadań:
CREATE TABLE users
(
username character varying(12) NOT NULL,
roles character varying(80)[] NOT NULL,
CONSTRAINT username PRIMARY KEY (username)
);
Prawdopodobnie powinienem upewnić się, że każdy członek users.roles[]
istnieje w roles.role. Wydaje mi się, że to, czego chcę, to ograniczenie klucza obcego na każdym elemencie, users.roles[]
takie, że jeśli odwołuje się roles.role.
Nie wydaje się to możliwe w przypadku postgres. Czy patrzę na to w niewłaściwy sposób? Jaki jest sugerowany „właściwy” sposób na poradzenie sobie z tym?
źródło