我正在尝试构建一个数据库(在PostgreSQL 9.6.6中),该数据库允许一个"主列" (items.id
)要复制到许多(自动生成的)表格中(例如rank1.id, rank2.id, rank3.id, ...
)。只有items
才会执行INSERT
(或DELETE
},并且当他们是新添加的id
时应该也会在rankX
表格中显示(或删除)。更具体一点:
items:
id | name | description
rank1:
id | rank
rank2:
id | rank
...
id
总是相同的,并且总是每个表中的行数相同。但是,rankX.rank
值会有所不同(想象用户对一系列图片的有趣程度进行排名 - 图片都具有相同的id
,但不同的用户可能会对它们进行不同的排名)
我在想的是,当添加新用户并创建新的rankX
表时,我会执行以下操作:
rankX.id
引用外键items.id
(ON DELETE CASCADE
)items.id
INSERT
items
镜像到rankX
表这似乎很麻烦且浪费空间,因为xxxx.id
列的所有都是相同的,我最终将会有数百或数千个触发器函数。作为关系数据库的新手,我希望有一种更简单的方法来实现这一点。
所以,我有几个问题: