PostgreSQL中的多对多关系

kxxlusnw  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(156)

数据库中有两个表。
第一个表是“用户”。它有两列。user_id列和sector_id列。

  • 用户可以跟随多个扇区。这将导致user_id出现在多个行中,但sector_id不同
  • 同一扇区可能被不同的用户跟随。这将导致sector_id出现在多行中,但user_id不同

示例:
| 扇区标识| sector_id |
| --| ------------ |
| 一百二十三| 123 |
| 二百三十四| 234 |
| 四百五十三| 453 |
| 一百二十三| 123 |
第二张表是“文章”。它有两列。article_id列和sector_id列。

  • 不同的物品可以具有相同的扇区。

示例:
| 扇区标识| sector_id |
| --| ------------ |
| 一百二十三| 123 |
| 二百三十四| 234 |
| 四百五十三| 453 |
| 一百二十三| 123 |
我想知道每个用户有多少文章可用。如果用户跟随文章的扇区,则文章对于用户是可用的。
我想在sector_id上做一个join。但是由于许多用户和许多文章可以共享相同的sector_id,所以不确定这是否是正确的方法。

9rbhqvlz

9rbhqvlz1#

您可以根据需要添加任意多个“桥”表,每对表之间的每个关系一个。
举例来说:

create table users (
  id int primary key not null,
  name varchar(20) not null
);

create table sectors (
  id int primary key not null,
  name varchar(20) not null
);

create table following (
  user_id int not null references users (id),
  sector_id int not null references sectors (id)
  , primary key (user_id, sector_id) -- optional, if applicable
);

字符串

相关问题