Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多ID';他在田野里。Postgresql_Postgresql_Multivalue - Fatal编程技术网

多ID';他在田野里。Postgresql

多ID';他在田野里。Postgresql,postgresql,multivalue,Postgresql,Multivalue,因此,我目前正在使用一个数据库系统,用户可以随时注册、登录和更新其详细信息。 该数据库包括5个角色: 1. Public 2. Member 3. Moderator 4. Coordinator 5. Admin 我希望能够为我的用户分配多个角色。例如,管理员也可以是成员。因此,在数据库中应显示: User_id | Role_ID ------------------------ user1 | 2, 5 ^是否可以在postgresql中添加多值id?是的,您可以

因此,我目前正在使用一个数据库系统,用户可以随时注册、登录和更新其详细信息。 该数据库包括5个角色:

1. Public
2. Member
3. Moderator
4. Coordinator
5. Admin
我希望能够为我的用户分配多个角色。例如,管理员也可以是成员。因此,在数据库中应显示:

User_id    |    Role_ID
------------------------
user1      | 2, 5
^是否可以在postgresql中添加多值id?

是的,您可以使用int来存储角色列表


这里有一个相关的问题-

您可以使用数组类型的field来存储值列表。 然而,我认为有更好的方法来组织你想要的东西

制作一个表格:角色名称和另一个角色,如下所示:

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
);
现在,在表角色名称中,您放置了您想要拥有的所有角色。 在“角色”表中,可以向任何用户分配或删除任意数量的角色。 此外,您还可以在表角色中搜索特定用户或特定角色,我认为这比搜索数组要简洁、快速得多


也可以为用户id字段添加FK约束。

如果整数是外键,并且它引用了设置id的角色表,该怎么办。因为我试过做role_id int[]引用角色;但这并没有起作用。键列“role_id”和“id”是不兼容的类型:integer[]和integer。据我所知,您不能为数组的元素创建外键。您可以使用触发器来实现这一点,或者使用表user_id、role_id来存储多个角色。这同样有效,两个答案都有一个快照,它们都有效。多谢各位