0
要求:一组数据,其中包含要在db中插入的十进制数字。日期用于动态更改列的逗号分隔值替代?
解决方案::应的列被动态地创建,以在该设定值的总数量可以从12到288。 使用只是为了计算这些数据,将基于在其他列的其它参数,如取出变化插入每个值 或 我们可以使用一列将以逗号分隔的格式具有这些值吗?
请提出有效的方法。
要求:一组数据,其中包含要在db中插入的十进制数字。日期用于动态更改列的逗号分隔值替代?
解决方案::应的列被动态地创建,以在该设定值的总数量可以从12到288。 使用只是为了计算这些数据,将基于在其他列的其它参数,如取出变化插入每个值 或 我们可以使用一列将以逗号分隔的格式具有这些值吗?
请提出有效的方法。
应该动态创建列以插入每个值或我们可以使用一列将以逗号分隔的格式具有这些值?
取决于从数据库管理的角度来看一组值是否可以被视为“原子”。
但还有另一种选择......如果数据是“稀疏”,并有大量的应用价值,但只有一小部分将适用于一个给定的,然后使用表单EAV可能更合适...
创建两个表,一个用于“set”,另一个用于“value in set”,并通过1:N关系连接它们。例如:
CREATE TABLE SET (
SET_ID INT PRIMARY KEY
-- Other fields...
);
CREATE TABLE SET_VALUE (
SET_ID INT REFERENCES SET (SET_ID),
NAME VARCHAR(50),
VALUE DECIMAL,
PRIMARY KEY (SET_ID, NAME)
);
这样,你不需要动态添加新列,但仍保留访问单个值(与逗号分隔的列表)的能力。
对于给定的标准(如日期),整个值总是作为一组读取。我们可以在postgresql数组中存储任何类型的值(float,integer)。如果存储在数组中,我们如何获得java中的单个值。 – Dinuhere
在需求变化之前需要多长时间,以便您现在想要检索一些(但不是所有)基于其他标准的值?如果发生这种情况,如果将它们存储为集合是原子值,则必须进行重大改写。 –
@ user1709958 _“我们可以在postgresql数组中存储任何类型的值(float,integer)。”_ - 是的,只要不将它们混合在同一个数组中(但考虑[this](http:/ /merlinmoncure.blogspot.com/2007/09/this-will-be-first-in-what-hopefully-be.html))。 _“如果存储在数组中,我们如何获得java中的单个值。”_ - 我不知道,我确定你的JDBC驱动程序记录了这个主题,并且可能有SO帖子。 –