【问题标题】:What type of database to store this data structure with lists用什么类型的数据库来存储这个数据结构和列表
【发布时间】:2018-03-20 10:11:40
【问题描述】:

我有一个由键:值对组成的数据结构,键是整数,值本身是带有条件的列表。条件是每个列表中的元素都应该是正数并且总和为 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 数据库中,其中列表适合每条记录的单个字段。然而,这是一个丑陋的解决方案,我认为数据库字段不应该包含列表。如果列表的条件不是必需的,那么我只需将列表的每个元素与相应的键一起存储在一条记录中,如下所示:

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

但是条件很重要,不应中断。因此我认为这不是一个好的解决方案,因为记录是相互独立的。那么什么是好的解决方案呢?

【问题讨论】:

  • 您是否在数据库中处理这些列表的元素,例如它们出现在WHERE 子句中吗?如果不是或不多,使用 PostgreSQL 数组应该没问题。
  • @LaurenzAlbe Python 脚本不进行任何处理。数据库仅用于存储。如果你说数组很好,那么我可能会保留它们。

标签: database postgresql data-structures


【解决方案1】:

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

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

在某种程度上,如果列表就数据库而言是一个单一的东西,我认为如果你使用数组来存储它,它并没有真正违反第一范式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    相关资源
    最近更新 更多