我对关系数据库设计领域相当陌生,并且正在尝试将 9x9 协方差矩阵存储在表中。行和列是位置、速度和加速度的 x、y、z 项。像这样:
PosX PosY PosZ . . . AccZ
-------------------------
PosX | XX XY XZ . . .
PosY | YX YY YZ . . .
PosZ | ZX ZY ZZ . . .
. | . . .
. | . . .
. | . . .
AccZ |
例如,最左上角的元素是 PosXPosX(上面缩写为 XX),最右边的是 PosXPosY,依此类推。矩阵沿对角线对称(即 PosXPosY == PosYPosX)。我也可能想要在同一张表中存储一个仅包含位置和速度的 6x6 矩阵。
根据我的研究,我发现了一种规范化的表格设计,可以创建一个包含行号、列号和值字段的表格(如何在数据库中表示二维数据矩阵)。我可以看到这样做的好处是灵活性,因为行数和列数是可变的。即使我有一定数量的行和列(9x9 和/或 6x6),这是最好的方法吗?我还可以设想创建一个表,其中包含每个唯一行/列组合(PosXPosX、PosXPosY ......等)的字段。这对我来说似乎更直观,但就像我说的那样,我是新手。
我的问题是:您建议如何在关系数据库中表示我的数据?我已经概述了两种可能的方法,但我不知道是否是最好的方法。在我的情况下,“最佳”意味着有效地存储和检索。我正在创建的实际上是一个数据存储库,因此数据库中的数据一旦添加就不会改变,只会读入 numpy 数组或类似数组。
更多背景知识:
我正在分析测试数据。我有多个不同配置的测试运行,每个测试运行都有多个数据点,其中包含许多不同类型的数据。我要存储和分析的数据点之一是协方差。我正在处理的数据量非常惊人,所以我希望使用数据库能够帮助我保持事物的组织性和可访问性。目标是存储所有这些数据,然后编写将从数据中提取的数据分析和可视化工具。在协方差的情况下,我正在计算诸如马氏距离、轨迹和时间传播的特征值之类的东西。我已经拥有许多这样的工具,但它们目前从许多不同的日志文件中提取,并且通常是一团糟。