Database
 sql >> Datenbank >  >> RDS >> Database

Ein Datenmodell für eine Wetter-App

Viele Menschen nutzen mobile Wetter-Apps, um ihren Tag zu planen – oder zumindest zu entscheiden, ob sie einen Regenschirm mitnehmen müssen! Welche Art von Datenmodell liegt diesen beliebten Programmen zugrunde?

Wir alle wollen wissen, wie ungemütlich das Wetter ist, bevor wir nach draußen gehen. Windows-, iOS- und Android-Apps geben uns genaue und zuverlässige Informationen über die aktuellen Wetterbedingungen. Dieser Artikel erläutert ein detailliertes Datenmodell, das für solche Apps verwendet werden könnte.

Welche Funktionalitäten braucht eine Wetter-App?

Fast jeder, der ein Smartphone besitzt, hat auch mindestens eine Wetter-App. Diese Apps bieten detaillierte Wetterinformationen, die ihren Benutzern helfen, sich auf Wetteränderungen vorzubereiten, denen sie im Laufe des Tages begegnen können.

Was sollte eine Wetter-App können?

  • Melden Sie aktuelle Wetterbedingungen, einschließlich des Gesamtstatus (z. B. sonnig, teilweise bewölkt, bewölkt usw.), Lufttemperatur, Luftfeuchtigkeit, Windgeschwindigkeit und -richtung, einer „gefühlten“ Temperatur, Luftdruck und Sichtweite. Es sollte auch allgemeine Informationen wie Sonnenauf- und -untergangszeiten sowie Tageshöchst- und -tiefsttemperaturen melden.
  • Zeigen Sie stündliche Details (Temperatur, Luftfeuchtigkeit, Niederschlag, allgemeine Wetterbedingungen) für die nächsten 24 Stunden an.
  • Zeigen Sie eine grundlegende Vorhersage (Tageshöchst- und -tiefsttemperaturen, Wetterbedingungen und Sonnenaufgangs-/Sonnenuntergangszeiten) für jeden Tag in den nächsten ein bis zwei Wochen an.
  • Ermöglichen Sie Benutzern, ihre lokale Stadt und andere Städte festzulegen, in denen sie das Wetter sehen möchten.
  • Ermöglichen Sie Benutzern, Daten in den Maßeinheiten ihrer Wahl anzuzeigen. Benutzer in den USA würden beispielsweise wahrscheinlich Fahrenheit-Temperaturen und Windgeschwindigkeiten in Meilen pro Stunde bevorzugen, aber kanadische und europäische Benutzer würden Celsius und Kilometer pro Stunde bevorzugen.

Denken Sie daran, dass die App nur angezeigt wird die Wettervorhersage und (je nach Einstellung) die Umrechnung von Maßeinheiten. Es führt nicht die eigentliche Prognose durch; Es empfängt einfach Vorhersagedaten von einer anderen Quelle (z. B. einem Regierungsdienst oder einer Wettervorhersageagentur) und zeigt sie auf die vom Benutzer bevorzugte Weise an.

Das Wetter-App-Datenmodell




Ich habe das Modell in drei Themenbereiche aufgeteilt:

  1. Weather Logs
  2. User Preferences
  3. User Profiles

Wir werden jeden Bereich in der angegebenen Reihenfolge besprechen.

Wetterprotokolle

Dies ist der wichtigste Themenbereich. Jede Wetter-App sollte diese grundlegenden Details erfassen:

  • Aktuelle Ist-Temperatur
  • Aktuelle gefühlte Temperatur, die aufgrund zusätzlicher Wetterfaktoren von der tatsächlichen Temperatur abweichen kann (z. B. kann sich ein heißer Tag durch hohe Luftfeuchtigkeit wärmer oder ein kalter Tag kälter anfühlen).
  • Tageshöchst- und Tiefsttemperaturen
  • Daten zum Taupunkt und/oder zur relativen Luftfeuchtigkeit
  • Windgeschwindigkeit
  • Windrichtung
  • Luftdruck
  • Sicht (d. h. an einem nebligen Tag ist die Sicht schlechter als an einem klaren Tag)
  • Sonnenaufgangs- und Sonnenuntergangszeiten

