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

Weihnachtsgeschenke ausliefern:Das Datenmodell des Weihnachtsmanns

Da die Feiertage immer näher rücken, braucht der Weihnachtsmann zusätzliche Hilfe, um Geschenke an Kinder auf der ganzen Welt zu liefern. Heute werden wir ein Datenmodell entwickeln, das dem Weihnachtsmann und seinen Elfen helfen kann, effizienter zu arbeiten.

Hintergrund

Der Job des Weihnachtsmanns ist äußerst wichtig, daher muss er alles tun, um den pünktlichen Erfolg sicherzustellen. Denken Sie nur an all die Probleme, auf die Howard in „Jingle All the Way“ gestoßen ist, als er versuchte, eine einzelne Turbo-Man-Figur zu finden – wir dürfen den Weihnachtsmann nicht noch einmal ausrutschen lassen, sonst ist sein Ruf ruiniert. Um dem Weihnachtsmann zu helfen, organisiert zu bleiben, werden wir seine Aktivitäten in drei Hauptphasen unterteilen.

  1. Planung

    Zuerst muss der Weihnachtsmann alles planen. Schließlich kann er nicht zulassen, dass seine Elfen durch die Fabrik rennen und in Panik geraten, während sie versuchen, Milliarden von Lieferungen zu verstehen! Zusätzlich zum Lesen der diesjährigen Briefe und zum Bestimmen, welche Geschenke Kinder gerne hätten, sollten wir auch alle Trends aus den vergangenen Jahren analysieren, um einige gemeinsame Materialien zu sammeln oder sogar Geschenke im Voraus zu produzieren. Dies wird dazu beitragen, einen Teil des Rückstands zu reduzieren, wenn wir mit der Arbeit an der Produktion beginnen.

  2. Produktion

    Nach der Planungsphase können wir mit der Produktion von Geschenken beginnen. Mit Hilfe von Santas Elfen können wir schnell Geschenke nach den erhaltenen Wunschlisten herstellen und verpacken. Um den Prozess effizienter zu gestalten, müssen wir jedoch alle Materialien und Informationen, die wir zur Hand haben, so organisieren, dass die Elfen die benötigten Dinge so schnell wie möglich greifen können.

  3. Lieferung

    Der Moment rückt schnell näher! Die Rentiere des Weihnachtsmanns sind bereit, und der Mann selbst schaut besorgt auf seine Uhr. Schnell werden die Geschenke von den Helfern des Weihnachtsmanns in den Schlitten geladen. An diesem Punkt wirft der Weihnachtsmann einen letzten Blick auf seinen Terminplan, um sicherzustellen, dass er alle richtigen Adressen sowie alle Notizen hat, die er berücksichtigen muss.

Jetzt, da wir ein wenig Hintergrundwissen über die Art von Informationen haben, mit denen wir arbeiten müssen, können wir endlich damit beginnen, das Datenmodell des Weihnachtsmanns zu entwerfen.

Das Datenmodell




Dieses Datenmodell besteht aus drei Abschnitten:

  1. Artikel
  2. Personen und Wunschlisten
  3. Lieferungen

Sehen wir uns diese genauer an.

Abschnitt 1:Artikel

Unser Datenmodell beginnt mit dem Artikelabschnitt, der viele Tabellen enthält, die für die verbleibenden zwei Abschnitte von zentraler Bedeutung sind.

Der item_type Tabelle ist hier wohl die wichtigste. Diese Tabelle enthält eine Liste aller Gegenstände, die wir in der Fabrik des Weihnachtsmanns herstellen müssen. Für jeden Artikel speichern wir die folgenden Informationen:

  • item_name — der Name des Elements.
  • properties — Schlüssel-Wert-Paare in Textform, die Größe, Form, Farbe und andere Eigenschaften des produzierten Artikels angeben und in einem strukturierten Format gespeichert sind.
  • description — eine unstrukturierte Textbeschreibung des Artikels.

Wenn wir jemals zwei ähnliche Artikel haben, die sich nur in einigen ihrer Eigenschaften unterscheiden, z. B. in der Farbe, werden wir sie als einzelne Datensätze in der Tabelle speichern.

Für unser Datenmodell gehen wir davon aus, dass der Weihnachtsmann keine Geschenke kauft, sondern seinen Elfen befiehlt, alles selbst herzustellen. Für jeden Artikeltyp haben wir eine Liste mit Voraussetzungen, die wir erfüllen müssen. Dies können Arbeit oder Materialien wie Holz, Kunststoff, Metall und Farben sein. Wir müssen eine Liste aller möglichen Voraussetzungen speichern und sie jedem Artikel zuordnen, den wir produzieren müssen. Dazu verwenden wir vier Tabellen.

Die erste dieser vier Tabellen ist prerequisite , die, wie der Name schon sagt, eine Liste aller möglichen Voraussetzungen speichert. Für jeden Datensatz in dieser Tabelle speichern wir einen eindeutigen vorausgesetzten Namen und alle zusätzlichen properties (diesmal in einem unstrukturierten Format) und Verweise auf prerequisite_type und Einheitswörterbücher. Der prerequisite_type Wörterbuch wird verwendet, um eine Liste aller vorausgesetzten Kategorien wie „Arbeit“ und „Materialien“ zu speichern. Die unit Wörterbuch wird verwendet, um eine Liste aller Einheiten zu speichern, die wir verwenden, um unsere Voraussetzungen zu quantifizieren. Zum Beispiel können wir erwarten, dass Arbeit in Stunden oder Minuten und Materialien in Produktionskosten (Dollar), Gewicht (Kilogramm) oder Volumen (Liter) gemessen werden.

