【发布时间】:2014-05-17 22:14:37
【问题描述】:
我对 Sqlite 很陌生,并且对数据库设计感到两难。假设我们有许多矩阵(各种大小)将存储在一个表中。我们可以进一步假设没有矩阵是稀疏的。
假设我们有:
A = [[1, 4, 5],
[8, 1‚ 4],
[1, 1, 3]]
B = [['what', 'a', 'good', 'day'],
['for', 'a', 'walk', 'outside']]
C = [['AAA', 'BBB', 'CCC', 'DDD', 'EEE'],
['FFF', 'GGG', 'HHH', 'III', 'JJJ'],
['KKK', 'LLL', 'MMM', 'NNN', 'OOO']]
And D which is [NxM]
当我们创建表格时,我们并不知道矩阵的所有大小。我不认为事后改变表格大小会很好。存储矩阵以有效取回它们的推荐方法是什么?我希望逐行查询一个矩阵。
我正在考虑将矩阵转换为列向量,最终以某种方式出现在这样的表格中,
CREATE TABLE mat(id INT,
row INT,
col INT,
val TEXT)
如何使用 sqlite 中类似于矩阵 A 的查询逐行取回它们?
[1, 4, 5]
[8, 1‚ 4]
[1, 1, 3]
想法?或者有人可以参考任何类似的问题
---------- 更新 ----------
好的。我的问题不够清楚。这可能是我打算在我的数据库中排列数据的方式。我希望你能帮我找到一种方法来组织我的数据库,
假设我们有一些数据集:
Compilation User BogoMips
1 Andrew 1.04
1 Klaus 1.78
1 James 1.99
1 David 2.09
. . .
. . .
1 Alex 4.71
Compilation Time Temperature Colour
2 10:20 10 Blue
2 10:28 21 Green
2 10:42 25 Red
. . . .
. . . .
2 18:16 16 Green
Compilation Colour Distance
3 Blue 4
3 Green 9
. . .
. . .
3 Yellow 12
...而且会有更多具有不同数字列和新标题的数据集。一些标题名称将在另一组中返回。事先,我们不知道需要存储什么样的集合。每个集合都有一个共同的标题“编译”,将它们绑定在一起。
您将如何构造数据库中的数据?
我很难相信为每个集合创建一个新表是一个好的解决方案。还是?
我的想法是有两个表,标题和数据。
CREATE TABLE headers (id INT,
header TEXT
)
CREATE TABLE data (id INT,
compilation INT,
fk_header_id INT REFERENCES headers,
row INT,
col INT,
value TEXT)
So the populated tables looks like this,
SELECT * FROM headers;
id header
------------
1 User
2 BogoMips
3 Time
4 Temperature
5 Colour
6 Distance
SELECT * FROM data;
id compilation fk_header_id row col value
----------------------------------------------------
1 1 1 1 1 Andrew
2 1 2 1 2 1.04
3 1 1 2 1 Klaus
4 1 2 2 2 1.78
. . . . . .
. 2 3 1 1 10:20
. 2 4 1 2 10
. 2 5 1 3 Blue
. 2 3 2 1 10:28
. 2 4 2 2 21
. 2 5 2 3 Green
. . . . . .
. 3 5 1 1 Blue
. 3 6 1 2 4
. 3 5 2 1 Green
. 3 6 2 2 9
. . . . . .
.
and so on
问题是我不知道如何在 Sqlite 中查询出数据集。任何人(托尼)有想法吗?
【问题讨论】:
-
没有足够的信息,但从表面上看,这似乎是一个非常糟糕的主意。简单地序列化矩阵似乎是一种更好的方法,为什么您希望能够在矩阵中获取一个单元格?
-
感谢您的评论 :-) 我只想将不同大小的矩阵保存在一个表中,您会如何考虑这样做?以及如何查询它们?
-
信息不足,您打算如何使用 matrix.id?
-
感谢阅读。我刚刚更新了我的问题,这成为了一个新问题。我应该如何构建我的数据库?
标签: sqlite select matrix insert store