通过做基准可能很容易弄清楚,但我想发布这个以确定是否有任何人在此之前已经讨论过。
以下是我的问题的简化版本 -
我有一个实体
CREATE TABLE entity (
id INTEGER PRIMARY KEY,
some_field INTEGER NOT NULL
);
我想为每个国家/地区存储此实体的价格信息。
所以我有两种方法可以解决这个问题。
我创建了一个用外键链接回实体表的表
CREATE TABLE entity_price (
entity_id INTEGER, //Foreign key to entity table
price DECIMAL(8,2),
currency char(3)
);
或者我可以增强实体表并添加HSTORE
CREATE TABLE entity (
id INTEGER PRIMARY KEY,
some_field INTEGER,
price_info HSTORE
);
就我而言,每次我阅读我的实体时,我都需要阅读价格信息。对于实体表中的每一行都有定价数据。我可以看到两种方法1和方法的优点/缺点。 2
方法1
方法2
在我的情况下,我将使用Hstore进行映射
国家/地区代码 - > {price,currency}
我将编写一些测试来比较两种方法的性能。但我也想检查是否有人对此有任何意见。