Die letzte Tabelle in diesem Abschnitt ist warehouse , die wir verwenden, um den aktuellen Status unseres Inventars sowohl für Artikel als auch für Materialien zu verfolgen (daher die item_type_id und prerequisite_id fremde Schlüssel). Nur einer dieser beiden Schlüssel enthält zu einem bestimmten Zeitpunkt einen Wert. Zusätzlich zu diesen Schlüsseln speichern wir die endgültige quantity das an einem bestimmten warehouse_date verfügbar war .

Abschnitt 2:Personen und Wunschlisten

Dieser Abschnitt ist ein wichtiger Teil unseres Datenmodells und befasst sich mit den Dingen, die Kinder unter ihren Weihnachtsbäumen finden möchten! Wir arbeiten von rechts nach links.

Die beiden Tabellen ganz rechts sind country und city . Wir verwenden diese beiden Tabellen, wenn wir auf den Standort eines Kindes verweisen, das dem Weihnachtsmann eine Wunschliste geschickt hat. Das country Tabelle enthält nur den eindeutigen country_name -Attribut und eine Liste aller vorhandenen countries . Um unsere Standorte genauer zu beschreiben, verwenden wir den city Tabelle zum Speichern aller Städte, die der Weihnachtsmann besuchen muss. Für jede Stadt in dieser Tabelle speichern wir:

  • city_name — der Name der Stadt, der nicht unbedingt eindeutig ist.
  • postal_code — die Postleitzahl der Stadt.
  • country_id — die ID des Landes, in dem sich die Stadt befindet. Zusammen mit den beiden vorherigen Attributen bildet dies den eindeutigen Schlüssel für diese Tabelle.
  • latitude und longitude — Wird verwendet, um dem Weihnachtsmann dabei zu helfen, die Stadt auf seiner Karte zu finden oder ihre Koordinaten in das von ihm verwendete Navigationssystem einzugeben.

Natürlich kann man ohne Menschen keine Wünsche haben! Wir speichern eine Liste aller Personen in person Tisch. Für jede Person speichern wir einen first_name , last_name , birth_date , und city . Wir speichern auch die Adresse der Person sowie alle zusätzlichen delivery_details Der Weihnachtsmann muss möglicherweise überlegen (z. B. eine Notiz, die darauf hinweist, dass eine Person keinen Schornstein hat).

Die letzte Tabelle dieses Abschnitts enthält die vollständige wish_list das alle jemals gemachten Weihnachtswünsche speichert. Für jeden Wunsch müssen wir wissen:

  • person_id — ein Verweis auf die Person, die den Wunsch geäußert hat.
  • item_type_id — ein Verweis auf den Artikel (Typ), den die Person angefordert hat.
  • quantity — die gewünschte Menge des im Wunsch angegebenen Artikels.
  • details — alle Details, die dem Weihnachtsmann helfen können, den Wunsch zu erfüllen.
  • ts — bezeichnet den Zeitpunkt, an dem der Wunsch in unserem System gespeichert wurde, was wichtig ist, um das Jahr zu bestimmen, in dem der Wunsch geäußert wurde.
  • gift_id — ein Verweis auf die Geschenketabelle, die das Geschenk bezeichnet, das geliefert wurde, um diesen Wunsch zu erfüllen.

Abschnitt 3:Lieferungen

Jetzt sind wir endlich beim interessantesten Teil unseres Datenmodells angelangt – Geschenke und Lieferungen!

Nachdem ein einzelner Artikel produziert wurde, fügen wir seinen zugehörigen Datensatz in den item Tisch. Beachten Sie, dass ein Artikel, wenn er produziert wird, noch keinem Geschenk zugeordnet ist, also die gift_id -Attribut enthält den Wert null, bis der Artikel mit einem bestimmten Geschenk verknüpft ist. Wir müssen auch den produzierten Artikeltyp speichern (item_type_id ) sowie seine quantity . Während die Menge eines Artikels meistens 1 ist, können wir in einigen Sonderfällen mit unterschiedlichen Mengen rechnen (z. B. mehr als 1 Artikel in einem Set kombiniert – das ist sehr ungewöhnlich, aber dennoch möglich).

Als nächstes kombinieren wir einen oder mehrere Artikel, um ein gift . Wir werden item.gift_id aktualisieren sobald wir unsere ausgewählten Artikel in dieses Geschenk verpackt haben. Jedes Geschenk wird an die zugehörige Person (person_id ) und hat einen Tracking-Status (current_status_id ), sowie einen Zeitstempel, wann der Weihnachtsmann das Geschenk liefern will (delivery_time_planned ). Wir werden auch den Wert von wish_list.gift_id aktualisieren Attribut für alle Artikel, die erfolgreich zugestellt wurden.

Die letzten beiden Tabellen in diesem Datenmodell betreffen die Nachverfolgung von Lieferstatus. Zuerst der status Tabelle enthält einen eindeutigen status_name Wert, den wir verwenden, wenn wir auf den aktuellen Status des GFT verweisen (gift.current_status_id ). Zusätzlich die status_history Tabelle speichert eine Liste aller Status für alle Geschenke in unserer Datenbank, sowie die Zeitstempel aller Statusaktualisierungen (ts).

Hoffentlich hilft unser Datenmodell dem Weihnachtsmann dabei, ein weiteres erfolgreiches Jahr der Lieferungen abzuschließen, damit wir alle unsere Geschenke pünktlich erhalten. Wenn Sie Lust auf mehr weihnachtliches SQL haben, hat die Vertabelo Academy eine spezielle Weihnachtsherausforderung mit 24 Abfragen vorbereitet. Gehen Sie voran und sehen Sie es sich an! Im Namen der Familie Vertabelo wünschen wir Ihnen ein wunderschönes Weihnachtsfest!