Database
 sql >> Base de données >  >> RDS >> Database

Livrer des cadeaux de Noël :le modèle de données du Père Noël

Alors que les vacances approchent à grands pas, le Père Noël a besoin d'aide supplémentaire pour livrer des cadeaux aux enfants du monde entier. Aujourd'hui, nous allons développer un modèle de données qui peut aider le Père Noël et ses lutins à travailler plus efficacement.

Contexte

Le travail du Père Noël est extrêmement important, il doit donc faire tout ce qu'il peut pour assurer le succès à temps. Rappelez-vous simplement tous les problèmes rencontrés par Howard dans "Jingle All the Way" en essayant de trouver une seule figure de Turbo Man - nous ne pouvons pas laisser le Père Noël glisser à nouveau, sinon sa réputation sera ruinée. Donc, pour aider le Père Noël à rester organisé, nous diviserons ses activités en trois phases principales.

  1. Planification

    Premièrement, le Père Noël doit tout planifier. Après tout, il ne peut pas laisser ses lutins courir dans l'usine et paniquer alors qu'ils essaient de donner un sens à des milliards de livraisons ! En plus de lire les lettres de cette année et de déterminer les cadeaux que les enfants aimeraient, nous devrions également analyser les tendances des années précédentes pour rassembler du matériel commun ou même produire des cadeaux à l'avance. Cela aidera à réduire une partie de l'arriéré alors que nous commençons à travailler sur la production.

  2. Production

    Après la phase de planification, nous sommes prêts à commencer à produire des cadeaux. Avec l'aide des lutins du Père Noël, nous pouvons rapidement fabriquer et emballer des cadeaux selon les listes de souhaits que nous avons reçues. Pour rendre le processus plus efficace, cependant, nous devons organiser tous les matériaux et informations dont nous disposons afin que les elfes puissent saisir les choses dont ils ont besoin le plus rapidement possible.

  3. Livraison

    Le moment approche à grands pas ! Les rennes du Père Noël sont prêts et l'homme lui-même vérifie anxieusement sa montre. Les cadeaux sont rapidement chargés dans le traîneau par les assistants du Père Noël. À ce stade, le Père Noël jette un dernier coup d'œil à son emploi du temps pour s'assurer qu'il a toutes les bonnes adresses, ainsi que toutes les notes qu'il devra prendre en compte.

Maintenant que nous avons un peu de recul sur le type d'informations avec lesquelles nous devrons travailler, nous pouvons enfin commencer à concevoir le modèle de données du Père Noël.

Le modèle de données




Ce modèle de données se compose de trois sections :

  1. Articles
  2. Personnes et listes de souhaits
  3. Livraisons

Examinons de plus près chacun d'eux.

Section 1 :Éléments

Notre modèle de données commence par la section Éléments, qui contient de nombreux tableaux qui sont au cœur des deux sections restantes.

Le item_type table est sans doute la plus importante ici. Ce tableau contient une liste de tous les articles que nous devrons produire à l'usine du Père Noël. Pour chaque article, nous stockons les informations suivantes :

  • item_name — le nom de l'élément.
  • properties — des paires clé-valeur textuelles indiquant la taille, la forme, la couleur et d'autres propriétés de l'article produit, stockées dans un format structuré.
  • description — une description textuelle non structurée de l'élément.

Si jamais nous avons deux éléments similaires qui ne diffèrent que par certaines de leurs propriétés, telles que la couleur, nous continuerons et les stockerons en tant qu'enregistrements individuels dans le tableau.

Pour les besoins de notre modèle de données, nous supposerons que le Père Noël n'achètera pas de cadeaux mais ordonnera plutôt à ses lutins de tout produire en interne. Pour chaque type d'élément différent, nous aurons une liste de conditions préalables que nous devons remplir. Il peut s'agir de main-d'œuvre ou de matériaux comme le bois, le plastique, le métal et les peintures. Nous devrons stocker une liste de toutes les conditions préalables possibles et les associer à chaque élément que nous devons produire. Nous utiliserons quatre tableaux pour y parvenir.

Le premier de ces quatre tableaux est prerequisite , qui, comme son nom l'indique, stocke une liste de toutes les conditions préalables possibles. Pour chaque enregistrement de cette table, nous stockerons un nom de prérequis unique, toutes les properties supplémentaires (cette fois dans un format non structuré), et des références au prerequisite_type et dictionnaires d'unités. Le prerequisite_type dictionnaire sera utilisé pour stocker une liste de toutes les catégories de conditions préalables, telles que « travail » et « matériaux ». L'unit dictionnaire sera utilisé pour stocker une liste de toutes les unités que nous utiliserons pour quantifier nos prérequis. Par exemple, nous pouvons nous attendre à ce que la main-d'œuvre soit mesurée en heures ou en minutes et que les matériaux soient mesurés en termes de coût de production (dollars), de poids (kilogrammes) ou de volume (litres).

