使用列表

时间:2018-03-20 10:11:41

标签: database postgresql data-structures

我有一个数据结构,它由键组成:值对是键是整数,值是自身列表,上面有条件。条件是每个列表中的元素都应该是正数并且总和为1.此时我对键之间的关系不感兴趣。假设我有4,那么我对下一个键12不感兴趣。

示例(以Python字典编写):

{ 4: [0.34, 0.66],
 12: [0.1, 0.9],
 34: [0.25, 0.25, 0.5],
 98: [1.0]}

我的问题是什么样的数据库系统最好存储这个以及如何存储?我更喜欢将它存储在PostgreSQL数据库中,但是如果另一个数据库架构或哲学更适合我,那么我就是开放的。

目前我将它存储在PostgreSQL数据库中,其中列表适合每个记录的单个字段。然而,这是一个丑陋的解决方案,我不认为db字段应该包含列表。如果列表的条件不是必要的,那么我只会将列表的每个元素与相应的键存储在一条记录中,如下所示:

[( 4, 0.34),
 ( 4, 0.66),
 (12, 0.1),
 (12, 0.9),
 (34, 0.25),
 (34, 0.25),
 (34, 0.5),
 (98, 1.0)]

然而,这种情况很重要,不应该破坏。因此,我认为这不是一个好的解决方案,因为记录是相互独立的。那么什么是一个好的解决方案?

1 个答案:

答案 0 :(得分:1)

只要将列表视为数据库中的单个元素,在PostgreSQL中使用数组就是一个很好的解决方案。

如果在数据库处理中使用单个元素,则数组会出现问题,例如:使用WHERE条件中的数组元素,或者希望基于数组元素的引用约束。

在某种程度上,如果列表是关于数据库的单一事物,我认为如果你使用数组存储它,它并没有真正违反第一个普通形式。