Министерство науки и высшего образования Российской Федерации ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Институт непрерывного профессионального образования Кафедра программного обеспечения вычислительной техники и автоматизированных систем КУРСОВАЯ РАБОТА по дисциплине «Базы данных и системы управления базами данных» Проектирование и разработка базы данных автоматизированной информационной системы предприятия ОГУ 09.03.04. 3023. 417 ПЗ Преподаватель _________ подпись Д.В. Горбачев «____» _______________ 2023 г. Студент группы З-21ПИнж(б)РПиС(у)(инпо) _________ Д. Р. Хаертдинова подпись «____» _______________ 2023 г Оренбург 2023 Оглавление 1. Описание предметной области ........................................................................ 3 2. Анализ информационных потоков предметной области .............................. 4 2.1 Описание схемы взаимодействия подразделений предприятия ................... 4 2.2 Диаграмма потоков данных .............................................................................. 7 3. Выбор и обоснование технологии проектирования базы данных ............... 8 4. Техническое проектирование......................................................................... 11 4.1 Описание объектов базы данных и их взаимосвязей .................................. 11 4.2 Инфологическая модель данных ................................................................... 14 4.3 Обоснование СУБД. Даталогическая модель данных ................................. 16 4.4 Физическая модель данных ............................................................................ 18 4.5 Разработка запросов на выборку, изменение, обновление и удаление данных .................................................................................................................... 20 4.6 Разработка процедур обеспечения целостности БД .................................... 21 5 Интерфейсы взаимодействия с БД ................................................................... 22 Выводы по курсовой работе ................................................................................. 26 Список использованных источников ................................................................... 27 Приложение ........................................................................................................... 29 1 Описание предметной области Автоматизированная информационная система «Обслуживание заказов клиентов» Описание предметной области. Предприятие осуществляет доставку разных товаров населению. Прием заказов от населения осуществляет специальная служба предприятия. Для того чтобы стать потребителем услуг предприятия каждый абонент должен зарегистрироваться, при этом фиксируются его ФИО, адрес, телефон и паспортные данные (Серия, Номер, Дата выдачи, Кем выдан). Каждый абонент в течение дня может сделать несколько заказов (Дата, Время), заказу присваивается номер. В каждом заказе может содержаться несколько товаров, для каждого указывается количество товара, единица измерения, цена за единицу товара, общая стоимость товара. Заказ также имеет итоговую сумму. При формировании бланка заказа, который будет подписан абонентом при получении товара фиксируется, оплачен заказ, или абонент получает товар в кредит. Также на бланке заказа указывается: реквизиты предприятия; ФИО и должность оператора, приявшего заказ; ФИО, должность сотрудника, доставившего заказ. Необходимо осуществлять следующую обработку данных: список товаров (код, наименование), пользующихся наибольшим спросом (максимальное количество позиций заказов) у населения за заданный период; динамика изменения стоимости заданного товара за заданный период по месяцам; список наименований улиц, на которых проживают абоненты предприятия по убыванию числа абонентов. 2 Анализ информационных потоков предметной области 2.1 Описание схемы взаимодействия подразделений предприятия Организационная структура — это схема, по которой сотрудники, отделы и подразделения взаимодействуют между собой. Она определяет, кто и за что отвечает, кто с кем коммуницирует, кто ставит задачи сотрудникам, кто принимает решения. Информационные потоки между структурными подразделениями предприятия, между отдельными сотрудниками подразделений, а также с другими организациями и частными лицами, характеризуют работу организации и качество ее, поэтому к изучению информационных потоков должно быть привлечено особое внимание. Схема информационных потоков показывает, как происходит движение информации между отделами, подразделениями. Основное место в информационных потоках занимает формируемая вручную, или частично вручную документируемая информация. Пример схемы приведен на рисунке 1. Рисунок 1 – Схема информационных потоков Легенда: 1. Обращение клиента. 2. Прием и обработка заказа. 3. План для комплектации и упаковки товаров. 4. Отчет о сборе заказа, отчет о работе склада. 5. Расчет стоимости заказа. 6. Уведомление об отгрузке товаров на отправку, отчет о комплектовании 7. План распределения заказов на доставку курьерам. 8. Доставка заказов клиенту, бланк заказа, подписи. Функциональная модель IDEF0 представляет собой набор блоков, каждый из которых представляет собой «черный ящик» со входами и выходами, управлением и механизмами, которые детализируются (декомпозируются) до необходимого уровня. Наиболее важная функция расположена в верхнем левом углу. А соединяются функции между собой при помощи стрелок и описаний функциональных блоков. При этом каждый вид стрелки или активности имеет собственное значение. Данная модель позволяет описать все основные виды процессов, как административные, так и организационные. Стрелки могут быть: Входящие – вводящие, которые ставят определенную задачу. Исходящие – выводящие результат деятельности. Контроль (сверху вниз) – механизмы управления (положения, инструкции и пр). Механизмы (снизу вверх) – что используется для того, чтобы произвести необходимую работу. Декомпозиция используется при моделировании информационных систем для разделения функций на составляющие части. Диаграммы декомпозиции предназначены для детализации функций и получаются при разбиении контекстной диаграммы на крупные подсистемы (функциональная декомпозиция) и описывающие каждый подсистему и их взаимодействие. Пример диаграмм в нотации IDEF0 приведен на рисунках 2, 3. Рисунок 2 – Контекстная диаграмма процесса Рисунок 3 - Диаграмма декомпозиции процесса 1-го уровня 2.2 Диаграмма потоков данных DFD (data flow diagram) — диаграмма потоков данных, один из основных инструментов структурного анализа и проектирования информационных систем, существовавших еще до широкого распространения UML. Выделяют 4 элемента в диаграмме: 1. Процесс. Процессы, при которых идет изменение потока данных (обработка, трансформация и др. изменения). Процесс, как и в других диаграммах обычно прописывается с помощью глагола, например: “Отправка заполненной формы”. 2. Внешняя сущность. Сущность (объект), которая получает или отправляете данные при взаимодействии с описанным процессом. 3. Хранилище данных. Все хранилища данных или отдельные файлы, которые хранят исходные или выходные данные, а также все промежуточные хранилища. 4. Поток данных. Поток данных, который отображает направление и сами данные, которые перемещаются между внешними сущностями и хранилищами данных с помощью процессов. Пример диаграммы представлен на рисунке 4. Рисунок 4 – Диаграмма потоков данных 3 Выбор и обоснование технологии проектирования базы данных Основными подходами к проектированию систем БД являются восходящий метод и нисходящий метод проектирования. Суть первого способа заключается в структурном проектировании снизу—вверх. В данном процессе на основе описания частей осуществляется попытка получения целого, адекватно отображающего предметную область. При использовании восходящего подхода на первом этапе происходит выявление свойств объектов (атрибутов сущностей) предметной области. Проводится анализ связей между свойствами, на основании которого свойства объединяются в таблицы (реляционные отношения). Восходящий метод проектирования применяют в распределенных БД при интеграции спроектированных локальных баз данных. Для проектирования сложных БД преимущественно применяется нисходящий подход. При таком подходе работа начинается с подготовки моделей данных, содержащих несколько высокоуровневых сущностей и связей. После этого производятся нисходящие уточнения низкоуровневых сущностей, связей и атрибутов, относящихся к ним. Нисходящий подход используется в концепции метода проектирования «сущность-связь». В основе метода лежат три элемента: сущность, атрибут, связь. Работа начинается с выявления сущностей и связей между ними. Процесс построения баз данных методом «сущность-связь» включает в себя три этапа: концептуальное, логическое и физическое проектирование. Концептуальное проектирование БД – это процесс, результатом которого является создание модели имеющейся информации. Модель строится вне зависимости от любых физических аспектов ее представления. Такая модель данных формируется на основе информации, определенной в перечне требований пользователей. Особенности физической реализации (тип СУБД, язык программирования, тип вычислительной платформы и т.д.) на данном этапе не учитываются. На этапе логического проектирования БД происходит выбор модели организации данных, на основе которой создается модель используемой информации. Далее в концептуальную модель вносятся изменения и дополнения, и происходит преобразование в логическую модель данных. Созданная модель должна учитывать особенности организации данных в целевой СУБД (например, реляционная модель). На данном этапе должна быть определена целевая СУБД (реляционная, сетевая, иерархическая или объектно-ориентированная), так как построение логической модели происходит с учетом выбранной модели организации данных. С помощью метода нормализации происходит проверка правильности модели. Нормализация исключает избыточность данных, которая может привести к различным аномалиям в процессе обновления данных. Поддержка всех транзакций, которые необходимы пользователям, также должна обеспечиваться логической моделью. Физическое проектирование БД – это процесс, включающий в себя определение способов реализации и разработку описания конкретной реализации БД. В ходе данной стадии проектирования создается набор реляционных таблиц, определяется организация файлов и способы доступа к ним, а также анализируются ограничения целостности и разрабатываются средства защиты проектируемой БД. В данной работе применяется нисходящий подход. Для проведения анализа и реорганизации бизнес - процессов предназначено CASE-средство верхнего уровня AllFusion Process Modeler (BPwin), поддерживающее методологии: · IDEF0 (функциональная модель); · DFD (DataFlow Diagram); · IDEF3 (Workflow Diagram). Наиболее удобным языком моделирования бизнес-процессов является IDEF0, где система представляется как совокупность взаимодействующих работ или функций. Такая чисто функциональная ориентация является принципиальной. Функции системы анализируются независимо от объектов, которыми они оперируют. Это позволяет более четко смоделировать логику и взаимодействие процессов организации. Диаграммы потоков данных (Data Flow Diagrams) представляют сеть связанных между собой работ. Их удобно использовать для описания документооборота и обработки информации. Для автоматизации проектирования БД выбрано средство разработки Erwin. Продукт ERwin предназначен для разработчиков, проектировщиков БД, системных аналитиков. С помощью ERwin разработчик может сначала, используя визуальные средства, описать схему БД, а затем автоматически сгенерировать файлы данных для выбранной реляционной СУБД. Автоматически генерируются также триггеры, обеспечивающие ссылочную целостность БД. Поддерживаются хранимые процедуры. Возможна также обратная разработка — восстановление модели данных по имеющимся файлам БД. Методологическую основу ERwin составляют технология IDEF1X и ER диаграммы, или диаграммы «сущность-связь». Пользователь описывает структуру данных визуально. Он задает служащие прообразами реляционных таблиц сущности с их атрибутами и при помощи мыши «натягивает» между ними связи, которые являются прототипами реляционных отношений. Продукт ERwin не привязан к технологии какой-либо конкретной фирмы, поставляющей СУБД или средства разработки. Он поддерживает различные серверы баз данных и настольные СУБД, а также может обращаться к базе данных через ODBC. В ERwin встроена поддержка СУБД: Oracle; Sybase; Informix; CA Ingres; DB2, Rdb; Watcom; SQLBase; Microsoft SQL Server; AS/400; Progress; FoxPro; InterBase; dBASE; Clipper; Paradox; Access, MySQL. ERwin позволяет по уже существующим файлам БД восстанавливать логическую структуру данных. Обратная разработка позволяет, во-первых, переносить структуру БД (но не данные!) из одной СУБД в другую и, вовторых, исследовать старые проекты. Таким образом, использование ERwin существенно ускоряет создание БД. 4 Техническое проектирование 4.1 Описание объектов базы данных и их взаимосвязей База данных предназначена для предприятия, занимающейся обслуживанием заказов клиентов. В ней хранятся данные о клиентах, о заказах, о товарах, а также о сотрудниках предприятия. В ходе анализа первоначально можно выделить несколько сущностей и их атрибуты: клиенты (ФИО, адрес, телефон, паспортные данные); заказы (дата заказа, способ оплаты); товары (наименование, цена); сотрудники (ФИО, адрес, телефон, должность, ИНН); бланк заказов (дата доставки, стоимость заказа); заказано товаров (цена за единицу, количество). Формализованное описание предметной области необходимо для того, чтобы определить, какие данные будут в таблицах разрабатываемой БД, а также логические ограничения полей этих таблиц. В результате анализа предметной области выявляется ряд объектов, свойств и связей. Формат формализованного описания классов и объектов предметной области представлен в таблицах 1 и 2. Таблица 1 – Классы объектов и свойства Объект\Свойство Ключ 1 Клиенты Номер Тип свойства Ограничения Процессы Обязательность 3 4 5 6 2 УК1, ПК Числовой Целое > 0 ФИО Символьный Не более 50 Адрес Символьный Не более 50 Телефон Символьный Целое > 0 Серия паспорта Числовой Целое > 0 Номер паспорта Числовой Целое > 0 Дата выдачи Дата Кем выдан Символьный Не более 50 Сотрудники Номер УК1, ПК Числовой Целое > 0 Генер., Просм. Ввод, Просм., Корр. Ввод, Просм., Корр. Ввод, Просм., Корр. Ввод, Просм., Корр. Ввод, Просм., Корр. Ввод, Просм., Корр. Ввод, Просм., Корр. Д.Б. Генер., Просм. Д.Б. Д.Б. Д.Б. Д.Б. Д.Б. Д.Б. Д.Б. Д.Б. ФИО Символьный Не более 50 Адрес Символьный Не более 50 Телефон Числовой Должность Символьный Не более 50 ИНН Символьный Целое > 0 Товары Номер УК1, ПК Числовой Целое > 0 Целое > 0 Наименование Символьный Не более 50 Цена Числовой Целое > 0 Числовой Целое > 0 Заказы Номер УК1, ПК Дата заказа Дата Способ оплаты Символьный Не более 50 Бланк заказов Номер УК1, ПК Числовой Целое > 0 Дата доставки Дата Стоимость заказа Заказано товаров Номер УК1, ПК Количество Числовой Целое > 0 Числовой Целое > 0 Числовой Целое > 0 Ввод, Просм., Корр. Ввод, Просм., Корр. Ввод, Просм., Корр. Ввод, Просм., Корр. Ввод, Просм., Корр. Д.Б. Д.Б. Д.Б. Д.Б. Д.Б. Генер., Д.Б. Просм. Ввод, Просм., Д.Б. Корр. Ввод, Просм., Д.Б. Корр. Генер., Д.Б. Просм. Ввод, Просм., Д.Б. Корр. Ввод, Просм., Д.Б. Корр. Генер., Д.Б. Просм. Ввод, Просм., Д.Б. Корр. Ввод, Просм., Д.Б. Корр. Генер., Д.Б. Просм. Ввод, Просм., Д.Б. Корр. Таблица 2 – Связи между классами Связь классов объектов Главный 1 Клиент Клиент Заказ Заказ Подчиненный 2 Заказ Бланк заказа Бланк заказа Заказано товаров Товар Заказано товаров Сотрудник Заказ Название связи со стороны классов объектов Тип связи со стороны класса объекта Глав Подч 5 6 1 М 1 М 1 М 1 М Глав 3 имеет имеет имеет имеет Подч 4 соответствует соответствует соответствует соответствует имеет соответствует 1 имеет соответствует 1 Опциональность связи класса объекта Глав 7 М.б. М.б. М.б. М.б. Подч 8 Д.б. Д.б. Д.б. Д.б. М М.б. Д.б. М М.б. Д.б. 4.2 Инфологическая модель данных Инфологическое моделирование выполняется с целью обеспечения естественных для человека способов представления и сбора информации, которая будет храниться в создаваемой БД. Инфологическая модель данных строится в соответствии с естественным языком, который невозможно использовать в чистом виде в виду сложности обработки текстов с помощью компьютера и неоднозначности естественного языка. Инфологическая модель – это потоки информации, сущности и связи данной области. В такой модели указываются связи между сущностями данной предметной области. Сущность – это множество реальных или абстрактных объектов (людей, мест, событий), обладающих общими атрибутами или характеристиками. Атрибут – характеристика сущности. Каждый атрибут каждой сущности обладает уникальным именем. Сущность обладает одним или несколькими атрибутами, которые ей либо принадлежат, либо наследуются через отношения. Экземпляр сущности — это конкретный представитель данной сущности. Первичный ключ – это один из потенциальных ключей отношения, выбранный в качестве основного ключа. Внешний ключ – это одно или несколько полей (атрибутов), которые являются первичными в другой таблице и значение которых заменяется значениями первичного ключа другой таблицы. Разработка инфологической и даталогической моделей данных осуществлялась с помощью ERwin Modeler. Инфологическая модель базы данных в виде ER-диаграммы представлена на рисунке 5. Рисунок 5 – ИЛМ предметной области «Обслуживание заказов клиентов» Ввиду того, что все атрибуты в сущностях базы данных атомарные и нет повторяющихся групп, можно говорить, что схема отношений находится в первой нормальной форме(1НФ). Также верно, что каждая таблица имеет уникальное ключевое поле, которое однозначно определяет любое не ключевое, т.е. запись ему соответствующую. Что в совокупности с соответствием первой нормальной форме является соответствием второй нормальной форме (2НФ). Ни одно из не ключевых полей каждой из таблиц модели однозначно не определяется значением других не ключевых полей, т.е. все поля, не зависящие от ключевого поля, уже выделены в отдельные таблицы, что соответствует третьей нормальной форме (3НФ). Таким образом, представленная ИЛМ отвечает требованиям нормализации отношений БД. 4.3 Обоснование СУБД. Даталогическая модель данных Выбор системы управления баз данных (СУБД) представляет собой сложную многопараметрическую задачу и является одним из важных этапов при разработке программного обеспечения. На сегодняшний день для построения информационных систем применяются различные СУБД, различающиеся как своими возможностями, так и требованиями к вычислительным ресурсам. При выборе системы управления баз данных необходимо выбрать базу данных, которая в наибольшей степени соответствуют предъявляемым к информационной системе требованиям. В соответствии с поставленной задачей выбор был остановлен на СУБД MS SQL Server, т.к. именно эта СУБД отвечает всем необходимым требованиям, а именно: Поддержка многопользовательского подключения; Высокая скорость работы; Низка трудоемкость поддержания работоспособности СУБД; Поддержка использования технологии LINQ To SQL; Высокая надежность хранения данных. Microsoft SQL Server - система управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Основной используемый язык запросов - Transact-SQL, создан совместно Microsoft и Sybase. Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Используется для работы с базами данных размером от персональных до крупных баз данных масштаба предприятия; конкурирует с другими СУБД в этом сегменте рынка. Система SQL Server 2008 отталкивается от концепции платформы данных Майкрософт: она упрощает управление любыми данными в любом месте и в любой момент времени. Она позволяет хранить в базах данных информацию, полученную из структурированных, полуструктурированных и неструктурированных источников, таких как изображения и музыка. В SQL Server 2008 имеется большой набор интегрированных служб, расширяющих возможности использования данных: вы можете составлять запросы, выполнять поиск, проводить синхронизацию, делать отчеты, анализировать данные. Все данные хранятся на основных серверах, входящих в состав центра обработки данных. К ним осуществляется доступ с настольных компьютеров и мобильных устройств. Таким образом, вы полностью контролируете данные независимо от того, где вы их сохранили. Исходными данными для даталогического проектирования является ИЛМ модель предметной области. В результате должна быть получена логическая структура базы данных, описанная в терминах выбранной модели данных на основе физических записей. В ходе проектирования производится преобразование инфологической модели в даталогическую модель, построенной на основе реляционной модели данных. Классы объектов преобразуются в таблицы, а связи приводят к появлению внешних ключей. Даталогическая модель представлена на рисунке 6. Рисунок 6 – ДЛМ базы данных обслуживание заказов клиентов 4.4 Физическая модель данных Физическое моделирование заключается в разработке структуры таблиц, определении обязательности значений, типа данных, размера полей, а также примера записи данных в поле таблицы БД. При разработке физической модели БД приводится состав таблиц БД. Для каждого поля таблицы необходимо указать тип и размер поля. Для первичных ключей необходимо ввести запрет неопределенных значений. Для остальных полей возможность запрета неопределенных значений определяется семантикой предметной области. Создать первичные и внешние ключи отношений. Для повышения производительности запросов использовать индексы или индексные выражения. Выбрать родительские (управляющие) таблицы, на первичные ключи которых ссылаются другие (дочерние) таблицы. Установить постоянные отношения между таблицами и рассмотреть поддержание целостности на уровне сущности и на уровне ссылки. Ввести список ограничений (список включает ограничения, которые должны затем контролироваться СУБД, для обеспечения целостности базы данных). Описать требования к атрибутам и сущностям для поддержания целостности, определяемой пользователем. Форма физической модели таблиц БД представлена в таблице 3. Таблица 3 - Описание физической реализации таблиц БД Объект Ключ Физические характеристики ID FIO PK int varchar(50) Address Phone Series_pas Number_pas Date_pas Issued_pas ID FIO varchar(50) varchar(50) int int date varchar(50) PK Address Phone Post INN Product_num Name Логические операции Client Identity (1,1) int varchar(50) int varchar(50) Пример данных Да Да 1 Смирнов Данил Олегович Кирова 51 кв 21 79871941212 4532 234322 12.02.2005 Отдел УФМС Да Да Да Да Да Да Sotrudnik Identity (1,1) varchar(50) bigint varchar(50) varchar(50) PK Обязатель ное поле Product Identity (1,1) Да Да Да Да Да Да 1 Соколов Денис Денисович Тукова 81 кв 2 79867635331 Оператор 540092816612 Да Да 1 Мыло детское Price int Order_num ID_sotrudnik ID_client Date_order Pay PK FK FK Blank_num Order_num ID_client Date_delivery Order_price PK FK FK Order_num Product_name Quantity PK PK int int int Date varchar(50) int int int Date int int int int Order Identity (1,1) Blank Identity (1,1) OrderProduct Identity (1,1) Да 70 Да Да Да Да Да 1 1 1 12.01.2023 Кредит Да Да Да Да Да 1 1 1 14.01.2023 2150 Да Да Да 1 1 6 Схема данных в СУБД MS SQL Server представлена на рисунке 7. Рисунок 7 – Схема данных 4.5 Разработка запросов на выборку, изменение, обновление и удаление данных Вывести список товаров (код, наименование), пользующихся наибольшим спросом (максимальное количество позиций заказов) у населения за заданный период SELECT TOP 10 p.product_num, p.name FROM product p INNER JOIN [orderproduct] op ON p.product_num = op.product_num INNER JOIN [order] o ON op.order_num = o.order_num WHERE o.date_order BETWEEN '2023-04-01' AND '2023-05-20' GROUP BY p.product_num, p.name ORDER BY SUM(op.quantity) DESC; Вывести список наименований улиц, на которых проживают абоненты предприятия по убыванию числа абонентов SELECT SUBSTRING(Address, CHARINDEX(',', Address) + 2, LEN(Address)) AS Street, COUNT(*) AS ClientsCount FROM Client GROUP BY SUBSTRING(Address, CHARINDEX(',', Address) + 2, LEN(Address)) ORDER BY ClientsCount DESC Добавить информацию о новом клиенте Смирновой Анне Александровне. INSERT INTO Client (FIO, Address, Phone, Series_pas, Number_pas, Date_pas, Issued_pas) VALUES (‘Смирнова Анна Александровна’, ‘Ленина 58 кв 1’, 79878806554, 3545, 374637, ‘2023-04-04’, ‘Отдел УФМС’) Удалить информацию о Смирновой Анне Александровне DELETE FROM Client WHERE FIO = 'Смирнова Анна Александровна' Увеличить цену на 10 у товаров "лак для волос" и "спрей для волос" UPDATE Product SET Price = Price + 10 WHERE Name IN ('лак для волос', 'спрей для волос'); 4.6 Разработка процедур обеспечения целостности БД Триггер — это особая разновидность хранимой процедуры, которая автоматически выполняется при возникновении события на сервере базы данных. В данной БД используется триггер, который исключает попытки одновременного доступа к таблице Клиент для добавления данных с помощью блокировки таблицы на время выполнения операции вставки: CREATE TRIGGER trg_block_insert ON Client INSTEAD OF INSERT AS BEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLE BEGIN TRY BEGIN TRANSACTION SELECT * FROM Client WITH (TABLOCKX, HOLDLOCK) INSERT INTO Client (FIO, Address, Phone, Series_pas, Number_pas, Date_pas, Issued_pas) SELECT FIO, Address, Phone, Series_pas, Number_pas, Date_pas, Issued_pas FROM inserted COMMIT TRANSACTION END TRY BEGIN CATCH ROLLBACK TRANSACTION END CATCH END Параметры TABLOCKX и HOLDLOCK, устанавливают блокировки таблицы на время выполнения операции вставки. Также используется уровень изоляции транзакции SERIALIZABLE, чтобы запретить одновременный доступ к таблице. Представление — это виртуальная таблица, содержимое которой определяется запросом. Было создано представление для вывода фио клиента и сумму его итогового заказа. CREATE VIEW Client_Blank AS SELECT Client.FIO, Blank.Order_price FROM Client JOIN Blank ON Client.ID = Blank.ID_client; SELECT * FROM Client_Blank; Этот запрос выведет список ФИО клиентов и сумму заказов для каждого из них. 5 Интерфейсы взаимодействия с БД Приложение реализовано в Microsoft Visual Studio 2022 на языке программирования C#. Пример форм для работы с БД приведен на рисунках 8-14. Рисунок 8 – Форма для работы с БД Рисунок 9 – Форма для работы с БД Рисунок 10 – Форма для работы с БД Рисунок 11 – Форма для работы с бд Рисунок 12 – Форма для работы с БД Рисунок 13 – Форма для работы с БД Рисунок 14 – Форма для работы с БД Выводы по курсовой работе Курсовая работа по проектированию и разработке базы данных автоматизированной информационной системы предприятия - важный этап в создании программного продукта, который позволяет существенно облегчить и ускорить работу организации. В результате выполнения курсовой работы была разработана база данных и создана автоматизированная информационная система предприятия, обеспечивающая хранение и обработку информации о клиентах, заказах, товарах и сотрудниках предприятия. Работа была выполнена в соответствии с требуемыми стандартами и требованиями, была оптимизирована для обеспечения максимальной скорости работы. В результате было получено практически полнофункциональное работающее решение, готовое для использования в реальных условиях предприятия. В ходе курсовой работы были решены следующие поставленные задачи: выполнен анализ предметной области; разработаны IDEF0 и DFD модели; выполнено техническое проектирование БД; были разработаны запросы для работы с БД; был разработан интерфейс для взаимодействия пользователя с БД. В связи с этим достигнута цель курсовой работы – приобретение навыков углубленного изучения предметной области, выработка умения в области моделирования, проектирования и создания баз данных. Список использованных источников 1. ГОСТ 34.003-90 Информационная технология. Комплекс стандартов на автоматизированные системы. Автоматизированные системы. Термины и определения – Введен 1991 – 01- 01: Изд-во стандартов, 2012. – 459 с. 2. Советов, Б. Я. Базы данных: теория и практика: учебник для бакалавров / Б. Я. Советов, В. В. Цехановский, В. Д. Чертовской.- 2-е изд. Москва : Юрайт, 2014. - 463 с. : ил. - (Бакалавр. Базо-вый курс). - Прил.: с. 386-458. - Библиогр.: с. 459-460. - ISBN 978-5-9916-2940-9. (39экз) 3. Советов, Б. Я. Базы данных: учебник для прикладного бакалавриата / Б. Я. Советов, В. В. Цехановский, В. Д. Чертовской; С.-Петерб. гос. электротехн. ун-т "ЛЭТИ" им. В. И. Ульянова (Лени-на).- 2-e изд. - Москва : Юрайт, 2015. 463 с. - (Бакалавр. Прикладной курс). - Прил.: с. 386-458. Библиогр.: с. 459-460. - ISBN 978-5-9916-4685-7. (52экз) 4. Щелоков, С.А. Проектирование распределенных информационных систем: курс лекций по дисциплине «Проектирование распределенных информационных систем» / С.А. Щелоков, Е.Н. Чернопрудова; Оренбургский гос. ун-т. – Оренбург: ООО ИПК «Университет», 2013. – 195 с. 5. Щелоков, С.А. Проектирование, разработка и реализация распределенной информационной системы предприятия: методические указания к выполнению курсовой работы по дисциплине «Проектирование распределенных информационных систем» / С.А.Щелоков; Оренбургский гос. ун-т. – Оренбург: ОГУ, 2015. – 129 с. Электронный источник http://artlib.osu.ru/site_new/index.php?option=com_find&type=getfile&name=794 0_20150522.pdf&folder1=metod_all&folder2=books&no_html=1 6. Щелоков, С.А. Разработка и создание баз данных средствами СУБД Access и SQL Server: практикум: учебно-методическое пособие С.А.Щелоков; Оренбургский гос. ун-т. – Оренбург: ОГУ, 2014. – 109 с. Электронный источник– http://artlib.osu.ru/. 7. Щелоков, С.А. Разработка и создание базы данных предметной области: методические указания к выполнению курсовой работы по дисциплине «Базы данных» / С.А.Щелоков; Оренбургский гос. ун-т. – Оренбург: ОГУ, 2014. – 141 с. Электронный источник – http://artlib.osu.ru/. 8. Петров, Алекс Распределенные данные. Алгоритмы работы современных систем хранения информации / А. Петров. – первод с англ. Коцюба А. – СПб.: Издательство «Питер СПб», 2021. – 336 с. 9. Горшкова Е. А., Новиков Б. А., Графеева Н. Г. Основы технологий баз данных. Учебное пособие / Б. А. Новиков, Е. А. Горшкова, Н. Г. Графеева. – М.: ДМК Пресс, 2020. – 582 с. 10. Кузнецов С. Д. Базы данных : учебник для вузов / С.Д. Кузнецов. – М.: Академия, 2012. – 312 с.19 11. Осипов Д. Л. Технологии проектирования баз данных / Д. Л. Осипов – Под ред. Мовчан Д. А. – М.: Изд. ДМК-Пресс, 2019 – 498с. 9. Форта Бен. Язык T-SQL для Microsoft SQL Server за 10 минут. / Бен Форта. – М.: Издательство: Вильямс, 2017. – 384 с. 12. Нестеров С.А. Базы данных. Учебник и практикум для академического бакалавриата. / С.А. Нестеров. – М.: Издательство «Юрайт», 2016. – 230 с. 13. Грофф, Джеймс Р., Вайнберг, Пол Н., Оппелъ, Эндрю Дж. SQL: полное руководство / 3-е изд. : Пер. с англ. – М.: ООО «И.Д. Вильямс», 2015. – 960с. 14. Фаулер, Мартин, Садаладж, Прамодкумар Дж. NoSQL: новая методология разработки нереляционных баз данных / Пер. сангл. – М.: ООО «И.Д. Вильямс», 2013. – 192 с. 15. Бондарь А. Г. Microsoft SQL Server 2014 / А.Г. Бондарь. – СПб.: БХВПетербург, 2015. – 592 с. 16. Ян Робинсон. Графовые базы данных. Новые возможности для работы со связанными данными / Ян Робинсон. – М.: Издательство ДМК Пресс, 2015. –256 с. 17. Гринченко, Н. Н. Базы данных : разработка клиентских приложений на платформе .NET : учебник для студентов вузов / Н. Н. Гринченко, А. Ю. Громов, А. В. Благодаров. – М.: издательство КУРС, 2020. – 287 с. 18. Калашян А. Н. Структурные модели бизнеса : DFD-технологии / А. Н. Калашян, Г. Н. Калянов ; под ред. Г. Н. Калянова. – М. : Финансы и статистика, 2010. 19. Базы данных. SQL Server. [электронный ресурс] / Режим доступа: https://docs.microsoft.com/ruru/sql/relationaldatabases/databases/databases?view= sql-server-ver15. – Свободный доступ. Загл. С экрана. 20. Введение в базы данных. [электронный ресурс] / Режим доступа: http://www.mstu.edu.ru/study/materials/zelenkov/toc.html. – Свободный доступ. Загл. с экрана. 21. Пошаговое руководство. Создание n-уровневого приложения для данных. [электронный ресурс] / Режим доступа: https://docs.microsoft.com/ruru/visualstudio/data-tools/walkthrough-creating-an-n tier-data-application?view=vs2019. – Свободный доступ. Загл. с экрана. 22. Создание простого приложения для работы с данными с помощью ADO.NET. [электронный ресурс] / Режим доступа: https://docs.microsoft.com/ru- 20 ru/visualstudio/data-tools/create-a-simple-dataapplication-by-using-adonet?view=vs2019. – Свободный доступ. Загл. с экрана. 23. Создание базы данных и добавление таблиц в Visual Studio. [электронный ресурс] / Режим доступа https://docs.microsoft.com/ruru/visualstudio/data-tools/create-a-sql-database-byusing-a-designer?view=vs-2019. – Свободный доступ. Загл. с экрана. Приложение SQL-скрипты USE [master] GO /****** Object: Database [test] Script Date: 23.05.2023 3:21:44 ******/ CREATE DATABASE [test] CONTAINMENT = NONE ON PRIMARY ( NAME = N'test', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL16.SQLEXPRESS\MSSQL\DATA\test.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ) LOG ON ( NAME = N'test_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL16.SQLEXPRESS\MSSQL\DATA\test_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB ) WITH CATALOG_COLLATION = DATABASE_DEFAULT, LEDGER = OFF GO ALTER DATABASE [test] SET COMPATIBILITY_LEVEL = 160 GO IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) begin EXEC [test].[dbo].[sp_fulltext_database] @action = 'enable' end GO ALTER DATABASE [test] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [test] SET ANSI_NULLS OFF GO ALTER DATABASE [test] SET ANSI_PADDING OFF GO ALTER DATABASE [test] SET ANSI_WARNINGS OFF GO ALTER DATABASE [test] SET ARITHABORT OFF GO ALTER DATABASE [test] SET AUTO_CLOSE OFF GO ALTER DATABASE [test] SET AUTO_SHRINK OFF GO ALTER DATABASE [test] SET AUTO_UPDATE_STATISTICS ON GO ALTER DATABASE [test] SET CURSOR_CLOSE_ON_COMMIT OFF GO ALTER DATABASE [test] SET CURSOR_DEFAULT GLOBAL GO ALTER DATABASE [test] SET CONCAT_NULL_YIELDS_NULL OFF GO ALTER DATABASE [test] SET NUMERIC_ROUNDABORT OFF GO ALTER DATABASE [test] SET QUOTED_IDENTIFIER OFF GO ALTER DATABASE [test] SET RECURSIVE_TRIGGERS OFF GO ALTER DATABASE [test] SET DISABLE_BROKER GO ALTER DATABASE [test] SET AUTO_UPDATE_STATISTICS_ASYNC OFF GO ALTER DATABASE [test] SET DATE_CORRELATION_OPTIMIZATION OFF GO ALTER DATABASE [test] SET TRUSTWORTHY OFF GO ALTER DATABASE [test] SET ALLOW_SNAPSHOT_ISOLATION OFF GO ALTER DATABASE [test] SET PARAMETERIZATION SIMPLE GO ALTER DATABASE [test] SET READ_COMMITTED_SNAPSHOT OFF GO ALTER DATABASE [test] SET HONOR_BROKER_PRIORITY OFF GO ALTER DATABASE [test] SET RECOVERY SIMPLE GO ALTER DATABASE [test] SET MULTI_USER GO ALTER DATABASE [test] SET PAGE_VERIFY CHECKSUM GO ALTER DATABASE [test] SET DB_CHAINING OFF GO ALTER DATABASE [test] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF ) GO ALTER DATABASE [test] SET TARGET_RECOVERY_TIME = 60 SECONDS GO ALTER DATABASE [test] SET DELAYED_DURABILITY = DISABLED GO ALTER DATABASE [test] SET ACCELERATED_DATABASE_RECOVERY = OFF GO ALTER DATABASE [test] SET QUERY_STORE = ON GO ALTER DATABASE [test] SET QUERY_STORE (OPERATION_MODE = READ_WRITE, CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 30), DATA_FLUSH_INTERVAL_SECONDS = 900, INTERVAL_LENGTH_MINUTES = 60, MAX_STORAGE_SIZE_MB = 1000, QUERY_CAPTURE_MODE = AUTO, SIZE_BASED_CLEANUP_MODE = AUTO, MAX_PLANS_PER_QUERY = 200, WAIT_STATS_CAPTURE_MODE = ON) GO USE [test] GO /****** Object: Table [dbo].[Blank] Script Date: 23.05.2023 3:21:44 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Blank]( [Blank_num] [int] IDENTITY(1,1) NOT NULL, [ID_client] [int] NOT NULL, [Order_num] [int] NOT NULL, [Date_delivery] [date] NOT NULL, [Order_price] [int] NOT NULL, CONSTRAINT [PK_Blank] PRIMARY KEY CLUSTERED ( [Blank_num] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[Client] Script Date: 23.05.2023 3:21:44 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Client]( [ID] [int] IDENTITY(1,1) NOT NULL, [FIO] [varchar](50) NOT NULL, [Address] [varchar](50) NOT NULL, [Phone] [varchar](50) NOT NULL, [Series_pas] [int] NOT NULL, [Number_pas] [int] NOT NULL, [Date_pas] [varchar](50) NOT NULL, [Issued_pas] [varchar](50) NOT NULL, CONSTRAINT [PK_Client] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: View [dbo].[Client_Blank] Script Date: 23.05.2023 3:21:44 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE VIEW [dbo].[Client_Blank] AS SELECT Client.FIO, Blank.Order_price FROM Client JOIN Blank ON Client.ID = Blank.ID_client; GO /****** Object: Table [dbo].[Order] Script Date: 23.05.2023 3:21:44 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Order]( [Order_num] [int] IDENTITY(1,1) NOT NULL, [ID_sotrudnik] [int] NOT NULL, [ID_client] [int] NOT NULL, [Date_order] [date] NOT NULL, [Pay] [varchar](50) NOT NULL, CONSTRAINT [PK_Order] PRIMARY KEY CLUSTERED ( [Order_num] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[OrderProduct] Script Date: 23.05.2023 3:21:44 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[OrderProduct]( [Order_num] [int] IDENTITY(1,1) NOT NULL, [Product_num] [int] NOT NULL, [Quantity] [int] NOT NULL, CONSTRAINT [PK_OrderProduct_1] PRIMARY KEY CLUSTERED ( [Order_num] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[Product] Script Date: 23.05.2023 3:21:44 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Product]( [Product_num] [int] IDENTITY(1,1) NOT NULL, [Name] [varchar](50) NOT NULL, [Price] [int] NOT NULL, CONSTRAINT [PK_Product] PRIMARY KEY CLUSTERED ( [Product_num] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[Sotrudnik] Script Date: 23.05.2023 3:21:44 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Sotrudnik]( [ID] [int] IDENTITY(1,1) NOT NULL, [FIO] [varchar](50) NOT NULL, [Address] [varchar](50) NOT NULL, [Phone] [bigint] NOT NULL, [Post] [varchar](50) NOT NULL, [INN] [bigint] NOT NULL, CONSTRAINT [PK_Sotrudnik] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[Blank] WITH CHECK ADD CONSTRAINT [FK_Blank_Client] FOREIGN KEY([ID_client]) REFERENCES [dbo].[Client] ([ID]) GO ALTER TABLE [dbo].[Blank] CHECK CONSTRAINT [FK_Blank_Client] GO ALTER TABLE [dbo].[Blank] WITH CHECK ADD CONSTRAINT [FK_Blank_Order] FOREIGN KEY([Order_num]) REFERENCES [dbo].[Order] ([Order_num]) GO ALTER TABLE [dbo].[Blank] CHECK CONSTRAINT [FK_Blank_Order] GO ALTER TABLE [dbo].[Order] WITH CHECK ADD CONSTRAINT [FK_Order_Client] FOREIGN KEY([ID_client]) REFERENCES [dbo].[Client] ([ID]) GO ALTER TABLE [dbo].[Order] CHECK CONSTRAINT [FK_Order_Client] GO ALTER TABLE [dbo].[Order] WITH CHECK ADD CONSTRAINT [FK_Order_Sotrudnik] FOREIGN KEY([ID_sotrudnik]) REFERENCES [dbo].[Sotrudnik] ([ID]) GO ALTER TABLE [dbo].[Order] CHECK CONSTRAINT [FK_Order_Sotrudnik] GO ALTER TABLE [dbo].[OrderProduct] WITH CHECK ADD CONSTRAINT [FK_OrderProduct_Order] FOREIGN KEY([Order_num]) REFERENCES [dbo].[Order] ([Order_num]) GO ALTER TABLE [dbo].[OrderProduct] CHECK CONSTRAINT [FK_OrderProduct_Order] GO