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

mig*_*uel 36 database database-design data-structures

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

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

例如:

ID | A | B | C | D |

1 | a1 | b1 | c1 | d1 |

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

3 | ...... | ...... | ...... | ...... |

我试图确定在数据库中建模这个数据集的最佳方法,但是,考虑到RDBMS的扁平性,它似乎很难.

我最好拿着ID和表示数据矩阵的XML blob,或者我在这里忽略了一个更简单的解决方案.

谢谢.

cha*_*aos 32

RDBMS不平坦.R部分看到了这一点.你需要的是:

Table Entity
------------
ID

Table EntityData
----------------
EntityID
MatrixRow (1, 2, 3...)
MatrixColumn (A, B, C, D...)
Value
Run Code Online (Sandbox Code Playgroud)

Entity:EntityData是一对多的关系; 矩阵中的每个单元格都有一个EntityData行.

现在您有一个可以在SQL级别进行分析的模式,而不仅仅是一个数据转储,您必须在应用程序级别提取并提取所有内容才能找到有关它的任何内容.


jdk*_*off 6

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

在它显示的地方,您可以使用语法ARRAY[[1,2,3],[4,5,6],[7,8,9]]来定义3x3矩阵的值或val integer[3][3]将列类型声明为3x3矩阵.

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

  • 这很酷,但是您可以仅使用 SQL 对 n 维数组进行范围索引、切片和步进吗?或者我是否必须提取价值然后处理它? (2认同)