POSTGRESQL:具有唯一id但有多个接收者的消息的表架构

POSTGRESQL:具有唯一id但有多个接收者的消息的表架构,postgresql,create-table,Postgresql,Create Table,我想为具有唯一id的消息创建一个表。但是,客户端也应该能够向多个接收者发送相同的消息,因此我得出了下表: CREATE TABLE IF NOT EXISTS messages ( id SERIAL, receiver INT, content VARCHAR, CONSTRAINT msg_rcv_id PRIMARY KEY (id, receiver) ); 我使用SERIAL作为id,因为每一条新消息都应该有一个新的唯一id,但实际上使msg唯一的是id与接收方的组合

我想为具有唯一id的消息创建一个表。但是,客户端也应该能够向多个接收者发送相同的消息,因此我得出了下表:

CREATE TABLE IF NOT EXISTS messages (
  id SERIAL,
  receiver INT,
  content VARCHAR,
  CONSTRAINT msg_rcv_id PRIMARY KEY (id, receiver)
);
我使用SERIAL作为id,因为每一条新消息都应该有一个新的唯一id,但实际上使msg唯一的是id与接收方的组合。因此,现在每条消息都会获得一个新的id,即使它是相同的消息,但接收者不同。我怎样才能解决这个问题

问候,
jan

我将取出
receiver
列并创建一个新表:

CREATE TABLE receivers (
msgid int REFERENCES messages(id),
receiver INT,
UNIQUE (msgid, receiver)
);
我的语法可能有点不对劲,因为我已经很多年没有接触过Postgres了,但是你会想到:把message->receiver关系放在一个单独的表中