配列型のフィールドを使用して、値のリストを格納できます。しかし、あなたが望むものを整理するためのもっと良い方法があると思います。
次のように、role_namesと別のrolesという1 つのテーブルを作成します。
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 制約を追加してください。