В современном деловом мире эффективность функционирования предприятия напрямую зависит от скорости, точности и своевременности обмена данными. Автоматизированные системы управления (АСУ) становятся ключевым инструментом для организации информационных потоков, а ядром любой такой системы является грамотно спроектированная база данных. Она позволяет не только систематизировать данные, но и значительно повысить точность их ведения и оптимизировать управленческие процессы. Особенно актуальна эта задача для таких сложных и критически важных направлений, как бюджетное планирование. Именно поэтому целью данной курсовой работы является проектирование и разработка реляционной базы данных, предназначенной для полной автоматизации деятельности отдела бюджетного планирования предприятия.
Теперь, когда цель определена, необходимо глубоко погрузиться в специфику работы бюджетного отдела, чтобы наши решения были не теоретическими, а практическими.
Глава 1. Проводим системный анализ предметной области
Любое качественное проектирование начинается не с создания таблиц, а с глубокого понимания бизнес-процессов. Этот этап, известный как системный анализ, является фундаментом для всей будущей архитектуры. Его задача — формализовать требования и перевести их с языка бизнеса на язык технических спецификаций. Деятельность отдела бюджетного планирования включает сбор и анализ данных о расходах, доходах, а также формирование прогнозов и контроль за распределением ресурсов.
Ключевые функции отдела можно свести к следующему:
- Формирование и утверждение бюджетов для различных проектов или департаментов.
- Учет всех финансовых операций (транзакций) и их отнесение к соответствующим статьям бюджета.
- Мониторинг исполнения бюджета в режиме реального времени.
- Подготовка аналитической отчетности для руководства.
На основе этих функций мы можем выделить основные информационные объекты (сущности), с которыми предстоит работать нашей базе данных:
- Проекты/Департаменты: объекты бюджетирования, для которых формируется бюджет.
- Статьи доходов и расходов: классификаторы для всех финансовых поступлений и трат.
- Транзакции: конкретные финансовые операции (платежи, поступления).
- Сотрудники: лица, ответственные за бюджеты и проведение транзакций.
- Бюджеты: плановые показатели по статьям на определенный период.
Соответственно, будущая система должна хранить всю эту информацию и обеспечивать выполнение таких операций, как расчет фактических расходов по проекту за квартал, формирование отчета о превышении лимитов или вывод списка самых затратных статей. На основе этого анализа мы можем перейти к следующему этапу.
Глава 2. Строим концептуальную и логическую модели данных
После анализа предметной области наступает самый важный этап — создание формальной модели данных. Здесь мы используем ER-диаграммы (Entity-Relationship), которые служат визуальным языком для описания структуры базы данных, ее сущностей и связей между ними. ER-модель позволяет наглядно представить архитектуру будущей системы еще до написания кода.
Для нашего отдела бюджетирования концептуальная модель будет включать уже выделенные сущности:
- Сотрудники (Employees): хранит информацию о сотрудниках.
- Проекты (Projects): содержит список проектов, за каждый из которых отвечает определенный сотрудник.
- СтатьиРасходов (ExpenseCategories): справочник статей, по которым ведутся траты.
- Транзакции (Transactions): основная таблица, фиксирующая каждую операцию.
Связи между ними будут выглядеть так: один «Сотрудник» может руководить несколькими «Проектами» (связь один-ко-многим). В рамках одного «Проекта» может быть множество «Транзакций», и каждая «Транзакция» относится к одной «СтатьеРасходов».
Следующий критически важный шаг — нормализация. Это процесс организации таблиц с целью уменьшения избыточности и устранения потенциальных аномалий при обновлении, вставке или удалении данных. Цель нормализации — привести структуру к виду, где каждый факт хранится только в одном месте. Мы последовательно приводим наши таблицы к третьей нормальной форме (3НФ). Например, если бы в таблице «Транзакции» мы хранили не только ID ответственного сотрудника, но и его ФИО и должность, это было бы нарушением 3НФ. При смене должности нам пришлось бы обновлять все транзакции этого сотрудника. Нормализация требует вынести ФИО и должность в отдельную таблицу «Сотрудники», а в «Транзакциях» оставить только внешний ключ — ID сотрудника. Такой подход обеспечивает целостность и гибкость данных.
Имея на руках логически безупречную схему, мы готовы перейти к ее физической реализации в конкретной системе управления базами данных.
Глава 3. Переходим к физическому проектированию и выбору СУБД
Физическое проектирование — это этап, на котором абстрактная логическая модель превращается в конкретную схему для выбранной системы управления базами данных (СУБД). На рынке существует множество СУБД, каждая со своими особенностями: MS SQL Server отлично интегрируется с продуктами Microsoft, MySQL популярен в веб-разработке, а PostgreSQL славится своей мощью и расширяемостью. Для учебного проекта оптимальным выбором может стать PostgreSQL или даже MS Access, так как они доступны и обладают всем необходимым функционалом для реализации нашей задачи.
Обосновав выбор СУБД (например, PostgreSQL за его надежность и бесплатность), мы создаем финальные спецификации таблиц. На этом шаге мы определяем точные имена полей, типы данных и накладываем ограничения целостности.
Например, для таблицы Транзакции (Transactions) спецификация может выглядеть так:
transaction_id
: INT, PRIMARY KEY (первичный ключ, уникальный идентификатор записи).project_id
: INT, FOREIGN KEY (внешний ключ, ссылается на таблицу Projects).category_id
: INT, FOREIGN KEY (внешний ключ, ссылается на таблицу ExpenseCategories).amount
: DECIMAL(10, 2), NOT NULL (сумма операции, не может быть пустой).transaction_date
: DATE, NOT NULL (дата операции).description
: VARCHAR(255) (краткое описание).
Аналогично детализируются все остальные таблицы. Определение первичных (PRIMARY KEY) и внешних (FOREIGN KEY) ключей является критически важным, так как именно они реализуют связи, спроектированные на ER-диаграмме, и обеспечивают целостность данных на физическом уровне.
Глава 4. Реализуем структуру базы данных с помощью SQL DDL
Теоретическая часть завершена, и мы приступаем к реализации. Для создания структуры нашей базы данных используется SQL (Structured Query Language) — стандартный язык для взаимодействия с реляционными базами данных. В частности, нам понадобится его подмножество DDL (Data Definition Language), команды которого позволяют создавать и изменять объекты БД.
Ниже приведены примеры SQL-кода для создания ключевых таблиц нашего проекта. Синтаксис наглядно демонстрирует, как спецификации из предыдущей главы воплощаются в жизнь.
Таблица Сотрудники (Employees):
CREATE TABLE Employees (
employee_id INT PRIMARY KEY,
full_name VARCHAR(100) NOT NULL,
position VARCHAR(100)
);
Таблица Проекты (Projects):
CREATE TABLE Projects (
project_id INT PRIMARY KEY,
project_name VARCHAR(150) NOT NULL,
manager_id INT,
budget DECIMAL(15, 2),
FOREIGN KEY (manager_id) REFERENCES Employees(employee_id)
);
Таблица Транзакции (Transactions):
CREATE TABLE Transactions (
transaction_id INT PRIMARY KEY,
project_id INT NOT NULL,
amount DECIMAL(10, 2) NOT NULL,
transaction_date DATE NOT NULL,
description VARCHAR(255),
FOREIGN KEY (project_id) REFERENCES Projects(project_id)
);
Как видно из кода, команда CREATE TABLE
определяет новую таблицу. PRIMARY KEY
задает уникальный идентификатор для каждой записи, а FOREIGN KEY
устанавливает связь с другой таблицей, обеспечивая ссылочную целостность данных. База данных создана, но пока она пуста. Чтобы проверить ее работоспособность и продемонстрировать ее пользу, необходимо наполнить ее тестовыми данными и выполнить запросы, имитирующие реальные задачи бюджетного отдела.
Глава 5. Демонстрируем работу системы через SQL-запросы
Созданная структура доказывает свою состоятельность только тогда, когда она позволяет эффективно решать бизнес-задачи. Для этого мы сначала наполним таблицы тестовыми данными с помощью команд `INSERT`, а затем напишем несколько SQL-запросов для извлечения и анализа информации. Это ключевой раздел практической части курсовой, демонстрирующий, что база данных действительно работает.
1. Наполнение данными (пример):
INSERT INTO Employees (employee_id, full_name, position) VALUES (1, 'Иванов Иван Иванович', 'Менеджер проектов');
INSERT INTO Projects (project_id, project_name, manager_id, budget) VALUES (101, 'Разработка нового ПО', 1, 500000.00);
INSERT INTO Transactions (transaction_id, project_id, amount, transaction_date) VALUES (1001, 101, 25000.00, '2025-07-15');
2. Решение бизнес-задач с помощью SQL:
После наполнения таблиц мы можем имитировать реальные запросы от руководства.
Задача 1: Получить общую сумму расходов по проекту «Разработка нового ПО» (ID 101).
SELECT SUM(amount) AS total_expenses
FROM Transactions
WHERE project_id = 101;
Этот запрос просуммирует значения в колонке `amount` для всех записей, где `project_id` равен 101.
Задача 2: Вывести топ-5 самых затратных проектов.
SELECT
p.project_name,
SUM(t.amount) AS total_expenses
FROM Transactions t
JOIN Projects p ON t.project_id = p.project_id
GROUP BY p.project_name
ORDER BY total_expenses DESC
LIMIT 5;
Здесь мы уже используем соединение таблиц (`JOIN`), группировку (`GROUP BY`) и сортировку (`ORDER BY`), чтобы получить осмысленный аналитический отчет. Такие запросы являются отличной демонстрацией возможностей спроектированной базы данных.
Заключение
В ходе выполнения данной курсовой работы мы прошли полный цикл проектирования базы данных: от системного анализа бизнес-требований до практической реализации и тестирования. Мы последовательно выполнили все ключевые этапы: изучили предметную область отдела бюджетного планирования, построили концептуальную ER-модель, выполнили ее нормализацию до третьей нормальной формы, спроектировали физическую структуру и реализовали ее с помощью SQL.
Главный вывод заключается в том, что спроектированная реляционная база данных успешно решает поставленную задачу автоматизации сбора, хранения и обработки информации для отдела бюджетного планирования. Таким образом, основная цель работы была достигнута.
В качестве дальнейшего развития проекта можно рассмотреть следующие шаги. Во-первых, создание полноценного пользовательского интерфейса (GUI), который позволит сотрудникам отдела работать с данными без необходимости писать SQL-запросы. Во-вторых, интеграцию с BI-системами (Business Intelligence) для построения интерактивных дашбордов и визуализации финансовой отчетности, что выведет аналитические возможности системы на новый уровень.
Финальным штрихом является правильное оформление всей проделанной работы в виде пояснительной записки.
Приложение. Как должна выглядеть структура пояснительной записки
Корректное оформление — неотъемлемая часть любой академической работы. Пояснительная записка к курсовому проекту по базам данных обычно имеет стандартную структуру, которая логически отражает этапы выполнения проекта. Рекомендуется придерживаться следующего плана:
- Титульный лист: Оформляется по стандарту вашего учебного заведения.
- Задание на курсовую работу: Официальный бланк с темой, целями и сроками.
- Аннотация/Реферат: Краткое изложение сути работы, ключевых результатов и выводов (1-2 абзаца).
- Содержание: Автоматически генерируемый список всех разделов с указанием страниц.
- Введение: Обоснование актуальности темы, постановка цели и задач, описание объекта и предмета исследования.
- Основная часть: Как правило, делится на главы, соответствующие этапам проектирования.
- Глава 1. Анализ предметной области: Описание бизнес-процессов, выявление информационных потоков и формулировка требований к системе.
- Глава 2. Проектирование базы данных: Включает разработку концептуальной (ER-диаграммы) и логической моделей, а также описание процесса нормализации.
- Глава 3. Реализация и тестирование: Содержит описание выбора СУБД, листинги SQL-кода (DDL для создания таблиц, DML для демонстрации запросов) и результаты выполнения тестовых запросов.
- Заключение: Подведение итогов, формулировка основных выводов о достижении цели работы, обозначение перспектив развития проекта.
- Список использованных источников: Перечень всей литературы, статей и веб-ресурсов, на которые есть ссылки в тексте, оформленный по ГОСТу.
- Приложения: Сюда выносятся крупные ER-диаграммы, полные листинги SQL-кода и другие вспомогательные материалы, загромождающие основной текст.
Список использованных источников
Все теоретические положения, заимствованные из внешних работ, должны быть подкреплены ссылками на авторитетные источники. Библиографический список — обязательный раздел курсовой работы, демонстрирующий глубину проработки темы. Ниже приведен пример оформления.
- Дейт, К. Дж. Введение в системы баз данных. 8-е изд. – М.: Вильямс, 2018. – 1328 с.
- Гарсиа-Молина, Г., Ульман, Дж., Уидом, Дж. Системы баз данных. Полный курс. – М.: Вильямс, 2019. – 1088 с.
- Коннолли, Т., Бегг, К. Базы данных. Проектирование, реализация и сопровождение. Теория и практика. – 3-е изд. – М.: Вильямс, 2017. – 1436 с.
- ГОСТ 7.1–2003. Библиографическая запись. Библиографическое описание. Общие требования и правила составления. – Введ. 2004-07-01. – М.: Изд-во стандартов, 2004. – 48 с.
- Грубер, М. Понимание SQL. – М.: Лори, 2021. – 332 с.
- Проектирование и разработка баз данных: современные подходы // Системы управления базами данных. – 2024. – № 2. – С. 15-25.
- Сайт сообщества PostgreSQL [Электронный ресурс]. URL: https://www.postgresql.org/ (дата обращения: 10.08.2025).
Список литературы
- Чумак Б.Б. Лекции по курсу «Базы данных» 2010
- Т.В. Мусина «Visual FoxPro 8.0 Учебный курс – К.: ВЕК+, СПб: КОРОНА принт, К.: НТИ, 2004 – 464 с.»