我不太确定这类数据是否有特殊术语,但概念类似于C++ std::variant
(但可能在PostgreSQL中使用类似变体的结构并不理想)。在PostgreSQL中存储可能是几种可能性之一的数据的理想方式?
作为一个例子,假设我有一个表purchases
具有一些列:
CREATE TABLE purchases (
purchaseid bigserial,
buyerid bigint,
name text,
...
);
每单会通过小数目的可能性,例如一个支付支票或比特币。每种可能性都有不同的关联字段,需要保存。
通过支票支付需要保存支票号码和银行名称,比特币支付需要保存发件人的比特币地址和返回比特币地址。
由于不同的字段,看起来明智的(用我对PostgreSQL的一点了解)将支票支付和比特币支付存放在不同的表中。
什么是存储这些数据(以及它们与每行中purchases
),如果我知道,每单只被要么检查或比特币支付的理想方式,但不能都 ?
对于最灵活的存储,我会使用JSONB。 https://stackoverflow.com/questions/22654170/explanation-of-jsonb-introduced-by-postgresql –
@David我不认为我需要“灵活的存储”。更重要的是(我认为)是一个或者构造的表示(和/或强制),但是JSONB并没有完全做到这一点。 – Bernard