Spousta lidí používá mobilní aplikace pro počasí k plánování svého dne – nebo se alespoň rozhodují, zda s sebou potřebují mít deštník! Jaký druh datového modelu se skrývá pod těmito populárními programy?
Než vyjdeme ven, chceme všichni vědět, jak je počasí škaredé. Aplikace pro Windows, iOS a Android nám poskytují přesné a spolehlivé informace o aktuálním počasí. Tento článek vysvětluje podrobný datový model, který lze pro takové aplikace použít.
Jaké funkce aplikace Počasí potřebuje?
Téměř každý, kdo má chytrý telefon, má také alespoň jednu aplikaci pro počasí. Tyto aplikace poskytují podrobné informace o počasí, které jejich uživatelům pomáhají připravit se na jakékoli změny počasí, které mohou během dne potkat.
Co by měla aplikace počasí dělat?
- Hlásit aktuální povětrnostní podmínky, včetně celkového stavu (tj. slunečno, polojasno, zataženo atd.), teplotu vzduchu, vlhkost, rychlost a směr větru, „pocitovou“ teplotu, barometrický tlak a viditelnost. Měl by také hlásit obecné informace, jako jsou časy východu a západu slunce a denní vysoké a nízké teploty.
- Zobrazte hodinové podrobnosti (teplota, vlhkost, srážky, celkový stav počasí) na následujících 24 hodin.
- Zobrazte základní předpověď (denní vysoké a nízké teploty, počasí a časy východu a západu slunce) pro každý den v následujícím týdnu nebo dvou.
- Umožněte uživatelům nastavit své místní město a všechna další města, kde chtějí vidět počasí.
- Umožněte uživatelům zobrazit data v měrných jednotkách dle vlastního výběru. Například uživatelé z USA by pravděpodobně preferovali teploty ve stupních Fahrenheita a rychlosti větru uváděné v mílích za hodinu, ale uživatelé z Kanady a Evropy by preferovali stupně Celsia a kilometry za hodinu.
Pamatujte, že aplikace se právě zobrazuje předpověď počasí a (v závislosti na nastavení) převod měrných jednotek. Neprovádí skutečné předpovídání; jednoduše přijímá data předpovědi z jiného zdroje (jako je vládní služba nebo agentura pro předpověď počasí) a zobrazuje je uživatelem preferovaným způsobem.
Datový model aplikace Počasí
Rozdělil jsem model do tří tematických oblastí:
Weather Logs
User Preferences
User Profiles
Probereme každou oblast v pořadí, v jakém jsou uvedeny.
Záznamy počasí
Toto je nejdůležitější předmět. Každá aplikace počasí by měla zachytit tyto základní podrobnosti:
- Aktuální skutečná teplota
- Aktuální „pocitová“ teplota, která se může lišit od skutečné teploty kvůli dalším povětrnostním faktorům (např. vysoká vlhkost může způsobit, že horký den bude teplejší nebo chladný den chladnější).
- Denní vysoké a nízké teploty
- Údaje o rosném bodu a/nebo relativní vlhkosti
- Rychlost větru
- Směr větru
- Barometrický tlak
- Viditelnost (tj. mlhavý den bude mít nižší viditelnost než jasný)
- Časy východu a západu slunce
Společně poskytují ucelený pohled na aktuální povětrnostní podmínky. Jedná se o informace, které budou uživatelům prezentovány, obvykle prostřednictvím jedné nebo více intuitivních obrazovek.
Každá předpověď počasí má dva druhy atributů:ty, které se mění každý den, a ty, které se mění v průběhu každý den. Atributy, jako jsou časy východu a západu slunce, jsou založeny na událostech, které se stanou jednou denně, takže tyto informace jsou zaznamenávány jednou za každý den. Pokud jde o dlouhodobé předpovědi (7 až 15 dní předem), uživatelé by měli mít dostatek informací, pokud zahrnete denní vysoké a nízké teploty, úroveň vlhkosti a celkové povětrnostní podmínky (tj. slunečno, zataženo atd.).
Atributy jako aktuální teplota, „pocitová“ teplota, rychlost a směr větru, barometrický tlak a rozsah viditelnosti se mohou během dne měnit. Ty by měly být zachyceny za konkrétní časový interval, řekněme každou hodinu nebo každé tři hodiny. Pro účely tohoto modelu budeme předpokládat časový rámec jedné hodiny.
Protože máme dva typy atributů, vložil jsem do této oblasti dvě tabulky. První, weather_daily_forecast_log
, má denní atributy. Obsahuje tyto sloupce:
city_id
– Odkazuje nacity
tabulka a označuje město, kterého se tyto údaje týkají.calendar_date
– Kalendářní datum pro tato data. Protože tato tabulka obsahuje jeden záznam na město a datum, tyto sloupce (city_id
acalendar_date
) tvoří složený primární klíč pro tuto tabulku.weather_status_id
– Odkazuje naweather_status
tabulka a označuje povětrnostní podmínky (tj. deštivo, zataženo, polojasno nebo slunečno).min_temperature
– Minimální (nejnižší) teplota toho dne.max_temperature
– Maximální (nejvyšší) teplota daného dne.avg_humidity_in_percentage
– průměr relativní vlhkost vzduchu v daný den. (Množství vody, které vzduch pojme, závisí na jeho teplotě.)sunrise_time
– Sloupec časového razítka, který ukládá čas východu slunce.sunset_time
– Sloupec časového razítka, který ukládá čas západu slunce.last_updated_at
– Obsahuje datum a čas (jako časové razítko), kdy byl záznam naposledy aktualizován.source_system
– Název zdroje naší předpovědi počasí. Tyto poslední dva sloupce jsou uchovávány pro účely auditu.
weather_hourly_forecast_log
tabulka obsahuje všechny atributy, které se mohou během dne měnit. Tyto atributy považujeme za jeden záznam pro konkrétní časový rámec. Sloupce jsou:
id
– Náhradní klíč pro stůl.city_id
– Příslušné město.start_timestamp
– Sloupec časového razítka, který označuje, kdy tento časový rámec začal.end_timestamp
– Sloupec časového razítka, který označuje, kdy tento časový rámec skončil.weather_status_id
– Celkový stav počasí v daném časovém rámci.temperature
– Aktuální teplota pro daný časový rámec.feels_like_temperature
– „Pocitová“ teplota pro daný časový rámec. To může být ovlivněno mnoha faktory, včetně větru, deště a vysoké nebo nízké vlhkosti. Tyto informace poskytují realističtější dojem o aktuálních povětrnostních podmínkách.humidity_in_percentage
–Tento sloupec obsahuje množství (v procentech) vlhkosti ve vzduchu.wind_speed_in_mph
– Udržuje rychlost větru v mph (míle za hodinu).wind_direction
– Tento textový sloupec obsahuje jeden nebo dva znaky, které označují směr větru (S, NW, NE, S, W, SW atd.)pressure_in_mmhg
– Ukládá hodnoty tlaku vzduchu v mmHg.visibility_in_mph
– Ukládá hodnoty rozsahu viditelnosti v mílích.
Tyto tabulky budou obsahovat nejnovější data pro konkrétní časový rámec. Příležitostně lze vydat budoucí předpověď a později ji změnit. V takových případech bude stávající záznam pro příslušný den nebo časový úsek přepsán tím posledním. Také si všimnete, že jsme uložili atributy pouze v jedné měrné jednotce (např. mph) na atribut. Abychom ušetřili na úložišti, uložíme pouze jeden záznam pro každý atribut a necháme frontend, aby je v případě potřeby převedl na jednotky preferované uživatelem.
Uživatelské předvolby
Tato oblast se zabývá především uživatelskými preferencemi pro měrné jednotky. Většina sloupců je samozřejmá, proto jen stručně vysvětlíme účel každé tabulky.
users
tabulka obsahuje základní informace o uživatelích, jako je e-mailová adresa a telefonní číslo. id
sloupec přiděluje jedinečné číslo každému uživateli, který se do aplikace zaregistruje.
attribute
tabulka ukládá seznam atributů, jako je teplota, rychlost větru, směr větru, barometrický tlak atd.
measuring_units
tabulka obsahuje seznam všech měrných jednotek s jejich odpovídajícím názvem, popisem a attribute_id
.
user_preferences
tabulka mapuje vztah mezi uživateli a preferencemi měrných jednotek. Upozorňujeme, že můžeme ukládat informace o preferencích uživatelů pro každý jednotlivý atribut. Protože si uživatelé mohou vybrat libovolnou měrnou jednotku z daných možností pro atribut, vytvořili jsme složený primární klíč pomocí users_id
a attribute_id
sloupce.
Uživatelské profily
Vzhledem k tomu, že aplikace umožňuje uživatelům sledovat počasí v libovolném počtu měst, řeší tato oblast přiřazení jednoho nebo více měst ke každému uživatelskému profilu.
city
tabulka uložte seznam měst a podrobnosti o jejich umístění (PSČ, země, souřadnice mapy). Sloupce v této tabulce jsou samozřejmé, ale je dobré si uvědomit, že city_longitude
a city_latitude
sloupce mohou obsahovat kladné nebo záporné hodnoty.
user_city
tabulka spojuje města s uživatelskými profily. Protože uživatelé mohou přidat město do svých profilů pouze jednou, vytvořili jsme složený primární klíč pomocí users_id
a city_id
sloupce.
Co byste přidali do tohoto datového modelu?
Nyní se dostáváme do sekce, kde nám sdělte, co byste v modelu přidali, změnili nebo odstranili. Co bychom mohli přidat? Globální oteplování se stalo velkým problémem. Výzkumy jasně ukazují, že je způsobena spíše lidskou činností než přirozenými změnami. To si však uvědomuje poměrně málo lidí. Jak můžeme přimět lidi, aby si uvědomili změny klimatu a globální oteplování? Do aplikace bychom mohli zahrnout fakta o změnách prostředí a jejich příčinách. Nebo bychom možná mohli zahrnout procento pokryvu stromů v místní oblasti, abychom zvýšili povědomí.
Co myslíš? Sdělte nám prosím své nápady komentářem níže.