Database
 sql >> база данни >  >> RDS >> Database

Доставяне на коледни подаръци:Модел на данни на Дядо Коледа

С наближаването на празниците, Дядо Коледа се нуждае от допълнителна помощ, за да достави подаръци на деца по целия свят. Днес ще разработим модел на данни, който може да помогне на Дядо Коледа и неговите елфи да работят по-ефективно.

Фон

Работата на Дядо Коледа е изключително важна, така че той трябва да направи всичко възможно, за да осигури успех навреме. Просто си спомнете всички проблеми, които Хауърд срещна в „Jingle All the Way“, когато се опитваше да намери една единствена фигура на Turbo Man – не можем да позволим на Дядо Коледа да се изплъзне отново, или репутацията му ще бъде съсипана. Така че, за да помогнем на Дядо Коледа да остане организиран, ще разделим дейностите му на три основни фази.

  1. Планиране

    Първо, Дядо Коледа трябва да планира всичко. В крайна сметка той не може да накара своите елфи да тичат из фабриката и да се паникьосват, докато се опитват да осмислят милиардите доставки! Освен да четем тазгодишните писма и да определяме какви подаръци биха искали децата, трябва също да анализираме всички тенденции от предишни години, за да съберем някои общи материали или дори да изготвим подаръци преди време. Това ще помогне да се намали част от изоставането, когато започнем да работим по производството.

  2. Производство

    След фазата на планиране сме готови да започнем да произвеждаме подаръци. С помощта на елфите на Дядо Коледа можем бързо да изработим и опаковаме подаръци според списъците с желания, които получихме. За да направим процеса по-ефективен обаче, трябва да организираме всички материали и информация, които имаме под ръка, така че елфите да могат да грабнат нещата, от които се нуждаят възможно най-бързо.

  3. Доставка

    Моментът бързо наближава! Елените на Дядо Коледа са готови, а самият мъж тревожно си гледа часовника. Подаръците бързо се товарят в шейната от помощниците на Дядо Коледа. В този момент Дядо Коледа за последно разглежда графика си, за да се увери, че има всички правилни адреси, както и всички бележки, които ще трябва да вземе предвид.

Сега, когато имаме малко информация за вида информация, с която ще трябва да работим, най-накрая можем да започнем да проектираме модела на данните на Дядо Коледа.

Моделът на данните




Този модел на данни се състои от три раздела:

  1. Елементи
  2. Лица и списъци с желания
  3. Доставки

Нека разгледаме по-отблизо всеки от тях.

Раздел 1:Артикули

Нашият модел на данни започва със секцията Елементи, която съдържа много таблици, които са централни за останалите две секции.

item_type таблицата е може би най-важната тук. Тази таблица съдържа списък на всички артикули, които ще трябва да произведем във фабриката на Дядо Коледа. За всеки артикул ще съхраняваме следната информация:

  • item_name — името на артикула.
  • properties — текстови двойки ключ-стойност, обозначаващи размера, формата, цвета и други свойства на произведения артикул, съхранявани в структуриран формат.
  • description — неструктурирано текстово описание на елемента.

Ако някога имаме два подобни елемента, които се различават само по някои от свойствата си, като например цвят, ще продължим и ще ги съхраняваме като отделни записи в таблицата.

За целите на нашия модел на данни ще приемем, че Дядо Коледа няма да купува подаръци, а вместо това ще нареди на своите елфи да произвеждат всичко в къщата. За всеки различен тип артикул ще имаме списък с предпоставките, които трябва да изпълним. Това може да бъде труд или материали като дърво, пластмаса, метал и бои. Ще трябва да съхраним списък с всички възможни предпоставки и да ги свържем с всеки артикул, който трябва да произведем. Ще използваме четири таблици, за да постигнем това.

Първата от тези четири таблици е prerequisite , който, както подсказва името, съхранява списък с всички възможни предпоставки. За всеки запис в тази таблица ще съхраняваме уникално име на предпоставка, всички допълнителни properties (този път в неструктуриран формат) и препратки към prerequisite_type и речници на единици. prerequisite_type речникът ще се използва за съхраняване на списък с всички задължителни категории, като „труд“ и „материали“. unit речникът ще се използва за съхраняване на списък с всички единици, които ще използваме за количествено определяне на нашите предпоставки. Например, можем да очакваме трудът да бъде измерен в часове или минути, а материалите да бъдат измерени по отношение на производствените разходи (долари), теглото (килограми) или обема (литри).

