您可以使用数组类型的字段来存储值列表。但是我认为有更好的方法来组织你想要的东西。
制作一个表:role_names和另一个角色,如下所示:
CREATE TABLE role_names
(
id serial NOT NULL,
name text NOT NULL,
CONSTRAINT role_names_pkey PRIMARY KEY (id),
CONSTRAINT role_names_name_key UNIQUE (name)
);
CREATE TABLE roles
(
user_id bigint NOT NULL,
role_id bigint NOT NULL,
CONSTRAINT roles_pkey PRIMARY KEY (user_id, role_id),
CONSTRAINT roles_role_id_fkey FOREIGN KEY (role_id)
REFERENCES role_names (id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT
);
现在,在表role_names中,您放置了您想要拥有的所有角色。在表角色中,您可以为任何用户分配或删除任意数量的角色。您还可以在表角色中搜索特定用户或特定角色 - 比我认为搜索数组要简洁和快速。
也可以随意为 user_id 字段添加 FK 约束。