1

我正在尝试将庞大的数据电子表格转换为数据库以使数据分析更容易,但我遇到了列太多的问题。我已经尽力了解规范化,但我很难将它应用到这个用例中。

设想

我们正在对矩形块执行 N 个独立测量。测量包括:

  • 长度(或测量 0)
  • 宽度(或测量 1)
  • 高度(或测量 2)
  • 质量(或测量 3)
  • 颜色(或测量 4)
  • ...
  • 测量 N

有超过 7000 个测量值(复杂的块)!测量有限制。如果一个块未能通过一次或多次测量,则重复所有测量以进行验证。如果再次失败,则该块被视为失败。

这些块是序列化的,并且有数千个。

数据源

一个巨大的电子表格(表格)。这些字段是:块编号、长度、宽度、高度、质量、颜色、...、测量 N。每一行代表一次测试运行或所有测量的执行。由于我们有重新测试策略,因此可能有多个行的结果来自同一个块。

帮助!

此源表似乎是一种直观的格式,但似乎不是数据库的最佳格式。起初我试图把它放在一个 SQLite 数据库中并遇到了 2000 列的限制。是的,我可以用更多列重新编译 SQLite 或使用另一个数据库引擎,但这听起来更像是一个数据库设计问题。你有更好的设计理念吗?

PS抱歉这么久,但感谢阅读!

4

1 回答 1

1

听起来您需要一个MeasurementType表格来保存所有测量的名称以及您可能想要存储的有关测量的任何其他信息。

然后你会有一个Measurement表同时引用MeasurementType你的电子表格的“原始”表(即与Block Number列一起离开的表):

CREATE TABLE MeasurementType (
    MeasurementTypeId INTEGER PRIMARY KEY AUTOINCREMENT,
    MeasurementType TEXT NOT NULL);

CREATE TABLE OriginalTable (
    OriginalTableId INTEGER PRIMARY KEY AUTOINCREMENT,
    BlockNumber INTEGER NOT NULL);

CREATE TABLE Measurement (
    MeasurementTypeId INTEGER NOT NULL,
    OriginalTableId INTEGER NOT NULL,
    MeasurementValue,
    PRIMARY KEY (MeasurementTypeId, OriginalTableId),
    FOREIGN KEY (MeasurementTypeId) REFERENCES MeasurementType (MeasurementTypeId),
    FOREIGN KEY (OriginalTableId) REFERENCES OriginalTable (OriginalTableId));
于 2012-09-04T07:37:50.547 回答