Последната таблица в този раздел е warehouse , който ще използваме за проследяване на текущото състояние на инвентара си както за артикули, така и за материали (оттук и item_type_id и prerequisite_id външни ключове). Само един от тези два ключа ще съдържа стойност във всеки даден момент от време. В допълнение към тези ключове, ние ще съхраняваме крайното quantity която е била налична на определена warehouse_date .

Раздел 2:Лица и списъци с желания

Критична част от нашия модел на данни, този раздел се занимава с нещата, които децата искат да намерят под коледните си елхи! Ще работим от дясно на ляво.

Двете най-десни таблици са country и city . Ще използваме тези две таблици, когато се позоваваме на местоположението на дете, което е изпратило списък с желания на Дядо Коледа. country таблицата съдържа само уникалното country_name атрибут и списък на всички съществуващи countries . За да бъдем по-точни с нашите местоположения, ще използваме city маса за съхранение на всички градове, които Дядо Коледа трябва да посети. За всеки град в тази таблица ще съхраняваме:

  • city_name — името на града, което не е непременно уникално.
  • postal_code — пощенския код на града.
  • country_id — идентификационният номер на държавата, в която се намира градът. Заедно с предишните два атрибута, това формира уникалния ключ за тази таблица.
  • latitude и longitude — използва се, за да помогне на Дядо Коледа да намери града на картата си или да въведе координатите му в навигационната система, която използва.

Разбира се, не можете да имате желания без хора! Ще съхраняваме списък с всички хора в person маса. За всеки човек ще съхраняваме first_name , last_name , birth_date и city . Също така ще съхраняваме адреса на лицето, както и всички допълнителни delivery_details Може да се наложи Дядо Коледа да обмисли (като бележка, показваща, че човек няма комин).

Последната таблица на този раздел съдържа пълния wish_list който съхранява всички коледни пожелания, направени някога. За всяко желание трябва да знаем:

  • person_id — препратка към лицето, което е пожелало.
  • item_type_id — препратка към артикула (вида), който лицето е поискало.
  • quantity — желаното количество от артикула, посочено в желанието.
  • details — всички подробности, които могат да помогнат на Дядо Коледа да изпълни желанието.
  • ts — обозначава момента, в който желанието е било съхранено в нашата система, което е важно за определяне на годината, в която е направено желанието.
  • gift_id — препратка към таблицата с подаръци, обозначаваща подаръка, който е доставен за изпълнение на това желание.

Раздел 3:Доставки

Сега най-накрая стигнахме до най-интересната част от нашия модел на данни – подаръци и доставки!

След като бъде произведен един елемент, ще вмъкнем свързания с него запис в item маса. Имайте предвид, че когато даден артикул е произведен, той все още не е присвоен на никакъв подарък, така че gift_id атрибутът ще съдържа стойност null, докато елементът не бъде свързан с конкретен подарък. Ще трябва също да съхраним типа на произведения артикул (item_type_id ), както и неговото quantity . Докато количеството на артикула ще бъде предимно 1, можем да очакваме различни количества в някои специални случаи (например повече от 1 артикул, комбиниран в комплект – това е много необичайно, но въпреки това е възможно).

Продължавайки нататък, ще комбинираме един или повече артикула, за да създадем gift . Ще актуализираме item.gift_id след като опаковаме избраните от нас артикули в този подарък. Всеки подарък ще бъде доставен на свързаното му лице (person_id ) и ще има състояние на проследяване (current_status_id). ), както и времева марка за това кога Дядо Коледа планира да достави подаръка (delivery_time_planned ). Също така ще актуализираме стойността на wish_list.gift_id атрибут за всички успешно доставени артикули.

Последните две таблици в този модел на данни се отнасят за проследяване на статусите на доставка. Първо, status таблицата съдържа уникален status_name стойност, която ще използваме при препращане към текущото състояние на gft (gift.current_status_id ). Освен това status_history таблицата ще съхранява списък с всички състояния за всички подаръци в нашата база данни, както и времевите отпечатъци на всички актуализации на състоянието (ts).

Надяваме се, че нашият модел на данни ще помогне на Дядо Коледа да завърши още една успешна година на доставки, за да можем всички да получим подаръците си навреме. Ако сте в настроение за повече SQL с коледна тематика, Vertabelo Academy е подготвил специално ваканционно предизвикателство с 24 заявки. Продължете и проверете! От името на семейство Вертабело се надяваме да имате прекрасна Коледа!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL СЪЗДАВАНЕ НА ТАБЛИЦА... КАТО Инструкция SELECT

  2. Как да преименувате колона в SQL

  3. Как да получите текущата дата (без време) в T-SQL

  4. SQL NOT оператор за начинаещи

  5. Как да пусна колона в SQL?