构建一个数据库以在SQLite中存储矩阵

时间:2011-07-19 12:24:15

标签: database database-design sqlite matrix

在工程模拟预测应用程序的数据库中:

  • 每个用户创建一个“项目”。
  • 在项目中,用户指定2个类别的项目数:cat_1和cat_2。
  • cat_1和cat_2将分别包含n1和n2项。
  • 程序然后将cat_1和cat_2转换为两个矩阵mat_1 mat_2,使得每个矩阵行= columns = n1或n2。即如果一个类别有3个记录('a','b'和'c'),矩阵将是3乘3,行和列是'a','b'和'c'。
  • 然后矩阵乘以因子(K_r)。
  • 乘法返回48个矩阵,96个矩阵,48个用于cat_1,48个用于cat_2。
  • 在每个矩阵中都有控件数组/变量mat_1_aij和mat_2_bi2j2,用户指定并为其提供值。
  • 这些变量表示模拟应匹配的字段收集数据。
  • 算法多次遍历两个矩阵(1,000左右),直到观察值分别为== mat1_aij和mat_2bi2j2。

问题

设计/构建/存储此类数据库(尤其是矩阵)的最佳实践方法是什么?您可能会预见到哪些设计/实施问题?

1 个答案:

答案 0 :(得分:1)

我认为矩阵通常表示为关系模型中的邻接列表。这意味着,对于包含坐标的矩阵的每个维度,以及该单元格中的值的一个(或多个)列,您有一列。

这应该允许有效的查询,但是你应该避免使用点查询迭代矩阵(即,在单个单元格中请求值)。如果可能的话,你应该在(ansi / cursor-free)sql中编码你的算法,并让DBMS执行它。

如果不可能,您最终会从数据库中读取整个矩阵(或所需的块),执行算法并将其写回。如果你到了这一步,你可能想问自己一个关系数据库是否是你需要的。