@kiru
Аналитик

Как спроектировать базу данных о погоде (метео параметры разные)?

Добрый день

необходимо разработать БД, для хранения информации о погоде, при чем погода в разных местах, факт и прогноз.
Опыта маловато, поэтому хотел бы к вам обратиться!

Условия следующие параметры: Метеостанция (Название, Координаты), аэропорт (Название, координаты), Дата и время замера, температура, давление, скорость ветра...
Прогноз и факт.

Предполагаю что можно сделать следующее:


Meteostation
id, Dolgota, Shirota

Aeroport
id, Dolgota, Shirota

weather
id, temperature, veter, davlenie, measuring_time, ...

weather_prognoz
id, temperature, veter, measuring_time, ...

...


Но есть одно но:
1) Погода на аэродроме и метеостанции используются разные метеопараметры. К примеру:
На аэродроме: Давление, Скорость ветра, Дата и время замера
На станции: Температура, скорость ветра, Дата и время замера

Как это реализовать?..

2) Погода бывает фактической и прогноз. Прогнозные данные не по всем метео параметрам. А к примеру: Прогноз температуры, прогноз ветра.
Как это реализовать?

Помогите пожалуйста.
  • Вопрос задан
  • 2524 просмотра
Решения вопроса 2
1 вариант - по таблице на параметр:
Location:
	- Id: INT NOT NULL
	- Type: ENUM NOT NULL
	- Position: GEOGRAPHY NOT NULL (или оставьте пару даблов для координат)

Temperature:
	- LocationId -> Location.Id (вн. ключ)
	- Time: DATETIME NOT NULL
	- Value: DOUBLE PRECISION NOT NULL;

Pressure:
	...

WindSpeed:
	...


2 вариант - всё вместе, но с NULL-ами, каждая запись в таблице Measurement - один факт (т.е. одна процедура) измерения:
Location:
	- Id: INT NOT NULL
	- Type: ENUM NOT NULL
	- Position: GEOGRAPHY NOT NULL (или оставьте пару даблов для координат)

Measurement:
	- LocationId: -> Location.Id
	- Time: DATETIME NOT NULL
	- Temperature: DOUBLE PRECISION;
	- Pressure: DOUBLE PRECISION;
	- WindSpeed: DOUBLE PRECISION;


Для прогноза, соотв-но, такие же таблицы (TemperatureForecast, например).

Если данных будет много, посмотрите в сторону Time-Series баз данных (пример: https://docs.timescale.com/v0.9/introduction/data-model ), если будет много пространственных запросов - возьмите PostgreSQL + PostGIS, особенно если у вас будут геообъекты других типов, например полигональные. В PostGIS есть специальные типы полей для геометрий таких объектов, плюс реализованы специальные индексы. Если ещё не знаете что выбрать, но планируется работа с такими объектами - можете пробовать PostGIS.
Ответ написан
Комментировать
AndyKorg
@AndyKorg
Кнопконажиматель и припоерасплавлятель
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы