多个表与一个带有JSON序列化数据的大表

时间:2017-05-07 19:49:03

标签: sql-server database database-design asp.net-core

这是我的情况,

我有一个应用程序,我需要存储有关血液样本的不同测试结果的信息。我目前正在为Web应用程序使用ASP.Net核心,为数据库使用SQL Server。 (可能会切换到Postgres,因为我肯定会在Linux上运行,而SQL Server for Linux还没有完全可用)

所有测试都有一些共同的信息,他们在什么时间执行它,以及用于跟踪目的的任何其他相关信息。但是,所有这些变量都有我需要保存的特定变量用于报告/进一步计算。

截至目前,我对我们收到的样品进行了大约20种不同类型的测试。我的问题是保存这些数据的最佳方法是什么?

我看到的两个选项如下:

  1. 有20个不同的表,都包含一般的样本跟踪信息+特定的测试变量。这样,当我需要获取信息时,可以轻松访问特定类型测试的所有内容。但是,每当我想生成报告或修改样本结果信息时,我都需要通过连接查询来查询所有这些表(因为所有测试结果/变量输入表单都在一个页面中)。如果我只需要查询特定类型的测试的时间很少,大多数时候,我需要一次性检索它们,这意味着每次我需要时,我总是(大多数)查询20多个表。访问样本数据。

  2. 有一个大表包含所执行的不同测试的所有结果,并且只序列化(JSON格式)特定的测试变量。所以我会提供所有跟踪信息(可查询,可搜索等等),但每个测试的变量和结果都在一个序列化列中。

  3. 重要的是要知道变量/结果不会被直接查询,我不需要通过它们或类似的东西进行过滤(但至少)。

    现在我想知道在使用连接查询的多个表与使用每次访问数据时需要进行的序列化/反序列化之间长期的最佳性能是什么。

    此外,我知道通过序列化测试结果/变量,我失去了通过它们包含的信息进行查询的能力(SQL Server 2016除外,现在包括一种查询JSON信息的方法,如果我不是错误...)。 我也尝试通过规范化数据库来遵循最佳实践,但我不是专业人士而且我不知道我的两个选项之间的最佳方法(或者如果有更好的选择,任何其他选项,我对更好的想法完全开放)

    那么最好的方法是什么?为什么?

    使用量估算值 每年可能会进行大约1500万到3000万次测试。其中我会说2/3将是5种不同的血液测试,另外三种是所有其他测试。

1 个答案:

答案 0 :(得分:0)

不同测试的不同表格是一个好主意。 原因1:如果对样品的剩余部分仅执行10次测试将不必要浪费DB空间。 原因2:根据样本,将来很容易创建报告 原因3:过滤数据很容易 原因4:维护很容易

如果必须进行测试,请使用1表