Файл: "Транспортная доставка заказов" Проектирование реализации операций бизнес-процесса.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 16.05.2023

Просмотров: 404

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

База данных рассмотренная мной в данной работе является не полной, но лишь минимально необходимой для полноценной работы системы. В частности, тут не присутствует возможность хранения информации о местоположении курьеров в разные моменты времени и нет возможности использовать эту базу в качестве хранилища паролей для защиты приложения от неавторизованного доступа

2.2.1 Список таблиц базы:

  1. Table_Orders
  2. Table_Customers
  3. Table_Meals
  4. Table_Recipes
  5. Table_Measurments
  6. Table_Ingredients
  7. Table_Batches
  8. Table_Locations
  9. Table_Suppliers
  10. Table_Status
  11. Table_MealsList
  12. Table_Cars
  13. Table_Overseers
  14. Table_SuppliersIngredientsList
  15. Table_Drivers

Рисунок 7 Схема данных БД

2.2.2 Описание структуры данных

2.2.2.1 Table_Orders:

Эта таблица хранит в себе данные о заказах, сделанных клиентами, как об активных, так и о выполненных, в целях сбора статистики и построения модели потребности ресторана в ингредиентах.

Рисунок 8 Таблица заказов

Поля таблицы:

  1. Orders_ID – (integer)уникальный идентификатор заказа в системе, также является первичным ключом. Уникальное поле, которое не может повторяться. Является индексом
  2. Orders_Customer_ID – (integer)уникальный идентификатор пользователя, сделавшего заказ. Является внешним ключом (таблица: Table_Customers)
  3. Orders_Status – (boolean)поле, которое показывает статус заказа, принимает значения (0 – заказ не выполнен и 1 – заказ закрыт)
  4. Orders_ReceiveDate – (datetime) поле, которое хранит дату и время поступления заказа в систему
  5. Orders_CloseDate – (datetime) поле, хранящее информацию о дате и времени закрытия заказа
  6. Orders_Car_ID – (integer) внешний ключ таблицы Table_Car, указывающий машину, на которую был назначен (которая выполнила) заказ.

2.2.2.2 Table_MealsList:

В каждом заказе может быть несколько блюд, поэтому для их хранения в рамках одной записи заказа создаем отдельную таблицу.

Рисунок 9. Таблица списка блюд в заказе

Поля таблицы:

  1. MealsList_ID – (integer) уникальный идентификатор записи. Не может повторяться и является первичным ключом таблицы
  2. MealsList_Orders_ID – (integer) внешний ключ из таблицы Table_Orders. Показывает к какому заказу относятся блюда из списка
  3. MealsList_Meals_ID – (integer) внешний ключ из таблицы Table_Meals, показывающий идентификатор блюда, входящего в заказ
  4. MealsList_Status – (boolean) поле хранящее статус готовности блюда (0 – не готово, 1 – готово и можно отправлять)

2.2.2.3 Table_Customers:

Таблица содержит данные о заказчиках для сбора статистики, поиска постоянных клиентов и изучения клиентов и их предпочтений.

Рисунок 10. Таблица клиентов

Поля таблицы :

  1. Customers_ID – (integer) уникальный идентификатор покупателя, являющийся первичным ключом и индексом таблицы
  2. Customers_Name – (varchar) ФИО покупателя
  3. Customers_Age – (integer) возраст покупателя, используется для составления статистики предподчтений
  4. Customers_OrdersCount – (integer) количество заказов, сделанных покупателем. Собирается для статистики.

2.2.2.4 Table_Meals:

В этой таблице хранится информация о блюдах, которые ресторан готовит и доставляем своим клиентам.

Рисунок 11. Таблица блюд

Поля таблицы:

  1. Meals_ID – (integer) уникальный идентификатор записи. Является первичным ключом таблицы, а так же индексом для ускорения поиска блюда под ID
  2. Meals_Recipes_ID – (integer) внешний ключ таблицы Table_Recipes, который устанавливает связь между блюдом и его рецептом
  3. Meals_Name – (varchar) название блюда
  4. Meals_Cooking – (memo) поле, хранящее в себе последовательность действий при приготовлении блюда
  5. Meals_Expiration – (integer) срок годности блюда после его приготовления

2.2.2.5 Table_Recipes:

