В условиях современного рынка, где скорость и точность принятия решений играют критическую роль, эффективное управление запасами становится одним из ключевых факторов конкурентоспособности предприятий. Ошибки в учете или несвоевременное получение информации об остатках могут привести к серьезным экономическим потерям: от замораживания оборотного капитала до срывов производственных планов и потери клиентов. Именно поэтому автоматизация учета запасов и точный расчет остатков изделий являются насущной потребностью для любого производственного или торгового предприятия. Из этого следует, что инвестиции в подобные системы не просто желательны, а экономически обоснованы и быстро окупаемы, поскольку напрямую влияют на финансовую устойчивость и операционную эффективность.
Настоящая курсовая работа посвящена проектированию и реализации информационной системы, предназначенной для расчета остатков заданного изделия по кварталам. Её главная цель — предоставить студентам технического или экономического вуза исчерпывающее руководство по созданию такой системы, начиная от глубокого анализа предметной области и заканчивая детальным описанием методов тестирования и обеспечения безопасности. Мы стремимся не просто изложить теоретические основы, но и предложить конкретные алгоритмы и примеры SQL-запросов, а также рассмотреть уникальные аспекты физической реализации и комплексные подходы к защите данных, что зачастую упускается в стандартных методических материалах. Таким образом, эта работа призвана стать ценным практическим пособием, позволяющим не только успешно выполнить курсовой проект, но и получить глубокое понимание всех этапов создания информационных систем для реальных бизнес-задач.
Анализ предметной области и постановка задачи
Описание предметной области
Предприятие, для которого разрабатывается информационная система, занимается производством и/или реализацией некоторого ассортимента изделий, требующих строгого учета. В рамках его деятельности постоянно происходят процессы поступления новых партий изделий на склад (например, от поставщиков или из производства) и их отгрузки (клиентам, в другие подразделения или на экспорт). Существующая система учета, будь то ручная, полуавтоматизированная или использующая устаревшее программное обеспечение, часто страдает от ряда недостатков: неточности данных, длительное время на формирование отчетов, сложности с оперативным получением информации об остатках на конкретную дату или за определенный период. Это создает риск избыточных запасов, дефицита, а также затрудняет планирование закупок и производства. Для повышения эффективности управления необходимо обеспечить централизованный, точный и оперативный учет, а также возможность анализировать движение и остатки изделий в разрезе кварталов, поскольку именно квартальные срезы позволяют проводить стратегическое планирование и оценку производительности.
Методы сбора и анализа требований
Эффективность любой информационной системы напрямую зависит от того, насколько точно и полно были определены требования к ней на начальных этапах. В контексте проектирования системы для расчета остатков изделий сбор и анализ требований является критически важным шагом. Этот процесс начинается с глубокого погружения в предметную область, выделения ключевых бизнес-процессов и элементов данных, которые будут обрабатываться системой.
Для сбора требований используются разнообразные методы, позволяющие получить наиболее полную картину:
- Интервью: Прямое общение с ключевыми стейкхолдерами — сотрудниками склада, менеджерами по закупкам и продажам, бухгалтерами, руководством. Это могут быть как личные встречи, так и телефонные звонки. Цель — выявить их потребности, ожидания, существующие проблемы и желаемые функции системы. Важно задавать открытые вопросы, чтобы получить максимально подробные ответы.
- Наблюдение за пользователями: Непосредственное наблюдение за рабочими процессами сотрудников, которые будут использовать систему. Это позволяет увидеть реальные сценарии использования, выявить неявные сложности и «узкие места», которые могли быть не озвучены при интервью. Например, наблюдение за работой кладовщика при приемке товара может выявить необходимость оперативного внесения данных о поступлении.
- Анализ существующей документации: Изучение внутренних документов предприятия: накладных, актов приема-передачи, отчетов о движении товаров, регламентов складского учета, учетной политики. Это дает понимание текущей структуры данных, правил их обработки и требований к формированию отчетности.
- Моделирование бизнес-процессов: Для формализации выявленных требований и их наглядного представления применяются специализированные нотации и диаграммы:
- BPMN (Business Process Modeling & Notation): Используется для графического представления бизнес-процессов, таких как «Поступление товара на склад» или «Отгрузка товара клиенту». Позволяет четко определить последовательность операций, исполнителей, точки принятия решений и потоки информации.
- UML (Unified Modeling Language) диаграммы:
- Диаграммы вариантов использования (Use Case Diagram): Отражают функциональные возможности системы с точки зрения конечных пользователей. Например, «Расчет остатков изделия на складе», «Ввод данных о поступлении», «Формирование отчета по движению».
- Диаграммы классов (Class Diagram): Позволяют смоделировать структуру данных системы, определяя классы (сущности), их атрибуты и взаимосвязи. Это непосредственный шаг к проектированию базы данных.
- Диаграммы последовательности (Sequence Diagram): Демонстрируют взаимодействие объектов системы во времени для выполнения конкретного сценария. Например, как происходит процесс расчета остатков при запросе пользователя.
- Диаграммы потоков данных (DFD – Data Flow Diagram): Отображают движение данных между внешними сущностями, процессами, хранилищами данных внутри системы. Помогают понять, откуда данные поступают, как обрабатываются и куда направляются.
Эти методы позволяют не только собрать разрозненные сведения, но и структурировать их, выявить противоречия и пробелы, а затем формализовать в виде конкретных требований.
Формулирование требований к информационной системе
После тщательного сбора и анализа информации необходимо четко сформулировать требования к будущей информационной системе. Они делятся на несколько категорий:
- Функциональные требования: Описывают, что система должна уметь делать. Это конкретные действия и операции, которые пользователи будут выполнять в системе.
- Примеры для системы учета остатков:
- Система должна обеспечивать регистрацию поступлений изделий на склад с указанием даты, количества, поставщика, номера документа.
- Система должна обеспечивать регистрацию отгрузок изделий со склада с указанием даты, количества, получателя, номера документа.
- Система должна позволять вводить и редактировать информацию об изделиях (наименование, артикул, единица измерения).
- Система должна позволять вводить и редактировать информацию о складах.
- Система должна рассчитывать текущие остатки изделий на каждом складе.
- Система должна рассчитывать остатки заданного изделия на заданном складе до конца заданного квартала с учетом начальных остатков, всех поступлений и отгрузок в течение этого квартала.
- Система должна формировать отчеты по движению изделий за период (например, квартал).
- Система должна формировать отчеты по текущим остаткам изделий на складах.
- Система должна предоставлять возможность поиска и фильтрации данных по различным критериям (изделие, склад, дата, квартал).
- Примеры для системы учета остатков:
- Нефункциональные требования: Описывают, насколько хорошо система должна работать, касаясь качественных атрибутов.
- Производительность: Система должна обрабатывать запросы на расчет остатков для 1000 изделий и 5000 операций движения (поступлений/отгрузок) за не более чем 5 секунд. Интерфейс должен загружаться не более чем за 2 секунды.
- Безопасность: Система должна обеспечивать разграничение прав доступа для разных категорий пользователей (например, оператор склада, бухгалтер, администратор). Данные о движении и остатках должны быть защищены от несанкционированного доступа и изменения посредством аутентификации и авторизации. Важные данные могут требовать шифрования.
- Масштабируемость: Система должна быть способна обрабатывать рост объема данных (например, увеличение количества изделий и операций в 2-3 раза) без существенного снижения производительности.
- Удобство использования (юзабилити): Пользовательский интерфейс должен быть интуитивно понятным, с минимальным количеством шагов для выполнения основных операций. Должна быть предусмотрена система подсказок и сообщений об ошибках.
- Доступность: Система должна быть доступна 24/7, за исключением плановых технических работ, о которых пользователи предупреждаются заранее.
- Надежность: Система должна быть устойчива к сбоям и обеспечивать сохранность данных в случае непредвиденных ситуаций (например, сбоя электропитания).
- Восстанавливаемость: Должна быть предусмотрена возможность быстрого восстановления данных из резервных копий в случае их потери или повреждения.
- Требования к внешним интерфейсам: Система должна интегрироваться с существующими системами учета (например, 1С:Предприятие) для обмена данными о номенклатуре или контрагентах, если это необходимо.
- Бизнес-требования: Определяют глобальные цели и выгоды проекта для бизнеса.
- Снижение ошибок в учете запасов на 20%.
- Сокращение времени на формирование отчетности по остаткам на 50%.
- Обеспечение оперативного принятия решений по закупкам и продажам на основе точных данных.
- Снижение затрат на хранение избыточных запасов.
- Пользовательские требования: Отражают ожидания конкретных групп пользователей.
- Оператор склада: Быстрый ввод данных о поступлениях и отгрузках, простой интерфейс для поиска изделий.
- Бухгалтер: Возможность формирования отчетов для сверки с бухгалтерским учетом.
- Менеджер по закупкам: Доступ к актуальным остаткам для планирования заказов.
Четкое формулирование этих требований является фундаментом для успешного проектирования и реализации информационной системы, обеспечивая соответствие конечного продукта ожиданиям пользователей и целям бизнеса.
Проектирование базы данных
Проектирование базы данных — это центральный этап в создании любой информационной системы, особенно для задач учета остатков изделий, где точность и целостность данных имеют первостепенное значение. Этот процесс включает три основные стадии: концептуальное, логическое и физическое проектирование, каждая из которых имеет свои уникальные цели и методологии.
Концептуальное (инфологическое) проектирование
Начальная стадия проектирования, известная как концептуальное или инфологическое проектирование, фокусируется на глубинном анализе предметной области и выявлении требований к ней. Главная задача здесь — создать независимое от конкретной СУБД или аппаратной платформы представление о данных, их взаимосвязях и правилах, управляющих ими.
Центральным инструментом на этом этапе является ER-диаграмма (Entity-Relationship Diagram – диаграмма «сущность-связь»). ER-диаграмма визуально отображает ключевые сущности предметной области, их атрибуты и типы связей между ними.
Для нашей системы учета остатков изделий по кварталам можно выделить следующие основные сущности:
- Изделия: Каждое изделие имеет уникальный идентификатор (например,
КодИзделия), наименование (НаименованиеИзделия), артикул (Артикул), единицу измерения (ЕдиницаИзмерения). - Склады: Каждый склад имеет
КодСклада,НаименованиеСклада,АдресСклада. - Поступления: Записывают факт поступления изделий. Атрибуты:
КодПоступления,ДатаПоступления,Количество,КодИзделия(внешний ключ к Изделиям),КодСклада(внешний ключ к Складам),НомерДокументаПоступления,Поставщик. - Отгрузки: Записывают факт отгрузки изделий. Атрибуты:
КодОтгрузки,ДатаОтгрузки,Количество,КодИзделия(внешний ключ к Изделиям),КодСклада(внешний ключ к Складам),НомерДокументаОтгрузки,Получатель. - Остатки: Данные об остатках могут быть как текущими, так и расчетными на конец периода. Для расчета по кварталам, возможно, потребуется таблица для хранения начальных остатков на начало каждого квартала или расчетная таблица для хранения агрегированных данных. Атрибуты:
КодОстатка,КодИзделия,КодСклада,КодКвартала(внешний ключ к Кварталам),НачальныйОстаток,КонечныйОстаток. - Кварталы: Для удобства работы с квартальной аналитикой можно ввести отдельную сущность. Атрибуты:
КодКвартала,Год,НомерКвартала,ДатаНачалаКвартала,ДатаКонцаКвартала.
Пример связей:
- Изделия <— 1:N —> Поступления (Одно изделие может поступать много раз)
- Склады <— 1:N —> Поступления (На один склад может поступать много изделий)
- Изделия <— 1:N —> Отгрузки (Одно изделие может отгружаться много раз)
- Склады <— 1:N —> Отгрузки (С одного склада может отгружаться много изделий)
- Изделия <— 1:N —> Остатки
- Склады <— 1:N —> Остатки
- Кварталы <— 1:N —> Остатки
Помимо сущностей и связей, на этом этапе определяются правила, регулирующие поведение данных, процессов и интерфейса:
- Правила для данных: Эти правила представляют собой ограничения целостности, которые гарантируют корректность и непротиворечивость хранимой информации.
- Уникальность первичного ключа: Каждый
КодИзделия,КодСклада,КодПоступления,КодОтгрузкидолжен быть уникальным. - Ссылочная целостность (внешние ключи): Например,
КодИзделияв таблицахПоступленияиОтгрузкидолжен ссылаться на существующийКодИзделияв таблицеИзделия. Это предотвращает «осиротевшие» записи. - Типы данных: Для каждого атрибута определяются соответствующие типы данных. Например,
Количествоможет бытьINTEGERилиDECIMAL,НаименованиеИзделия—VARCHAR(255),ДатаПоступления—DATETIME. - Ограничения на значения: Например,
Количествоне может быть отрицательным.ДатаПоступленияне может быть в будущем.
- Уникальность первичного ключа: Каждый
- Правила для процессов: Это бизнес-правила, которые описывают логику работы системы и влияют на её поведение.
- Пример: «Нельзя отгрузить изделие, если его остаток на складе меньше или равен нулю.»
- Могут быть определены процедуры, инициируемые СУБД (например, автоматическое обновление расчетных остатков после каждого поступления/отгрузки) или запускаемые пользователем (например, процедура ежеквартального формирования отчета).
- Правила для интерфейса: Принципы, обеспечивающие удобство и эффективность взаимодействия пользователя с системой.
- Плотность дисплея: Элементы интерфейса должны быть расположены логично, без перегрузки, с использованием адекватных отступов (например, шаг в 8dp).
- Минимизация линий и рамок: Избегание избыточных визуальных элементов, которые могут отвлекать и усложнять читаемость.
- Контраст: Достаточный контраст между текстом и фоном для повышения доступности.
- Язык, знакомый пользователям: Использование терминологии, привычной для сотрудников предприятия, а не чисто технических жаргонизмов.
- Логическая структура форм: Поля ввода данных должны быть сгруппированы по смыслу, содержать только необходимые элементы и сопровождаться понятными инструкциями.
- Валидация данных: Автоматическая проверка вводимых данных (например, числовое значение в поле «Количество», корректный формат даты) для предотвращения ошибок на этапе ввода.
Логическое (даталогическое) проектирование
Эта стадия является мостом между концептуальной моделью и физической реализацией. Здесь концептуальное представление трансформируется в логическую структуру базы данных, соответствующую выбранной модели данных — в нашем случае, реляционной. На этом эта��е создаются схемы отношений (будущие таблицы) и проводится их нормализация.
Основные шаги:
- Преобразование ER-диаграммы в реляционную модель: Каждая сущность на ER-диаграмме становится таблицей, а её атрибуты — столбцами таблицы. Связи между сущностями реализуются через внешние ключи.
- Пример: Сущность «Изделия» превращается в таблицу
Изделиясо столбцамиКодИзделия(первичный ключ),НаименованиеИзделия,Артикул,ЕдиницаИзмерения. - Связь «Поступления» с «Изделиями» реализуется добавлением столбца
КодИзделия(внешний ключ) в таблицуПоступления.
- Пример: Сущность «Изделия» превращается в таблицу
- Создание схем отношений (таблиц): Определение всех таблиц, их первичных и внешних ключей, типов данных для каждого столбца.
- Нормализация базы данных: Это ключевой процесс на стадии логического проектирования, направленный на устранение избыточности и дублирования данных, а также на предотвращение аномалий при операциях вставки, обновления и удаления. Цель нормализации — сделать структуру базы данных более эффективной, надежной и легкой для модификации. База данных обычно нормализуется как минимум до третьей нормальной формы (3НФ).
Рассмотрим основные нормальные формы:
- Первая нормальная форма (1НФ): Таблица находится в 1НФ, если:
- Все столбцы содержат атомарные (неделимые) значения. Это означает, что в одной ячейке не может быть списка значений или составных данных.
- Таблица не содержит повторяющихся групп столбцов.
- Каждая строка уникальна и идентифицируется уникальным первичным ключом.
- Пример устранения аномалии для учета остатков: Если бы у нас была таблица «Запасы» с полями
КодИзделия,НаименованиеИзделия,Склад1_Остаток,Склад2_Остаток, это нарушало бы 1НФ из-за повторяющихся групп «СкладN_Остаток». Решение: создать отдельную таблицу «ОстаткиНаСкладах» с полямиКодИзделия,КодСклада,Остаток.
- Вторая нормальная форма (2НФ): Таблица находится в 2НФ, если она находится в 1НФ, и все неключевые атрибуты полностью зависят от первичного ключа. Это означает, что если первичный ключ составной (состоит из нескольких столбцов), то ни один неключевой атрибут не должен зависеть только от части первичного ключа.
- Пример: Предположим, у нас есть таблица «Поступления» (
КодПоступления,КодИзделия,НаименованиеИзделия,Количество,ДатаПоступления). Первичный ключ —КодПоступления.НаименованиеИзделиязависит только отКодИзделия, который является частью ключа, но не от всегоКодПоступления. Это нарушает 2НФ. - Решение: Вынести
КодИзделияиНаименованиеИзделияв отдельную таблицу «Изделия», а в «Поступлениях» оставить толькоКодИзделиякак внешний ключ.
- Пример: Предположим, у нас есть таблица «Поступления» (
- Третья нормальная форма (3НФ): Таблица находится в 3НФ, если она находится в 2НФ, и исключает транзитивные зависимости. Транзитивная зависимость возникает, когда неключевой атрибут зависит от другого неключевого атрибута.
- Пример: Таблица «Склады» (
КодСклада,НаименованиеСклада,АдресСклада,РуководительСклада,ТелефонРуководителя). ЗдесьТелефонРуководителязависит отРуководительСклада, который сам является неключевым атрибутом, а не отКодСклада. Это транзитивная зависимость. - Решение: Вынести информацию о руководителях (и их телефонах) в отдельную таблицу «Сотрудники», а в таблице «Склады» оставить внешний ключ
КодРуководителя.
- Пример: Таблица «Склады» (
Нормализация значительно уменьшает избыточность, улучшает целостность данных и упрощает их модификацию, но может привести к увеличению количества таблиц и, как следствие, к усложнению запросов, требующих соединений (JOIN).
Физическое проектирование
На этом заключительном этапе проектирования принимается решение о том, как логическая модель будет реализована в конкретной СУБД на физическом уровне. Здесь определяются реальные структуры хранения данных на диске, выбирается СУБД, разрабатывается схема БД, задаются параметры таблиц и индексов, а также прорабатываются средства защиты системы.
- Выбор СУБД: Выбор СУБД (например, MS Access, SQL Server, MySQL, PostgreSQL, Oracle) критически важен.
- MS Access: Хорош для небольших проектов, курсовых работ, где требуется быстрое развертывание и невысокие требования к производительности и масштабируемости. Имеет встроенный графический интерфейс для создания форм и отчетов.
- SQL Server, MySQL, PostgreSQL, Oracle: Мощные, высокопроизводительные системы для корпоративного уровня, обеспечивающие высокую масштабируемость, безопасность и надежность. Требуют более глубоких знаний SQL и администрирования.
- Обоснование выбора: Для курсовой работы, ориентированной на студента, MS Access часто является оптимальным выбором из-за своей простоты, доступности и интегрированных средств разработки. Если же проект подразумевает более серьезные требования к производительности и работе с большим объемом данных, то стоит отдать предпочтение одной из серверных СУБД.
- Физическая структура хранения данных:
- Основные единицы хранения: На физическом уровне данные хранятся в блоках данных (или страницах), которые являются наименьшими единицами обмена данными между диском и оперативной памятью. Несколько блоков могут объединяться в экстенты, а экстенты формируют файлы базы данных. На логическом уровне эти файлы организуются в пространства (или табличные пространства).
- Структурированные файлы хранения: Наиболее часто используемые структуры включают:
- «Кучи» (Heaps): Простейшая структура, где записи хранятся в произвольном порядке. Подходит для небольших таблиц, где порядок данных не важен.
- Хеш-корзины (Hash Buckets): Используют хеш-функцию для быстрого поиска записей по ключу. Эффективны для точного поиска по равенству, но не для диапазонных запросов.
- B+-деревья (B+-trees): Являются наиболее распространенной и универсальной структурой. Они оптимизированы для эффективных операций равенства, диапазона и сортировки, поскольку все данные хранятся в листьях дерева, а внутренние узлы используются только для навигации.
- ISAM (Indexed Sequential Access Method): Старая, но все еще встречающаяся структура, сочетающая последовательный и индексированный доступ.
- Методы доступа к данным:
- Последовательный доступ: Просмотр всех записей таблицы от начала до конца. Эффективен для обработки небольших таблиц или для запросов, требующих обработки всех данных.
- Прямой доступ: Позволяет мгновенно выбрать нужную запись, основываясь на значении ключа или индекса.
- Индексно-последовательный доступ: Комбинирует прямой доступ (для поиска начальной точки) и последовательный (для просмотра группы смежных записей). Требует наличия индекса.
- Разработка индексов: Индексы — это механизмы, значительно ускоряющие доступ к данным в таблицах. Они создают упорядоченные структуры (чаще всего B-деревья), которые хранят значения индексированных полей и указатели на соответствующие записи в таблице.
- Типы индексов: Основным типом являются B-деревья (или их вариации, такие как B+деревья). Они особенно эффективны для ускорения запросов
SELECT(выборка),WHERE(фильтрация по условию),JOIN(соединение таблиц) иORDER BY(сортировка). - Влияние на производительность: Использование индексов значительно ускоряет операции чтения данных. Однако они могут замедлять операции модификации данных (
INSERT,UPDATE,DELETE), поскольку при каждом изменении данных необходимо обновлять и связанные индексы. Поэтому важно разумно подходить к созданию индексов, индексируя только те поля, которые часто используются в условиях поиска, сортировки или соединений. - Примеры для нашей системы: Индексы на
КодИзделияв таблицахИзделия,Поступления,Отгрузки; наКодСкладавСклады,Поступления,Отгрузки; наДатаПоступленияиДатаОтгрузкидля ускорения выборки данных за определенный квартал.
- Типы индексов: Основным типом являются B-деревья (или их вариации, такие как B+деревья). Они особенно эффективны для ускорения запросов
- Средства защиты создаваемой системы: Обеспечение безопасности базы данных критически важно для защиты конфиденциальности, целостности и доступности данных.
Какие же риски возникают при пренебрежении комплексной защитой? Без надлежащих мер безопасности данные могут быть украдены, изменены или уничтожены, что приведет не только к финансовым потерям, но и к ущербу репутации, а также юридическим последствиям.
- Технические средства защиты:
- Разграничение доступа: Создание ролей пользователей с дифференцированными правами доступа. Например, оператор склада может только вводить поступления и отгрузки, бухгалтер — формировать отчеты, администратор — управлять структурой БД. Доступ может быть ограничен на уровне таблиц, строк и даже отдельных полей.
- Аутентификация: Проверка подлинности пользователей (логин/пароль, двухфакторная аутентификация).
- Шифрование: Преобразование конфиденциальных данных (например, информации о поставщиках или клиентах) в нечитаемый вид. Может применяться на уровне всей базы данных (TDE — Transparent Data Encryption), на уровне отдельных столбцов или при передаче данных по сети (SSL/TLS).
- Аудит и мониторинг: Регистрация всех действий пользователей и системных событий (логирование). Системы DAM (Database Activity Monitoring) позволяют отслеживать подозрительную активность в реальном времени.
- Резервное копирование и восстановление: Регулярное создание резервных копий данных и разработка процедур быстрого восстановления в случае сбоев.
- Межсетевые экраны баз данных (DBF – Database Firewall): Специализированные решения, отслеживающие и блокирующие несанкционированные SQL-запросы или подозрительные действия, защищая серверы БД как от внешних, так и от внутренних угроз.
- Автоматизированные системы защиты: Инструменты для сканирования и выявления уязвимостей в СУБД, таких как устаревшие патчи, слабые пароли или незаблокированные учетные записи.
- Административные/процедурные средства защиты:
- Политика безопасности данных: Разработка и внедрение внутренних регламентов и правил по работе с данными, обучению персонала, реагированию на инциденты безопасности.
- Регулярный мониторинг уязвимостей: Проведение периодических аудитов и тестов на проникновение для выявления новых угроз.
- Организация физической безопасности: Защита серверов БД от несанкционированного доступа, стихийных бедствий, пожаров (контроль доступа к серверным помещениям, системы пожаротушения, кондиционирования).
Физическое проектирование требует глубокого понимания особенностей выбранной СУБД и внимательного отношения к деталям, поскольку от него напрямую зависит производительность, надежность и безопасность всей информационной системы.
Разработка алгоритмов и SQL-запросов для расчета остатков
Ключевой функциональностью нашей информационной системы является точный расчет остатков заданного изделия по кварталам. Для этого необходима разработка как четкого алгоритма, так и его эффективной реализации средствами SQL.
Алгоритм расчета остатков
Расчет остатков изделия на складе до конца заданного квартала требует последовательного учета нескольких факторов: начального остатка, всех поступлений и всех отгрузок за период.
Представим пошаговый алгоритм:
- Определение начальных параметров:
- Заданное изделие (по
КодИзделия). - Заданный склад (по
КодСклада). - Заданный квартал (по
ГодиНомерКвартала). - Определить
ДатаНачалаКварталаиДатаКонцаКварталадля заданного квартала (например, для 1го квартала 2025 года это 01.01.2025 и 31.03.2025).
- Заданное изделие (по
- Получение начального остатка на начало заданного квартала:
- Найти количество заданного изделия на заданном складе на
ДатуНачалаКвартала(или на самый близкий к ней предыдущий зафиксированный остаток, если прямого значения нет). Если система не ведет историю начальных остатков, то этот шаг будет более сложным: потребуется просуммировать все поступления и вычесть все отгрузки для этого изделия и склада за весь период доДатыНачалаКвартала. Для упрощения, предположим, что либо есть запись о начальном остатке на 01.01 текущего года, либо он известен и равен 0, если до этого периода движения не было. Для данного алгоритма будем исходить из наличия некоегоНачальногоОстатканаДатуНачалаКвартала.
- Найти количество заданного изделия на заданном складе на
- Сбор данных о поступлениях за квартал:
- Выбрать все записи из таблицы
Поступлениядля заданного изделия и склада, гдеДатаПоступлениянаходится в диапазоне отДатыНачалаКварталадоДатыКонцаКварталавключительно. - Просуммировать
Количествовсех этих поступлений, чтобы получитьСуммаПоступленийЗаКвартал.
- Выбрать все записи из таблицы
- Сбор данных об отгрузках за квартал:
- Выбрать все записи из таблицы
Отгрузкидля заданного изделия и склада, гдеДатаОтгрузкинаходится в диапазоне отДатыНачалаКварталадоДатыКонцаКварталавключительно. - Просуммировать
Количествовсех этих отгрузок, чтобы получитьСуммаОтгрузокЗаКвартал.
- Выбрать все записи из таблицы
- Расчет конечного остатка на конец квартала:
КонечныйОстаток = НачальныйОстаток + СуммаПоступленийЗаКвартал - СуммаОтгрузокЗаКвартал.
- Обработка возможных исключений:
- Если
НачальныйОстатокне найден или равен 0, аСуммаПоступленийЗаКварталиСуммаОтгрузокЗаКварталтакже равны 0, тоКонечныйОстаток= 0. - Если
КонечныйОстатокпо расчету получается отрицательным, это может указывать на ошибку в исходных данных (например, отгрузка превысила фактическое наличие) или на необходимость введения механизма контроля остатков.
- Если
Этот алгоритм может быть реализован как отдельная функция или процедура в приложении, так и непосредственно в СУБД (например, в виде хранимой процедуры).
Реализация SQL-запросов
Рассмотрим конкретные SQL-запросы, которые реализуют описанный алгоритм. Предполагается следующая структура таблиц:
- Изделия:
КодИзделия(PK),НаименованиеИзделия - Склады:
КодСклада(PK),НаименованиеСклада - Поступления:
КодПоступления(PK),КодИзделия(FK),КодСклада(FK),ДатаПоступления,Количество - Отгрузки:
КодОтгрузки(PK),КодИзделия(FK),КодСклада(FK),ДатаОтгрузки,Количество - Кварталы:
КодКвартала(PK),Год,НомерКвартала,ДатаНачалаКвартала,ДатаКонцаКвартала - НачальныеОстаткиКвартала:
КодНачальногоОстатка(PK),КодИзделия(FK),КодСклада(FK),КодКвартала(FK),КоличествоНаНачалоКвартала
1. Выборка данных о поступлениях и отгрузках за квартал:
Для получения общей суммы поступлений заданного изделия на заданный склад в конкретном квартале:
SELECT
SUM(P.Количество) AS СуммаПоступлений
FROM
Поступления AS P
JOIN
Изделия AS I ON P.КодИзделия = I.КодИзделия
JOIN
Склады AS S ON P.КодСклада = S.КодСклада
JOIN
Кварталы AS K ON P.ДатаПоступления BETWEEN K.ДатаНачалаКвартала AND K.ДатаКонцаКвартала
WHERE
I.КодИзделия = [ЗаданныйКодИзделия]
AND S.КодСклада = [ЗаданныйКодСклада]
AND K.Год = [ЗаданныйГод]
AND K.НомерКвартала = [ЗаданныйНомерКвартала];
Для получения общей суммы отгрузок заданного изделия с заданного склада в конкретном квартале:
SELECT
SUM(O.Количество) AS СуммаОтгрузок
FROM
Отгрузки AS O
JOIN
Изделия AS I ON O.КодИзделия = I.КодИзделия
JOIN
Склады AS S ON O.КодСклада = S.КодСклада
JOIN
Кварталы AS K ON O.ДатаОтгрузки BETWEEN K.ДатаНачалаКвартала AND K.ДатаКонцаКвартала
WHERE
I.КодИзделия = [ЗаданныйКодИзделия]
AND S.КодСклада = [ЗаданныйКодСклада]
AND K.Год = [ЗаданныйГод]
AND K.НомерКвартала = [ЗаданныйНомерКвартала];
2. Расчет конечного остатка по каждому изделию на каждом складе для каждого квартала:
Для агрегированного расчета конечного остатка по всем изделиям, складам и кварталам, можно использовать более сложный запрос, который объединяет все необходимые данные. Этот запрос может быть основой для формирования отчета или сохранения агрегированных данных в отдельную таблицу РасчетныеОстатки.
SELECT
I.КодИзделия,
I.НаименованиеИзделия,
S.КодСклада,
S.НаименованиеСклада,
K.Год,
K.НомерКвартала,
COALESCE(NO.КоличествоНаНачалоКвартала, 0) AS НачальныйОстаток,
COALESCE(SUM(P.Количество), 0) AS СуммаПоступленийЗаКвартал,
COALESCE(SUM(O.Количество), 0) AS СуммаОтгрузокЗаКвартал,
(COALESCE(NO.КоличествоНаНачалоКвартала, 0) + COALESCE(SUM(P.Количество), 0) - COALESCE(SUM(O.Количество), 0)) AS КонечныйОстаток
FROM
Изделия AS I
CROSS JOIN
Склады AS S
CROSS JOIN
Кварталы AS K
LEFT JOIN
НачальныеОстаткиКвартала AS NO
ON I.КодИзделия = NO.КодИзделия
AND S.КодСклада = NO.КодСклада
AND K.КодКвартала = NO.КодКвартала
LEFT JOIN
Поступления AS P
ON I.КодИзделия = P.КодИзделия
AND S.КодСклада = P.КодСклада
AND P.ДатаПоступления BETWEEN K.ДатаНачалаКвартала AND K.ДатаКонцаКвартала
LEFT JOIN
Отгрузки AS O
ON I.КодИзделия = O.КодИзделия
AND S.КодСклада = O.КодСклада
AND O.ДатаОтгрузки BETWEEN K.ДатаНачалаКвартала AND K.ДатаКонцаКвартала
GROUP BY
I.КодИзделия, I.НаименованиеИзделия,
S.КодСклада, S.НаименованиеСклада,
K.Год, K.НомерКвартала,
NO.КоличествоНаНачалоКвартала
ORDER BY
I.КодИзделия, S.КодСклада, K.Год, K.НомерКвартала;
Пояснения к запросу:
CROSS JOINмеждуИзделиями,СкладамииКварталамисоздает декартово произведение, обеспечивая, что мы рассмотрим каждое изделие на каждом складе для каждого квартала.LEFT JOINиспользуется для подключенияНачальныхОстатковКвартала,ПоступленийиОтгрузок. Это гарантирует, что даже если для какого-либо изделия/склада/квартала не было поступлений или отгрузок, они все равно будут включены в результат с нулевыми значениями.- Функция
COALESCE(выражение, 0)заменяетNULLзначения на 0, что критически важно при суммировании и расчетах, где отсутствие записей должно интерпретироваться как нулевое количество. GROUP BYагрегирует данные по каждому уникальному сочетанию изделия, склада и квартала.SUM(P.Количество)иSUM(O.Количество)рассчитывают общие суммы поступлений и отгрузок.- Конечный остаток рассчитывается по формуле:
НачальныйОстаток + СуммаПоступленийЗаКвартал - СуммаОтгрузокЗаКвартал.
Эти запросы представляют собой основу для аналитической части системы, позволяя не только получать текущие данные, но и проводить ретроспективный анализ движения запасов, что является бесценным инструментом для управления.
Разработка пользовательского интерфейса (форм) и отчетов
Эффективность информационной системы не ограничивается только корректностью расчетов и надежностью хранения данных; не менее важным является удобство взаимодействия пользователя с системой. Это достигается за счет тщательно продуманного пользовательского интерфейса (форм ввода данных) и наглядных, информативных отчетов.
Проектирование форм ввода данных
Формы ввода данных — это основной инструмент для операторов системы, через который они взаимодействуют с базой данных, внося новую информацию или корректируя существующую. Качество проектирования форм напрямую влияет на скорость работы, количество ошибок и общее удовлетворение пользователей.
Принципы UI-дизайна и валидации данных, определенные на этапе концептуального проектирования, находят свое практическое воплощение:
- Простота и интуитивность:
- Минимализм: Формы должны содержать только необходимые поля. Избегайте лишних элементов, которые могут отвлекать или усложнять.
- Логическая группировка: Поля следует группировать по смыслу. Например, все данные об изделии в одной секции, о поступлении — в другой. Это можно реализовать с помощью визуальных разделителей, вкладок или фреймов.
- Последовательность: Порядок полей должен соответствовать естественной последовательности ввода информации или бизнес-процессу.
- Ясные метки: Каждое поле должно иметь короткую, четкую и понятную метку.
- Эффективность ввода:
- Использование списков и выпадающих меню: Для полей, имеющих ограниченный набор значений (например,
ЕдиницаИзмерения,КодИзделия,КодСклада), используйте выпадающие списки (ComboBox) или списки с автодополнением, чтобы минимизировать ручной ввод и предотвратить опечатки. - Автоматическое заполнение: Если возможно, некоторые поля могут заполняться автоматически на основе выбора других полей (например, после выбора
КодИзделияавтоматически подтягиваетсяНаименованиеИзделия). - Клавиатурная навигация: Поддержка навигации с помощью клавиш
TabиEnterдля быстрого перемещения между полями.
- Использование списков и выпадающих меню: Для полей, имеющих ограниченный набор значений (например,
- Визуальная обратная связь:
- Подтверждение действия: После успешного сохранения данных должно появляться сообщение о подтверждении (например, «Данные успешно сохранены»).
- Сообщения об ошибках: В случае некорректного ввода данных, система должна немедленно выводить четкое и понятное сообщение об ошибке, указывая, какое поле заполнено неверно и почему.
- Валидация данных: Это критически важный элемент, обеспечивающий целостность базы данных. Валидация должна быть реализована на нескольких уровнях:
- Клиентская (на уровне формы): Проверка данных до их отправки в базу данных.
- Примеры: Проверка на обязательное заполнение полей (например,
Количествоне может быть пустым), проверка типа данных (в полеКоличестводолжно быть число), проверка диапазона значений (количество не может быть отрицательным), формат даты.
- Примеры: Проверка на обязательное заполнение полей (например,
- Серверная (на уровне СУБД/бизнес-логики): Более сложная валидация, включающая проверку бизнес-правил и ссылочной целостности.
- Примеры: Проверка существования
КодИзделияиКодСкладав соответствующих справочниках, проверка возможности отгрузки (доступного остатка на складе), уникальность ключевых полей.
- Примеры: Проверка существования
- Клиентская (на уровне формы): Проверка данных до их отправки в базу данных.
Примеры форм:
- Форма ввода поступления: Поля:
ДатаПоступления(с календарём),КодИзделия(ComboBox с поиском по наименованию),НаименованиеИзделия(только для чтения, автозаполнение),КодСклада(ComboBox),Количество,НомерДокумента,Поставщик. - Форма ввода отгрузки: Аналогична форме поступления, но с проверкой текущего остатка.
- Форма управления изделиями: Поля:
КодИзделия,НаименованиеИзделия,Артикул,ЕдиницаИзмерения. С возможностью добавления, редактирования и удаления. - Форма управления складами: Поля:
КодСклада,НаименованиеСклада,АдресСклада.
Проектирование отчетов
Отчеты являются конечным продуктом информационной системы для менеджеров и руководства, предоставляя агрегированные и аналитические данные. Они должны быть наглядными, легко читаемыми и содержать всю необходимую информацию для принятия решений.
При проектировании отчетов следует учитывать:
- Четкая структура: Отчеты должны иметь заголовок, дату формирования, четко обозначенные разделы и итоговые значения.
- Наглядность: Использование таблиц, графиков и диаграмм (если это применимо) для визуализации данных.
- Фильтрация и сортировка: Возможность настраивать параметры отчета (период, изделие, склад) перед его генерацией.
- Экспорт: Возможность экспортировать отчеты в популярные форматы (PDF, Excel) для дальнейшего анализа или печати.
Макеты отчетов для нашей системы:
- Отчет по текущим остаткам:
- Заголовок: «Текущие остатки изделий на складах (по состоянию на
[ТекущаяДата]) « - Таблица:
Код Изделия Наименование Изделия Код Склада Наименование Склада Текущий Остаток Единица Измерения ИЗД-001 Болт М8 СКЛ-01 Главный склад 1250 шт. ИЗД-002 Гайка М8 СКЛ-01 Главный склад 1500 шт. ИЗД-001 Болт М8 СКЛ-02 Удаленный склад 300 шт. … … … … … … - Итоговая строка: «Общее количество изделий:
[X]«
- Заголовок: «Текущие остатки изделий на складах (по состоянию на
- Отчет по движению изделий за квартал:
- Заголовок: «Движение изделия
[НаименованиеИзделия]на складе[НаименованиеСклада]за[Год][НомерКвартала]« - Таблица:
Дата Тип операции Номер документа Количество Поставщик/Получатель 01.01.2025 Поступление ПР-001 500 ООО «Металл» 15.01.2025 Отгрузка ОГ-003 200 ЗАО «Строитель» 05.02.2025 Поступление ПР-002 300 ИП «Торг» … … … … … - Итоговая строка: «Всего поступлений:
[X]шт., Всего отгрузок:[Y]шт.»
- Заголовок: «Движение изделия
- Отчет по рассчитанным остаткам на конец квартала:
- Заголовок: «Расчетные остатки изделий на складах на конец
[НомерКвартала][Год]« - Таблица:
Код Изделия Наименование Изделия Код Склада Наименование Склада Начальный Остаток Поступления за квартал Отгрузки за квартал Конечный Остаток ИЗД-001 Болт М8 СКЛ-01 Главный склад 1000 700 450 1250 ИЗД-002 Гайка М8 СКЛ-01 Главный склад 1200 800 500 1500 … … … … … … … … - Итоговая строка: «Общий конечный остаток по всем изделиям:
[Z]шт.»
- Заголовок: «Расчетные остатки изделий на складах на конец
Разработка интуитивно понятных форм и информативных отчетов является завершающим штрихом в создании функциональной и полезной информационной системы.
Тестирование информационной системы и обеспечение безопасности
Создание информационной системы — это только половина дела. Чтобы система была надежной, корректной и защищенной, необходимо провести всестороннее тестирование и реализовать комплексные меры по обеспечению безопасности данных. Эти этапы критически важны для успешного внедрения и долгосрочной эксплуатации системы.
Методы и сценарии тестирования
Тестирование — это процесс проверки соответствия разработанной системы заданным требованиям и выявления дефектов. Оно должно быть систематическим и охватывать различные аспекты функциональности и производительности.
Основные методы тестирования:
- Функциональное тестирование: Проверка того, что каждая функция системы работает так, как было задумано, согласно функциональным требованиям.
- Сценарии для системы учета остатков:
- Ввод данных: Проверить корректность ввода нового изделия, склада, поступления, отгрузки. Убедиться, что все обязательные поля заполняются, а данные сохраняются в БД.
- Редактирование/удаление: Проверить возможность изменения и удаления записей. Например, изменить количество в поступлении, удалить запись об отгрузке.
- Расчет остатков: Самый важный сценарий. Ввести контрольные данные (начальный остаток, несколько поступлений и отгрузок за квартал) и вручную рассчитать ожидаемый конечный остаток. Затем сравнить его с результатом, выданным системой.
- Формирование отчетов: Проверить, что отчеты генерируются с правильными данными, соответствуют макетам и корректно фильтруются по заданным параметрам (дата, изделие, склад).
- Валидация данных: Проверить работу всех правил валидации, как на уровне формы (например, попытка ввести текст в числовое поле), так и на уровне бизнес-логики (например, попытка отгрузить количество, превышающее текущий остаток).
- Сценарии для системы учета остатков:
- Интеграционное тестирование: Проверка взаимодействия между различными модулями системы, а также между системой и внешними компонентами (если применимо).
- Сценарии:
- Проверить, как изменение записи в таблице
Изделиявлияет на отображение в формахПоступленийиОтгрузок. - Убедиться, что при сохранении
Поступленияданные корректно учитываются при расчете остатков.
- Проверить, как изменение записи в таблице
- Сценарии:
- Нагрузочное тестирование: Оценка производительности системы под возрастающей нагрузкой, чтобы убедиться, что она может справляться с ожидаемым объемом операций и пользователей.
- Сценарии: Имитировать одновременный ввод большого количества поступлений и отгрузок. Измерить время выполнения запросов на расчет остатков для больших объемов данных (например, 10 000 операций).
- Тестирование безопасности: Проверка уязвимостей системы к несанкционированному доступу, модификации или потере данных.
- Сценарии:
- Попытка доступа к функциям администратора под учетной записью обычного пользователя.
- Проверка устойчивости к SQL-инъекциям (для серверных СУБД).
- Проверка корректности работы механизмов аутентификации и авторизации.
- Сценарии:
- Тестирование пользовательского интерфейса (UI/UX): Оценка удобства использования, интуитивности, соответствия UI-стандартам.
- Сценарии:
- Проверка навигации по формам, корректности отображения элементов.
- Оценка ясности сообщений об ошибках и подсказок.
- Проверка адаптивности интерфейса (если система предполагается для разных устройств).
- Сценарии:
Для каждого сценария тестирования должны быть определены входные данные, ожидаемый результат и критерии успешности. Использование тестовых таблиц с заранее подготовленными данными значительно упрощает процесс проверки.
Обеспечение безопасности базы данных
Обеспечение безопасности данных — это непрерывный процесс, который должен быть интегрирован на всех этапах жизненного цикла информационной системы. Для системы учета остатков, где хранятся критически важные для бизнеса данные, безопасность является приоритетом.
Технические средства защиты (реализуемые на уровне СУБД и инфраструктуры):
- Разграничение доступа: Это фундамент безопасности.
- Идентификация и аутентификация: Каждый пользователь должен иметь уникальный логин и пароль. Рекомендуется использовать сложные пароли, многофакторную аутентификацию (MFA).
- Авторизация и управление привилегиями: Создание ролей с минимально необходимыми правами доступа (принцип наименьших привилегий). Например:
Оператор склада: ТолькоINSERT,UPDATEв таблицыПоступления,Отгрузки.SELECTизИзделия,Склады.Бухгалтер:SELECTиз всех таблиц,EXECUTEдля процедур формирования отчетов.Администратор БД: Полные права на управление БД, но ограниченные права на бизнес-операции.
- Реализуется это через команды
GRANT/REVOKEв SQL для серверных СУБД или через встроенные механизмы безопасности в MS Access.
- Шифрование данных: Защита данных как при хранении, так и при передаче.
- Шифрование на уровне столбцов: Для особо чувствительной информации (например, данные поставщиков, требующие конфиденциальности).
- Шифрование на уровне базы данных (TDE — Transparent Data Encryption): Шифрует всю базу данных на диске, обеспечивая защиту от прямого доступа к файлам БД.
- Шифрование трафика: Использование SSL/TLS для защиты данных, передаваемых между клиентским приложением и сервером БД.
- Аудит и мониторинг активности БД:
- Системный аудит: СУБД должна вести логи всех значимых событий: попыток входа в систему (успешных/неуспешных), изменения структуры БД, доступа к критически важным данным.
- Мониторинг активности баз данных (DAM – Database Activity Monitoring): Независимые системы, отслеживающие все запросы к БД в реальном времени, выявляя аномалии и подозрительные действия (например, попытки выполнения нестандартных команд, доступ к данным, к которым пользователь обычно не обращается).
- Резервное копирование и восстановление:
- Регулярное создание резервных копий: Автоматизированное создание полных, дифференциальных и инкрементальных копий данны��.
- Стратегия восстановления: Разработка и тестирование планов восстановления данных после сбоев (потеря данных, повреждение, атаки). Хранение резервных копий в безопасном, географически распределенном месте.
- Межсетевые экраны баз данных (DBF – Database Firewall): Специализированные фаерволы, которые анализируют SQL-трафик, блокируют вредоносные запросы, защищают от SQL-инъекций, DoS-атак и других угроз.
- Автоматизированные системы сканирования уязвимостей: Инструменты, которые регулярно проверяют СУБД на наличие известных уязвимостей, таких как неверные настройки, устаревшие версии ПО, слабые пароли, открытые порты, отсутствие патчей.
Административные/процедурные меры защиты (организационные аспекты):
- Политика безопасности данных: Разработка комплексного документа, регламентирующего правила использования, хранения, обработки и защиты данных. Включает:
- Процедуры управления учетными записями и паролями.
- Правила реагирования на инциденты безопасности.
- Порядок проведения аудитов и мониторинга.
- Требования к обучению персонала.
- Обучение персонала: Все пользователи системы должны быть обучены основам информационной безопасности, правилам работы с конфиденциальными данными и процедурам действий в случае инцидентов.
- Физическая безопасность серверов и данных:
- Контроль доступа к серверным помещениям (биометрические системы, видеонаблюдение).
- Защита от стихийных бедствий (пожаротушение, системы климат-контроля).
- Ограничение доступа к носителям информации.
- Регулярное обновление ПО: Своевременное применение патчей и обновлений для СУБД и операционной системы, чтобы устранять выявленные уязвимости.
Комплексный подход к тестированию и обеспечению безопасности гарантирует, что разработанная информационная система будет не только функциональной и эффективной, но и надежной, способной защитить ценные бизнес-данные.
Заключение
В рамках данной курсовой работы была детально проработана задача проектирования и реализации информационной системы для расчета остатков заданного изделия по кварталам. Мы прошли все ключевые этапы жизненного цикла базы данных, начиная от глубокого анализа предметной области и формулирования требований, до разработки алгоритмов, создания пользовательского интерфейса, методов тестирования и обеспечения комплексной безопасности.
Основной целью работы было не только представить теоретические основы, но и предложить максимально детализированное и практикоориентированное руководство. Это выразилось в подробном рассмотрении таких аспектов, как конкретные методы сбора и анализа требований (BPMN, UML, DFD), детальное описание правил для данных, процессов и интерфейса на концептуальном этапе, углубленный анализ физической реализации с рассмотрением различных структур хранения и методов доступа к данным, а также исчерпывающий перечень технических и административных мер по обеспечению безопасности. Особое внимание было уделено разработке пошагового алгоритма и конкретных SQL-запросов для расчета остатков изделий по кварталам, что является центральной функциональностью системы.
Практическая значимость разработанной системы заключается в ее способности обеспечить оперативный, точный и надежный учет запасов, что критически важно для эффективного управления предприятием. Автоматизация процессов расчета остатков значительно сократит трудозатраты, минимизирует вероятность ошибок, позволит принимать обоснованные решения в области закупок, производства и продаж.
Перспективы дальнейшего развития системы включают:
- Интеграцию с другими корпоративными системами: Например, с системами бухгалтерского учета (1С:Предприятие) для автоматического обмена данными о поставщиках, клиентах и номенклатуре.
- Расширение аналитических возможностей: Добавление модулей прогнозирования спроса, анализа оборачиваемости запасов, оптимизации складских запасов.
- Разработка веб-интерфейса: Для обеспечения удаленного доступа и работы с системой с различных устройств.
- Мобильное приложение: Для оперативного ввода данных кладовщиками непосредственно на складе.
Таким образом, данная курсовая работа является не просто учебным проектом, но и фундаментом для создания реальной, масштабируемой и надежной информационной системы, способной существенно повысить эффективность управления запасами на любом предприятии. Насколько такая система может изменить к лучшему операционную деятельность компании, превосходя ожидания руководства?
Список использованной литературы
- Дейт, К. Введение в системы баз данных / К. Дж. Дейт. – 8-е изд. – М. : Вильяме, 2006. – 1326 с.
- Джеффри, Д. Ульман. Основы реляционных баз данных / Д. Ульман, Д. Уидом. – М. : Лори, 2006.
- Дунаев, В. В. Базы данных. Язык SQL / В. В. Дунаев. – СПб. : BHV, 2006. – 288 с.
- Зрюмов, Е. А. Базы данных для инженеров : учебное пособие / Е. А. Зрюмов, А. Г. Зрюмова; Алт. гос. техн. ун-т им. И. И. Ползунова. – Барнаул : Изд-во АлтГТУ, 2010. – 131 с.
- Кевин, Кл. SQL: справочник / Кл. Кевин. – 2-е изд. – М. : Кудиц-Образ, 2006. – 832 с.
- Конноли, Т. Базы данных. Проектирование, реализация и сопровождение. Теория и практика / Т. Конноли, К. Бегг. – М. : Вильямс, 2000. – 1111 с.
- Макарова, Н. Компьютерное делопроизводство. Учебный курс / Н. Макарова, Г. Николайчук, Ю. Титова. – М. : Питер, 2009. – 416 с.
- Питер, Р. Системы баз данных: проектирование, реализация и управление / Р. Питер, К. Коронел. – СПб. : БХВ-Петербург, 2004.
- Нормализация базы данных: для чего нужна нормализованная бд. – Режим доступа: https://gitverse.blog/normalizaciya-bazy-dannyh/
- Нормализация данных: что это и зачем их нормировать — правила нормирования данных в БД. – Режим доступа: https://practicum.yandex.ru/blog/chto-takoe-normalizaciya-dannyh/
- Примеры и принципы нормализации реляционных баз данных (БД). – Режим доступа: https://decosystems.ru/blog/primery-i-principy-normalizacii-relyacionnyh-baz-dannyh-bd/
- Что такое нормализация базы данных? – Режим доступа: https://academyit.ru/articles/chto-takoe-normalizaciya-bazy-dannyh/
- Нормализация баз данных SQL и зачем её нормализовать. – Режим доступа: https://decosystems.ru/blog/normalizaciya-baz-dannyh-sql-i-zachem-eyo-normalizovat/
- Проектирование реляционных баз данных: основные принципы. – Режим доступа: https://habr.com/ru/articles/651333/
- Стружкин, Н. П. Базы данных: проектирование / Н. П. Стружкин, В. В. Годин. – Юрайт.
- Проектирование реляционных баз данных / Московский институт электроники и математики им. А.Н. Тихонова. – Режим доступа: https://miem.hse.ru/data/2018/11/27/1149726244/Лекция%206%20Проектирование%20реляционных%20баз%20данных.pdf
- Методика проектирования реляционных баз данных. – Режим доступа: https://cyberleninka.ru/article/n/metodika-proektirovaniya-relyatsionnyh-baz-dannyh/viewer
- Концептуальное, логическое и физическое проектирование базы данных. – Режим доступа: http://e-learning.bmstu.ru/iu6/course3/book/7.1.2.html
- Основные этапы проектирования баз данных. – Режим доступа: https://cyberleninka.ru/article/n/osnovnye-etapy-proektirovaniya-baz-dannyh/viewer
- Жизненный цикл данных: что такое, из каких этапов он состоит, как им управлять. – Режим доступа: https://skillfactory.ru/blog/zhiznennyy-tsikl-dannyh
- Моделирование данных: обзор. – Режим доступа: https://habr.com/ru/companies/sbercloud/articles/718330/
- Принципы построения баз данных. Жизненный цикл баз данных. – Режим доступа: https://bd-subd.ru/theory/lekcii/tema-3-principy-postroeniya-baz-dannyh-zhiznennyj-cikl-baz-dannyh/
- Методология проектирования и создания баз данных для современного программного обеспечения. – Режим доступа: https://7universum.com/ru/tech/archive/item/4207
- Проектирование базы данных, Жизненный цикл базы данных. – Режим доступа: https://bstudy.ru/docs/index-6825.html
- Базы данных. Проектирование и создание. – Режим доступа: https://www.calc.ru/bazy-dannykh-proektirovanie-i-sozdanie.html
- Теория и практика проектирования баз данных : учебное пособие.
- Проектирование баз данных: основные этапы, методы и модели БД. – Режим доступа: https://decosystems.ru/blog/proektirovanie-baz-dannyh-osnovnye-etapy-metody-i-modeli-bd/
- Войтюк, Т. Е. Основы проектирования реляционных баз данных средствами инструментальной среды / Т. Е. Войтюк, И. С. Осетрова. – Учебные издания.
- Физическое проектирование базы данных. – Режим доступа: https://scienceforum.ru/2017/article/2017032626
- Основы проектирования баз данных в САПР. – Режим доступа: https://www.tstu.ru/user/kozak/cad/db/index_db.htm
- Базы данных. – Режим доступа: https://ru.bntu.by/university/faculties/fitr/kitp/db
- Реферат на тему «Жизненный цикл базы данных». – Режим доступа: https://scienceforum.ru/2017/article/2017032626
- Проектирование информационных систем. – Режим доступа: https://lib.bntu.by/wp-content/uploads/2021/01/Проектирование-ИС-методичка_final.pdf
- Методология проектирования информационных систем. – Режим доступа: https://abit.omgau.ru/upload/iblock/c38/z99a0913v68w55gihj4218i33x66v3q5.pdf
- Проектирование информационной системы склада. – Режим доступа: https://scienceforum.ru/2019/article/2018016422
- Проектирование Информационных систем. Часть 1. Введение. – Режим доступа: https://habr.com/ru/articles/734346/
- Разработка информационной системы для учета и сопровождения заказов (на примере ООО «Гранит»). – Режим доступа: https://www.bsu.ru/upload/iblock/582/d060e227-d0d4-4f05-b778-e56598c1ef1e.pdf