繁体   English   中英

减少表列数

[英]Reducing the number of table columns

我试图将庞大的数据电子表格转换为数据库以简化数据分析,但是我遇到了列过多的问题。 我已经尽力学习标准化,但是我很难将其应用于此用例。

情境

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

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

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

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

数据源

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

救命!

此源表似乎是一种直观的格式,但似乎不是数据库的最佳格式。 最初,我尝试将其放入SQLite数据库并遇到2000列的限制。 是的,我可以使用更多的列重新编译SQLite或使用其他数据库引擎,但这听起来更像是数据库设计问题。 您有更好的设计思路吗?

PS对不起,很久了,但是感谢您的阅读!

听起来您需要一个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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM