我有一个商业实体代表给定时间内某个地点的天气预报。有针对给定位置和时间预测的不同种类的天气参数,例如空气温度,气压,风速等。并非所有参数都能保证可用,并且我希望保持灵活性以添加新参数。
如果我想设计一个符合这些需求的表,我可以使用以下方法(每个实体一行):
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
个值,但查询起来会更容易。使用第二种方法,添加新的天气参数会更容易,但查询可能会更难。
这些设计有利有弊吗?如何选择哪种数据库设计最适合我的用例?