Эта таблица хранит в себе все ингредиенты с помощью которых готовится блюдо, а так же необходимое для приготовления количество каждого ингредиента в разных единицах измерений

Рисунок 12. Таблица рецептов

Поля таблицы:

  1. Recipes_ID – (integer) является уникальным идентификатором каждой строки. Так же является индексом
  2. Recipes_Ingredients_ID – (integer) внешний ключ, являющийся первичным ключом таблицы Table_Ingredients. Используется для привязки ID каждого ингредиента к рецепту
  3. Recipes_Quantity – (float) поле, описывающее необходимое количество ингредиента для приготовления блюда

2.2.2.6 Table_Measurment

Таблица хранит в себе данные о единицах измерения, используемых в приложении.

Рисунок 13. Таблица мер измерения

Поля таблицы:

  1. Measurment_ID – (integer) поле, являющееся первичным ключом таблицы, а так же её индексом.
  2. Measurment_Name – (varchar) название единицы измерения, применяемое в программе
  3. Measurment_Short – (varchar) – сокращение названия единицы измерения, для применения вместе с цифрами

2.2.2.7 Table_Ingredients

Таблица содержит данные об ингредиентах, их принятом в системе названии и сроке годности.

Рисунок 14. Таблица ингредиентов

Поля таблицы:

  1. Ingredients_ID – (integer) уникальный идентификатор рецепта, так же являющийся первичным ключом и индексом для ускорения поиска по ингредиентам
  2. Ingredients_Name – (varchar) название ингредиента, используемое информационной системой.
  3. Ingredients_Expiration – (integer) число дней, в течение которых ингредиент можно использовать
  4. Ingredients_Measurment_ID – (integer) внешний ключ, привязывающий к каждому ингредиенту подходящие меры измерения. Является внешним ключом

2.2.2.8 Table_Batches

Таблицы хранит в себе данные о партиях ингредиентов, поставленных поставщиками, их сроке годности и наличии на складе.

Рисунок 15. Таблица заказов на ингредиенты

Поля таблицы:

  1. Batches_ID – (integer) уникальный идентификатор поставки, являющийся первичным ключом таблицы, а так же индексом, созданным для ускорения поиска партии по ID
  2. Batches_Suppliers_ID – (integer) внешний ключ, связывающий Table_Batches с Table_Suppliers. Указывает ID поставщика, поставившего компании партию ингредиентов.
  3. Batches_Ingredients_ID – (integer) внешний ключ, связывающий таблицы по ID ингредиента, определяет тип ингредиента, содержащийся в данной поставке
  4. Batches_DeliveryDate/OrderDate – (datetime) время и дата доставки данной партии ингредиентов на склад или заказа партии, через систему у поставщика.
  5. Batches_Quantity – (integer) количество ингредиентов, поставленных в рамках данной партии
  6. Batches_Status_ID – (integer) внешний ключ, устанавливающий связь между таблицами Table_Batches и Table_Status. Указывает статус партии в системе (0 – заказана, но не доставлена, 1 – доставлена на склад, 2- партия закончилась, 3- у партии истек срок годности)

2.2.2.9 Table_Locations:

Таблица содержит данные о местонахождении клиентов, для более быстрой доставки блюд по адресу постоянным покупателям.

Рисунок 16. Таблица местоположений клиентов

Поля таблицы:

  1. Locations_ID – (integer) уникальный идентификатор строки. Является также первичным ключом таблицы.
  2. Locations_Customer_ID – (integer) внешний ключ, связывающий Table_Locations с Table_Customers. Предназначен для создания связи между покупателем и его домашним адресом
  3. Locations_Latitude – (integer) широта точки местонахождения клиента, для визуализации через Google Maps.
  4. Locations_Longitude – (integer) долгота точки местонахождения клиента, для визуализации через Google Maps.

2.2.2.10 Table_Suppliers:

Таблица предназначена для хранения информации о поставщиках ингредиентов для ресторана.

Рисунок 17. Таблица поставщиков

Поля таблицы:

  1. Suppliers_ID – (integer) уникальный идентификатор каждого поставщика в системе. Является первичным ключом, а так же индексом.
  2. Suppliers_Name – (varchar) название поставщика, используемое внутри системы.
  3. Suppliers_BatchesCount – (integer) количество заказов на ингредиенты, выполненных поставщиком

2.2.2.11 Table_Status:

