用于存储来自第三方API的文本ID的表模式

时间:2015-06-12 13:21:32

标签: python postgresql

我使用以下格式从第三方API收集数据:

产品:

item_id : 'RSA24334343',
site_code : 'RSA',
name: 'Mouse'

分类

category_id: 'RSA3232',
site_code : 'RSA',
name: 'Electronics',
parent_id: 'RSA1122'

所以我首先想到的是定义这样的表:

CREATE TABLE category(
category_id integer PRIMARY KEY,
site_code text,
name text,
parent_id text --REFERENCES category
);

CREATE TABLE item(
    id integer PRIMARY KEY,
    category_id integer REFERENCES category,
    site_code text,
    name text
);

但是,在对数据执行某些操作之前,使用整数id存储它们需要一些额外的代码。我可以在python中创建一个字典,如:

SITE_CODES = {'RSA': 0, 'RSB': 1}

然后更换' RSA'在项目ID中有新的整数值,但我觉得这很麻烦,我不是很喜欢它。

我可以使用完整的item_id,将其存储并作为文本索引,但我并不是真的,如果这是性能方面的最佳选择。 db将用于大量查询,db大小将快速增长。这是一个简化版本,但有一些额外的表有类似的问题。

我想知道哪种方式可以最大限度地提高效果。

1 个答案:

答案 0 :(得分:1)

短文本字段不会比整数字段慢得多。这是优于"优化的领域"。从编程的角度考虑你所做的所有事情的后果 - 不要考虑关键类型的表现,考虑你提出的任何解决方案的心理/编程开销。对于我的DBA大脑,如果有一个合理大小的单列主键,并且您不需要自己生成这些键 - 允许传入的数据确定密钥类型并在路上摇摆。你很快就会忘记这个决定,因为它只会在没有太多额外开销的情况下工作。