【发布时间】:2018-07-25 02:15:34
【问题描述】:
情况是: 我有很多不同的种子。 每个通过黑盒的种子都会输出超过 1500 个独特类别的值。传递相同的种子将导致相同类别的相同值。
如果没有包含超过 1500 列(每个类别一个列)的表,我无法创建表关系。
这更像是一个数学问题,但我不知道在哪里发布这个问题。
【问题讨论】:
标签: database postgresql database-design datatable cryptography
情况是: 我有很多不同的种子。 每个通过黑盒的种子都会输出超过 1500 个独特类别的值。传递相同的种子将导致相同类别的相同值。
如果没有包含超过 1500 列(每个类别一个列)的表,我无法创建表关系。
这更像是一个数学问题,但我不知道在哪里发布这个问题。
【问题讨论】:
标签: database postgresql database-design datatable cryptography
我建议将类别本身作为一个列。
然后,您可以在该类别上添加唯一约束(或为您的目的唯一标识行的元组)。
然后,您可以根据驱动程序脚本(或类似脚本)中的约束违规处理异常以继续(例如,在这种情况下,听起来应该是空操作,因为该行已经存在)。
作为一种优化,您可以(我会说应该)在查询中添加一个exists 检查以查看该条目是否已经存在,如果存在,它将是一个无操作。
根据您提供的信息,我认为不需要 1500 列。
【讨论】:
如果我理解正确的话,你的问题的 Postgres 已经有了解决方案
如何避免 Postgres 表中的列超过 1500 列是使用 json 类型的列
例如 - 使用 json 列创建表
CREATE TABLE seeds (
ID serial NOT NULL PRIMARY KEY,
info json NOT NULL
);
如何向那里插入数据
INSERT INTO seeds (info)
VALUES (
'{ "seed": "Seed1", "items": {"category": "1","qty": 6}}'
);
您也可以在这些列中进行查询:
SELECT * FROM seeds WHERE info @> '{"category":"1"}';
也许这会对你有所帮助
【讨论】: