PostgreSQL是存储ID列表的有效方法

PostgreSQL是存储ID列表的有效方法,postgresql,Postgresql,在我的PostgreSQL中,我有两个表board和cards表,它们之间有OneToMany关系(一个board可以有多张cards) 用户可以在板上持有几张卡。为了实现这一功能,我通常会创建另一个表,称为cards\u on\u hold,具有OneToMany关系,并将卡挂起ID放入该表中。为了获取线路板的数据,我将使用线路板和卡之间的连接保持 在PostgreSQL中有没有更有效的方法来存储暂挂ID卡?例如,可以使用某种功能将此列表内联存储在board表中?我需要稍后在SQL子句中的中使

在我的PostgreSQL中,我有两个表
board
cards
表,它们之间有
OneToMany
关系(一个
board
可以有多张
cards

用户可以在板上持有几张卡。为了实现这一功能,我通常会创建另一个表,称为
cards\u on\u hold
,具有
OneToMany
关系,并将卡挂起ID放入该表中。为了获取线路板的数据,我将使用
线路板
卡之间的连接保持


在PostgreSQL中有没有更有效的方法来存储暂挂ID卡?例如,可以使用某种功能将此列表内联存储在
board
表中?我需要稍后在SQL子句中的
中使用此ID列表来筛选卡集。

Postgres确实支持整数数组(假设您的ID是整数):

但是,与单独的表相比,操作该数据有点困难。例如,对于一个单独的表,您可以设置唯一性保证,这样您就不会有重复的ID(假设您需要)。要使用数组实现同样的效果,您必须创建一个存储过程来检测重复项(例如在insert上)。这将很难(如果可能的话)像简单的
unique
约束那样有效。更不用说,由于不能在这样的数组上设置外键约束,您将失去一致性保证

所以,通常情况下,内联列表会出现一致性问题。同时,我怀疑您是否会获得任何明显的性能提升。毕竟,数组不应用作“聚合外键”IMHO

总而言之:我建议你坐在另一张桌子上