Database design 在SQL数据库中存储电子表格类型的数据

Database design 在SQL数据库中存储电子表格类型的数据,database-design,spreadsheet,Database Design,Spreadsheet,我想将电子表格数据存储在数据库中,所以现在我使用键/值模式来存储相同的数据,但是如果数据很大,从数据库中检索它会花费太多时间。 有没有人有最好的方法来做同样的事情。谷歌如何保存他们的电子表格数据 通常我必须在页面大小为500或1000的网页上显示30到40列和10000行,以便分页。数据用于具有定价的行项目 我目前的数据库结构如下 列表 列Id int 列名nvarchar(50) 柱型nvarchar(50) 价值内容表 标准\u id int 列id int 行id int 列内容nvarc

我想将电子表格数据存储在数据库中,所以现在我使用键/值模式来存储相同的数据,但是如果数据很大,从数据库中检索它会花费太多时间。 有没有人有最好的方法来做同样的事情。谷歌如何保存他们的电子表格数据

通常我必须在页面大小为500或1000的网页上显示30到40列和10000行,以便分页。数据用于具有定价的行项目

我目前的数据库结构如下

列表 列Id int 列名nvarchar(50)
柱型nvarchar(50)

价值内容表 标准\u id int 列id int 行id int
列内容nvarchar(100)

存储电子表格的原始模式:

create table spreadsheet
(
id INTEGER primary key,
name TEXT UNIQUE not null
);

create table cell
(
id INTEGER primary key,
spreadsheet_id INTEGER NOT NULL REFERENCES spreadsheet(id),
row INTEGER not null,
col INTEGER not null,
content TEXT NOT NULL
);

如果您只是加载和保存它,而不是查询它,我建议为整个工作表、每个页面或至少每行创建一个XML字段

我的另一个问题是,您如何查询此信息来填充您的工作表?是否使用循环并为每行或每列打开单独的查询


您的设计可能不太理想,但实际上,对于您所描述的数据集,它应该表现得很好。

考虑到Excel被广泛认为是数据库的默认工具,我不确定存储在电子表格中的数据类型是否有任何区别,除了它是一个表,并且对行数有限制


我认为除了“决定结构的是数据,而不是来源”之外,没有足够的区别来说明任何事情。您存储的是什么类型的数据?您能给我们一个电子表格的例子吗?为什么您使用的是键/值存储?应该很快。天哪,什么?这是你真正想做的吗?我已经更新了我的问题,请检查sameI,没有必要在单元格中输入“id”,主键不能打开吗(电子表格id,行,列)?我知道关于这一点存在争议,另一边的人也有同样强烈的感觉,但IMHO复合键是邪恶的(除了M->M分辨率表)。谢谢Pierre,我现在有类似的结构,但是当我必须使用分页在网页上加载大量数据时,它会给我带来性能问题。通常我必须显示30到40列和10000行(页面大小=1000),这就是为什么键/值数据存储在这里看起来非常有用的原因。键是一个有序的对象(电子表格id,行),数据是一个列数组。首先,我从数据库中获取所有数据,然后循环以网格结构显示在页面上。