在我的 PostgreSQL 中,我有两个表board和它们之间cards有OneToMany关系的表(一个board可以有多个cards)。
用户可以在板上放置几张卡片。为了实现这个功能,我通常会创建另一个表,例如cards_on_hold用OneToMany关系调用,并将卡放在这个表中。为了获取板的这些数据,我会在board和之间使用 JOIN cards_on_hold。
PostgreSQL 中是否有更有效的方法来存储卡的 ID?例如,也许某些功能可以将此列表内联存储在board表中?稍后我将需要在INSQL 子句中使用此 ID 列表来过滤卡片集。
Postgres 确实支持整数数组(假设您的 id 是整数):
http://www.postgresql.org/docs/9.1/static/arrays.html
然而,与单独的表相比,操作该数据有点困难。例如,对于单独的表,您可以提供唯一性保证,这样就不会出现重复的 id(假设您需要)。要使用数组实现相同的目的,您必须创建一个存储过程来检测重复项(例如在插入时)。这将很难(如果可能的话)像简单的unique约束一样有效。更不用说你失去了一致性保证,因为你不能在这样的数组上放置外键约束。
所以总的来说,内联列表的一致性是一个问题。同时,我怀疑您是否会获得任何显着的性能提升。毕竟数组不应该用作“聚合外键”恕我直言。
总而言之:我建议您坚持使用单独的表格。
| 归档时间: |
|
| 查看次数: |
11389 次 |
| 最近记录: |