我有一个业务实体,表示给定时间给定位置的天气预报。对于给定的位置和时间,有不同种类的天气参数可以预测,例如气温、气压、风速等。并非所有参数都可以保证可用,我希望灵活地添加新参数。
如果我想设计一个适合这些需求的表格,我可以使用以下方法(每个实体一行):
myforecasttable:
- location_id PRIMARY
- timestamp PRIMARY
- airtemperature
- airpressure
- windspeed
- etc.
或者我可以使用以下方法(每个实体多行):
myforecasttable:
- location_id PRIMARY
- timestamp PRIMARY
- parameter_type PRIMARY
- value
...其中parameter_type
将是enum
或string
代表天气参数的具体类型(如气温、气压等)。
使用第一种方法,我将获取NULL
不同列中的值,但查询起来会更容易。使用第二种方法,添加新的天气参数会容易得多,但查询可能会更难。
这些设计有什么优缺点吗?如何选择最适合我的用例的数据库设计?