代码之家  ›  专栏  ›  技术社区  ›  miguel

如何在数据库中表示二维数据矩阵

  •  42
  • miguel  · 技术社区  · 16 年前

    我有一个数据集,它由一个ID和一个与该ID相关的数据矩阵(n x n)组成。

    列名(A,B,C,D)和行名(1,2,3)也很重要,需要为每个单独的ID以及数据(a1,b1,c1,d1,…)保存

    ID|A|B|C|D|

    2... | ... | ... | ... |

    谢谢。

    6 回复  |  直到 16 年前
        1
  •  37
  •   chaos    16 年前

    Table Entity
    ------------
    ID
    
    Table EntityData
    ----------------
    EntityID
    MatrixRow (1, 2, 3...)
    MatrixColumn (A, B, C, D...)
    Value
    

    Entity:EntityData

        2
  •  8
  •   Yodan Tauber    10 年前

    这就是PostgreSQL支持数组作为数据类型的原因之一。看

    ARRAY[[1,2,3],[4,5,6],[7,8,9]] 定义3x3矩阵的值,或 val integer[3][3] 将列类型声明为3x3矩阵。

    当然,这根本不是标准的SQL,而是PostgreSQL特有的。其他数据库可能具有类似但略有不同的实现。

        3
  •  4
  •   Draemon    16 年前

    如果你想要一个真正的关系型解决方案:

    Matrix
    ------
    id
    
    Matrix_Cell
    -----------
    matrix_id
    row
    col
    value
    

    但是,确保你有有效数据的约束将是可怕的。

    csv:

    Matrix
    ------
    id
    cols
    data
    

    它比XML轻一些。

        4
  •  2
  •   Lee    16 年前

    我可能会这样实现它:

    Table MatrixData
    ----------------
    id
    rowName
    columnName
    datapoint
    

    如果你只想存储数据,这个结构将保存任何大小的矩阵,并允许你从ID中重建任何矩阵。你需要一些后处理才能以“矩阵格式”呈现它,但这就是前端代码的用途。

        5
  •  0
  •   djangofan    16 年前

    此外,从其基本性质来看,一个典型的数据库表似乎已经完成了您需要的工作,不是吗?

        6
  •  -1
  •   Mahesh Gupta    15 年前

    假设你想存储一个m X n数组。。 在表中创建m个属性。 在每个属性中存储由分隔符分隔的n个元素。..

    在检索数据时,只需进行反向解析即可轻松返回数据。。