Zusammen ergeben diese einen ganzheitlichen Überblick über die aktuelle Wetterlage. Dies sind die Informationen, die den Benutzern angezeigt werden, normalerweise über einen oder mehrere intuitive Bildschirme.

Es gibt zwei Arten von Attributen für jede Wettervorhersage:solche, die sich jeden Tag ändern, und solche, die sich durchgehend ändern jeden Tag. Attribute wie Sonnenaufgangs- und Sonnenuntergangszeiten basieren auf Ereignissen, die einmal am Tag stattfinden, sodass diese Informationen einmal für jeden Tag erfasst werden. Wenn es um langfristige Vorhersagen geht (von 7 bis 15 Tagen im Voraus), sollten Benutzer genügend Informationen haben, wenn Sie die Höchst- und Tiefsttemperaturen, die Luftfeuchtigkeit und die allgemeinen Wetterbedingungen (z. B. Sonne, Bewölkung usw.) jedes Tages einbeziehen.

Attribute wie aktuelle Temperatur, gefühlte Temperatur, Windgeschwindigkeit und -richtung, Luftdruck und Sichtweite können sich im Laufe eines Tages ändern. Diese sollten für ein bestimmtes Zeitintervall erfasst werden, beispielsweise jede Stunde oder alle drei Stunden. Für die Zwecke dieses Modells gehen wir von einem Zeitrahmen von einer Stunde aus.

Da wir zwei Arten von Attributen haben, habe ich diesem Themenbereich zwei Tabellen hinzugefügt. Das erste, weather_daily_forecast_log , enthält die täglichen Attribute. Es enthält diese Spalten:

  • city_id – Verweist auf city Tabelle und gibt die Stadt an, für die diese Daten gelten.
  • calendar_date – Das Kalenderdatum für diese Daten. Da diese Tabelle einen Datensatz pro Stadt und Datum enthält, werden diese Spalten (city_id und calendar_date ) bilden den zusammengesetzten Primärschlüssel für diese Tabelle.
  • weather_status_id – Referenziert den weather_status Tabelle und bezeichnet die Wetterbedingungen (d. h. regnerisch, bewölkt, teilweise bewölkt oder sonnig).
  • min_temperature – Die minimale (niedrigste) Temperatur an diesem Tag.
  • max_temperature – Die maximale (höchste) Temperatur an diesem Tag.
  • avg_humidity_in_percentage – Der Durchschnitt relative Luftfeuchtigkeit in der Luft an diesem Tag. (Die Wassermenge, die Luft aufnehmen kann, ist relativ zu ihrer Temperatur.)
  • sunrise_time – Eine Zeitstempelspalte, die die Sonnenaufgangszeit speichert.
  • sunset_time – Eine Zeitstempelspalte, die die Sonnenuntergangszeit speichert.
  • last_updated_at – Enthält das Datum und die Uhrzeit (als Zeitstempel), wann der Datensatz zuletzt aktualisiert wurde.
  • source_system – Der Name der Quelle unserer Wettervorhersage. Diese letzten beiden Spalten werden zu Prüfzwecken aufbewahrt.

Das weather_hourly_forecast_log Die Tabelle enthält alle Attribute, die sich im Laufe des Tages ändern können. Wir betrachten diese Attribute als einen Datensatz für einen bestimmten Zeitraum. Die Spalten sind:

  • id – Der Ersatzschlüssel für die Tabelle.
  • city_id – Die jeweilige Stadt.
  • start_timestamp – Eine Zeitstempelspalte, die angibt, wann dieser Zeitrahmen begonnen hat.
  • end_timestamp – Eine Zeitstempelspalte, die angibt, wann dieser Zeitrahmen endete.
  • weather_status_id – Der allgemeine Wetterstatus für den Zeitraum.
  • temperature – Die aktuelle Temperatur für den Zeitraum.
  • feels_like_temperature – Die „fühlbare“ Temperatur für den Zeitraum. Dies kann durch viele Faktoren beeinflusst werden, darunter Wind, Regen und hohe oder niedrige Luftfeuchtigkeit. Diese Informationen geben einen realistischeren Eindruck der aktuellen Wetterbedingungen.
  • humidity_in_percentage –Diese Spalte enthält die Menge (in Prozent) der Luftfeuchtigkeit in der Luft.
  • wind_speed_in_mph – Hält die Windgeschwindigkeit in mph (Meilen pro Stunde).
  • wind_direction – Diese Textspalte speichert ein oder zwei Zeichen, die die Windrichtung angeben (N, NW, NE, S, W, SW usw.)
  • pressure_in_mmhg – Speichert Luftdruckwerte in mmHg.
  • visibility_in_mph – Speichert Werte der Sichtweite in Meilen.