Le dernier tableau de cette section est warehouse , que nous utiliserons pour suivre l'état actuel de notre inventaire pour les articles et les matériaux (d'où le item_type_id et prerequisite_id clés étrangères). Une seule de ces deux clés contiendra une valeur à un moment donné. En plus de ces clés, nous stockerons la quantity finale qui était disponible à une warehouse_date particulière .

Section 2 :Personnes et listes de souhaits

Élément essentiel de notre modèle de données, cette section traite des choses que les enfants veulent trouver sous leur sapin de Noël ! Nous travaillerons de droite à gauche.

Les deux tableaux les plus à droite sont country et city . Nous utiliserons ces deux tableaux pour référencer l'emplacement d'un enfant qui a envoyé au Père Noël une liste de souhaits. Le country la table contient uniquement l'unique country_name attribut et une liste de tous les countries existants . Pour être plus précis avec nos emplacements, nous utiliserons le city table pour stocker toutes les villes que le Père Noël devra visiter. Pour chaque ville de ce tableau, nous stockerons :

  • city_name — le nom de la ville, qui n'est pas nécessairement unique.
  • postal_code — le code postal de la ville.
  • country_id - l'identifiant du pays dans lequel la ville est située. Avec les deux attributs précédents, cela forme la clé unique de cette table.
  • latitude et longitude — utilisé pour aider le Père Noël à trouver la ville sur sa carte ou pour entrer ses coordonnées dans le système de navigation qu'il utilise.

Bien sûr, vous ne pouvez pas avoir de souhaits sans les gens ! Nous stockerons une liste de toutes les personnes dans le person table. Pour chaque individu, nous stockerons un first_name , last_name , birth_date , et city . Nous stockerons également l'adresse de la personne, ainsi que tout delivery_details supplémentaire Le Père Noël devra peut-être prendre en compte (comme une note indiquant qu'une personne n'a pas de cheminée).

Le dernier tableau de cette section contient la wish_list qui stocke tous les souhaits de Noël jamais faits. Pour chaque souhait, nous devons savoir :

  • person_id — une référence à la personne qui a fait le vœu.
  • item_type_id — une référence à l'élément (type) demandé par la personne.
  • quantity — la quantité souhaitée de l'article spécifié dans le souhait.
  • details - tous les détails qui peuvent aider le Père Noël à réaliser le souhait.
  • ts — indique le moment où le vœu a été stocké dans notre système, ce qui est important pour déterminer l'année au cours de laquelle le vœu a été formulé.
  • gift_id - une référence au tableau des cadeaux indiquant le cadeau qui a été livré pour réaliser ce souhait.

Section 3 :Livraisons

Maintenant, nous sommes enfin arrivés à la partie la plus intéressante de notre modèle de données :les cadeaux et les livraisons !

Une fois qu'un seul article est produit, nous insérons son enregistrement associé dans le item table. Notez que lorsqu'un article est produit, il n'est toujours pas affecté à un cadeau, donc le gift_id contiendra une valeur nulle jusqu'à ce que l'article soit associé à un cadeau particulier. Nous devrons également stocker le type d'article qui a été produit (item_type_id ), ainsi que sa quantity . Bien que la quantité d'un article soit généralement de 1, nous pouvons nous attendre à des quantités différentes dans certains cas particuliers (par exemple, plus d'un article combiné dans un ensemble - c'est très inhabituel mais néanmoins possible).

Ensuite, nous combinerons un ou plusieurs articles pour produire un gift . Nous mettrons à jour item.gift_id une fois que nous avons emballé nos articles sélectionnés dans ce cadeau. Chaque cadeau sera livré à la personne qui lui est liée (person_id ) et aura un statut de suivi (current_status_id ), ainsi qu'un horodatage de la date à laquelle le Père Noël prévoit de livrer le cadeau (delivery_time_planned ). Nous mettrons également à jour la valeur de wish_list.gift_id attribut pour tous les articles qui ont été livrés avec succès.

Les deux dernières tables de ce modèle de données concernent le suivi des statuts de livraison. Tout d'abord, le status table contient un status_name unique valeur que nous utiliserons pour référencer le statut actuel du gft (gift.current_status_id ). De plus, le status_history table stockera une liste de tous les statuts pour tous les cadeaux dans notre base de données, ainsi que les horodatages de toutes les mises à jour de statut (ts).

Espérons que notre modèle de données aidera le Père Noël à terminer une autre année réussie de livraisons afin que nous puissions tous recevoir nos cadeaux à temps. Si vous êtes d'humeur pour plus de SQL sur le thème de Noël, Vertabelo Academy a préparé un défi spécial de vacances de 24 requêtes. Allez-y et vérifiez-le! Au nom de la famille Vertabelo, nous vous souhaitons un merveilleux Noël !