使用数千列规范化数据库 - 设计建议

Normalize database with thousand(s) of columns - design recommendations

背景:我正在协助的一个实验室将从老鼠身上采集少量唾液样本。每只小鼠都会被分配一个患者编号(Primary Key 1号table),每只小鼠的具体信息都会存储在这个table(年龄,性别等)

每个唾液样本都将分配一个唯一编号(主键,第二个table),将参考患者编号,并用他们的设备扫描 1000 次。我的任务是记录和存储每个患者每次唾液扫描的值(双倍),每次对患者进行采样(每周多次)。

我们理论上希望所有唾液采样都在一个 table 中(我认为)。这将允许轻松生成人口平均值,并经常更新。这也将有助于确定给定患者与相关人群平均值(相似的年龄、性别等)之间的差异。

我明显担心的是 1000 多个列在 MySQL 或与此相关的任何数据库中都不是一个好的做法。我正在努力想出一种构造这些数据的好方法。 (也许每个患者都可以有自己的 table 样本读数,但生成针对整个人群的平均值似乎是有问题的。)

编辑 我没有指定,但每次扫描都使用特定波长的光,因此除了唯一的扫描编号外,扫描区域中的每个条目都应引用其特定波长。

为什么不为此使用 MongoDB?每只鼠标都有一个包含扫描数据的文档。

然后您可以使用 MongoDB 的板载分析(或使用 Apache Spark 之类的东西)随意分割您的数据。

您的设计存在问题,样本 table 包含所有扫描的数据(超过 1000 个)。这就是你 运行 遇到问题的地方。

您需要 3 table。一种是给病人的,你已经描述过了。第二个用于样品,第三个用于扫描。

扫描 table 是扫描数据所在的位置。这个 table 可能有 4 列 ScanId(一个主键)。 SampleId(引用样本中一行的外键table),Sequence number,所以你可以把一个样本的所有扫描按时间顺序排列(如果需要的话),以及扫描值。

样本 table 现在每个样本只有一次数据值,例如样本日期。

您可以在需要时将所有三个 table 加入。