Diese Tabellen enthalten die neuesten Daten für einen bestimmten Zeitraum. Gelegentlich kann eine Zukunftsprognose abgegeben und später geändert werden. In solchen Fällen wird der vorhandene Datensatz für den betreffenden Tag oder Zeitraum durch den neuesten überschrieben. Außerdem werden Sie feststellen, dass wir Attribute nur in einer Maßeinheit (z. B. mph) pro Attribut gespeichert haben. Um Speicherplatz zu sparen, speichern wir nur einen Datensatz für jedes Attribut und lassen das Frontend diese bei Bedarf in die bevorzugten Einheiten des Benutzers konvertieren.

Benutzereinstellungen

Dieser Themenbereich befasst sich hauptsächlich mit Benutzerpräferenzen für Maßeinheiten. Die meisten Spalten sind selbsterklärend, daher erklären wir nur kurz den Zweck jeder Tabelle.

Die users Tabelle enthält grundlegende Informationen über Benutzer, wie E-Mail-Adresse und Telefonnummer. Die id Spalte weist jedem Benutzer, der sich bei der Anwendung registriert, eine eindeutige Nummer zu.

Das attribute Tabelle speichert eine Liste von Attributen wie Temperatur, Windgeschwindigkeit, Windrichtung, Luftdruck usw.

Die measuring_units Tabelle speichert eine Liste aller Maßeinheiten mit ihrem entsprechenden Namen, Beschreibung und attribute_id .

Die user_preferences Die Tabelle bildet die Beziehung zwischen Benutzern und Maßeinheitspräferenzen ab. Beachten Sie, dass wir Informationen über die Präferenzen der Benutzer für jedes einzelne Attribut speichern können. Da Benutzer eine beliebige Maßeinheit aus den gegebenen Optionen für ein Attribut auswählen können, haben wir einen zusammengesetzten Primärschlüssel mit der users_id erstellt und attribute_id Spalten.

Benutzerprofile

Da die Anwendung es Benutzern ermöglicht, das Wetter in beliebig vielen Städten zu überwachen, befasst sich dieser Themenbereich damit, jedem Benutzerprofil eine oder mehrere Städte zuzuordnen.

Die city Tabelle speichert eine Liste von Städten und deren Standortdetails (Postleitzahl, Land, Kartenkoordinaten). Die Spalten in dieser Tabelle sind selbsterklärend, aber es ist gut zu wissen, dass der city_longitude und city_latitude Spalten können positive oder negative Werte enthalten.

Die user_city Tabelle ordnet Städte Benutzerprofilen zu. Da Benutzer eine Stadt nur einmal zu ihren Profilen hinzufügen können, haben wir einen zusammengesetzten Primärschlüssel mit der users_id erstellt und city_id Spalten.

Was würden Sie diesem Datenmodell hinzufügen?

Jetzt kommen wir zu dem Abschnitt, in dem Sie uns mitteilen, was Sie in einem Modell hinzufügen, ändern oder löschen würden. Was könnten wir hinzufügen? Nun, die globale Erwärmung ist zu einem großen Problem geworden. Die Forschung zeigt eindeutig, dass sie eher durch menschliche Aktivitäten als durch natürliche Veränderungen verursacht wird. Dies ist jedoch relativ wenigen Menschen bewusst. Wie können wir die Menschen auf den Klimawandel und die globale Erwärmung aufmerksam machen? Wir könnten Fakten über Umweltveränderungen und deren Ursachen in die App aufnehmen. Oder vielleicht könnten wir den Prozentsatz der Baumbedeckung in einem lokalen Gebiet angeben, um das Bewusstsein zu schärfen.

Was denkst du? Bitte teilen Sie uns Ihre Ideen mit, indem Sie unten einen Kommentar abgeben.