我如何设计这个数据库,以便表中sql中的Null块较少?

J.R*_*.R. 0 sql sqlite

我正在使用sqlite,所以空间对我来说是一个问题.我想要一张表来存储一些城市的历史温度数据.表就像

city_name      2018_04_04  2018_04_03  2018_04_02 ......   
Run Code Online (Sandbox Code Playgroud)

但问题是这些历史温度记录的范围对于不同的城市是不同的.例如,对于纽约,温度记录从公元1800年开始,伦敦的温度记录从公元1600年开始.因此,如果我构建一个列,其列以1600 AD开始,那么将会有大量空间填充Null.据我所知,如果数据是浮点数,Null也会占用空间.

我应该如何构建这个表,以便它"更智能"并填充更多有用的数据?或者至少"强制"Null不占用任何空间?

Alj*_*cha 6

不要将每一天添加为列,而是添加日期列并将日期写入此列:

city_name |       date | temperature
____________________________________
 New York | 2018_04_04 |        40.3
 New York | 2018_04_03 |        38.3

如果要保存一些内存,请添加城市表,只将city_fk写入温度表.

ID  City
1   London
2   New York
CityID |   date   | temperature
   2    2018-04-04     40.3
   2    2018-04-03     38.3