Таблица хранит в себе данные о статусе партий ингредиентов, внесенных в систему.

Рисунок 18. Таблица статусов заказов

Поля таблицы:

  1. Status_ID – (integer) уникальный идентификатор статуса, являющийся так же первичным ключом.
  2. Status_Name – (varchar) название статуса, принятое в рамках данной системы.

2.2.2.12 Table_SuppliersIngredientsList:

Таблица содержит в себе данные о списке ингредиентов, которые можно заказать у каждого поставщика

Рисунок 19. Таблица ингредиентов, поставляемых разными поставщиками

Поля таблицы:

  1. SuppliersIngredientsList_ID – (integer) уникальный идентификатор каждой записи в таблице. Является первичным ключом в таблице и индексом.
  2. SuppliersIngredientsList_Suppliers_ID – (integer) внешний ключ, связанный с таблицей Table_Suppliers, показывает какой поставщик поставляет данный ингредиент
  3. SuppliersIngredientList_Ingredients_ID – (integer) внешний ключ, связывающий данную таблицу с таблицей Table_Ingredients, указывает какой ингредиент поставляет данный поставщик

2.2.2.13 Table_Cars:

Таблица содержит в себе данные о машинах, используемых компанией для доставки.

Рисунок 20. Таблица машин компании

Поля таблицы:

  1. Cars_ID – (integer) уникальный идентификатор машины, используемый в системе. Является первичным ключом и индексом.
  2. Cars_Drivers_ID – (integer) ID водителя данной машины. Является внешним ключом, связывающим данную таблицу с таблицей Table_Drivers.
  3. Cars_Model – (varchar) модель машины
  4. Cars_YearFrom – (datetime) год покупки машины
  5. Cars_Distance – (integer) пробег машины за время работы в компании по доставке.
  6. Cars_NumberOfRepairs - (integer) число ремонтов данной машины
  7. Cars_Overseers_ID – (integer) каждая машина привязана к определенному диспетчеру. Поле является внешним ключом для связи с таблицей Table_Overseers

2.2.2.14 Table_Overseers:

Таблица будет содержать в себе данные о диспетчерах, контролирующих поток заказов и назначающих их на машины.

Рисунок 21. Таблица диспетчеров

Поля таблицы:

  1. Overseers_ID – (integer) уникальный идентификатор диспетчера в системе. Является первичным ключом и индексом БД
  2. Overseers_Name – (varchar) ФИО диспетчера
  3. Overseer_Age – (integer) возраст диспетчера
  4. Overseers_WorkingFrom – (datetime) дата приема диспетчера на работу
  5. Overseers_OrdersCount – (integer) число заказов, обработанных данным диспетчером

2.2.2.15 Table_Drivers:

Таблица содержит в себе данные о водителях, нанятых на работу в ресторан.

Рисунок 22. Таблица водителей

Поля таблицы:

  1. Drivers_ID – (integer) уникальный идентификатор водителя в системе. Является первичным ключом.
  2. Drivers_Name – (varchar) ФИО водителя
  3. Drivers_Age – (integer) возраст водителя
  4. Drivers_Experience – (integer) водительский стаж
  5. Drivers_WorkingFrom – (datetime) дата приема водителя на работу
  6. Drivers_OrdersCount – (integer) количество заказов, выполненных водителем

2.2.3 Использование структуры данных в ИС

Приведенная выше структура данных хранит в себе всю необходимую информацию для корректной работы системы по всем аспектам доставки. Система предназначена для постоянного обновления списков заказов и поставок (Tables_Batches, Table_Orders), на основе которых и выполняется главная часть обоих БП. Остальные таблицы хранят вспомогательную информацию (имена диспетчеров и водителей, рецепты), которая имеет не меньшую важность, но обновляется намного реже двух главных таблиц.

В основном система будет работать именно с Table_Orders и Table_Batches, т.к. они хранят в себе большую часть необходимой для выполнения заказа информации, остальные будут использоваться лишь при необходимости. Это означает, что большая часть функционала будет оптимизирована для работы с двумя главными таблицами.

Реализация проекта. Схема взаимодействия форм в приложении

В данном параграфе приведена часть описания выполнения одного из наиболее важных процессов ресторана – транспортировки заказав, а именно получения и назначения заказов на машину. Всего в приложении сервера задействовано 8 форм, как показано на рисунке 23.