经验[数据库] 数据库设计的思考

122 阅读1分钟

假设存在一个业务场景A:在气象系统中,我需要根据不同的天气类型查询出不同的数据,同时我的数据是由检测对象进行数据的入库,每个检测对象包含六种检验指标,每种检验指标是由该地区的雷达气象站的数据进行模型运算得出。每条数据按照3小时间隔入库,但每种气象类型只包含0到3种不同的检验指标,如果是这种我们应该如何设计数据库呢?

现在的问题点是 检验指标和检验数值的设计问题

目前的方案有两种,分别是

  1. 将检验指标和值用两个字段标识
  2. 将每个检验指标都设计一个字段进行存储

方案1

方案1 是采用列换行,保证每个数据都是满足要求的而且是够用的,但存在的问题是冗余字段较多,而且每次入库的数据量为

数据量=天气类型×检测对象×检验指标 数据量=天气类型 \times 检测对象 \times 检验指标

方案2

方案2 采用的是行换列,保证每一列存储的数据都是足够使用的甚至不是改天气类型使用的,但这种模式的好处是降低了索引行的数量。

数据量=天气类型×检测对象 数据量=天气类型 \times 检测对象

从查询效率的角度上来说方案2优于方案1,但是从设计规范程度上来说,方案1优于方案2。根据目前的情况适当放弃规范化程度会提升查询的性能(减少索引的层级和数量)