Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РОССИЙСКОЙ ФЕДЕРАЦИИ
Вологодский государственный технический университет
Электроэнергетический факультет
Кафедра автоматики и вычислительной техники
Электронный учебно-методический комплекс
по дисциплине “Базы данных“ для специальности 230105 – программное обеспечение вычислительной техники и автоматизированных систем
Курс состоит из 5 учебных модулей (УМ), включающих 17 учебных единиц (УЕ)
УМ1 – Основные понятия
УЕ1 - Базовые понятия, терминология
УЕ2 - Архитектуры информационных систем
УЕ3 - Модели данных
УМ2 – Реляционная модель
УЕ4 – Структурная и целостная части
УЕ5 – Манипуляционная часть
УМ3 – Проектирование базы данных
УЕ6 - Диаграммы сущность-связь
УЕ7 – Нормализация базы данных
УЕ8 – Сознательная денормализация. Хранилища данных
УМ4 – Язык SQL
УЕ9 - DDL. Таблицы и индексы
УЕ10 - DML. Вставка, удаление, обновление строк
УЕ11 - Извлечение данных – запросы по одной таблице
УЕ12 – Соединение таблиц в запросах, вложенные запросы
УЕ13 – Представления
УЕ14 – Хранимый код. Триггеры
УМ5 – Защита данных
УЕ15 – Механизм транзакций
УЕ16 – Система безопасности
УЕ17 – Резервное копирование и восстановление данных
Автор курса — доцент кафедры АВТ электроэнергетического факультета
к. т.н., доцент
Вологда, 2009
МЕТОДИЧЕСКИЕ УКАЗАНИЯ К КУРСОВОМУ ПРОЕКТУ
Курсовой проект представляет собой разработку информационной системы по индивидуальным заданиям. Каждое задание содержит краткое описание автоматизируемой предметной области, назначение и основные функции разрабатываемой системы. Подробные бизнес правила, роли пользователей и внешняя спецификация приложений обсуждаются с преподавателем в процессе выполнения проекта.
Результатом курсового проекта (работы) является завершенный программный продукт, включающий серверную часть и клиентские приложения.
План выполнения курсового проекта соответствует этапам разработки информационной системы и подробно описан в Методических указаниях к лабораторным работам.
Пояснительная записка должна адекватно отображать результаты основных этапов разработки информационной системы.
Примерный план оформления пояснительной записки
Введение
Актуальность разработки подобной системы, ее краткая характеристика.
1. Анализ предметной области
1.1. Анализ организационной структуры автоматизируемого подразделения (результат — схема организационной структуры, на которой показано иерархическое подчинение сотрудников). Составить список автоматизированных рабочих мест (АРМ).
1.2. Анализ функций каждого сотрудника, выделение функций, подлежащих автоматизации.
1.3. Анализ документооборота: основные формы документов, как вы их представляете, движение документов. Формы передачи документов — в электронном или бумажном варианте.
2. Проектирование системы
2.1. Определение количества приложений и их внешняя спецификация (т. е. описание назначения и функций каждого приложения).
2.2. Разработка структуры базы данных
o Концептуальная схема базы данных, может быть выполнена, например, в ErWin, на уровне сущностей или первичных ключей или на бумаге в виде нотации Чэна
o Логическая схема базы данных ( уровень атрибутов в ErWin)
3. Реализация системы
3.1. Физическая схема базы данных с учетом выбранной СУБД
3.2 Описание приложений (описание основных алгоритмов в виде блок-схем или на естественном языке). Можно привести и небольшие фрагменты кода программ.
3.3 Безопасность данных (пользователи и роли)
4. Тестирование
4.1. Описание методики тестирования
4.2. Оценка качества приложений (скорость работы, требуемые ресурсы, надежность, сопровождаемость, переносимость).
Заключение
Коротко основные результаты, предложения по усовершенствованию системы в следующих версиях
Список использованных источников
Приложения
1) SQL-скрипты, тексты запросов, хранимых процедур, функций, триггеров
2) Наиболее интересные фрагменты кода приложений
Варианты заданий
Вариант 1
Разработать прикладную систему ‘Склад продуктов для столовой или кафе’. Система предназначена для автоматизации процессов приемки-выдачи продуктов, разработки и изменения рецептуры изделий с автоматической калькуляцией стоимости. Базовая функциональность:
- добавление нового продукта, которого еще нет на складе или нового блюда, которого еще нет в меню
- удаление какого-либо продукта или блюда
- поступление новой партии продукта, который уже имеется на складе. При приемке фиксируется дата, фирма-поставщик, количество продукта, цена за единицу. Вывести Накладную о приемке продукта.
- отпуск продуктов со склада. При этом вводится или выбирается по меню название блюда и количество порций, затем автоматически выбираются нужные продукты и вычисляется их количество. Если нужного количества какого-либо продукта нет на складе, вывести соответствующее сообщение. Если все продукты имеются в нужном количестве, изменить количество для каждого продукта, взятого со склада и вывести Накладную.
- калькуляция стоимости одной порции любого блюда. Стоимость одной порции складывается из стоимости всех продуктов, затрат на изготовление одной порции и накладных расходов. Затраты на изготовление блюда и накладные расходы вводятся.
Вариант 2
Разработать прикладную систему ‘Учет проживающих в гостинице’. Система предназначена для автоматизации процессов поселения-выселения клиентов и всех денежных расчетов с ними. Базовая функциональность:
- вывод списка номеров, в которых есть свободные места (отдельно для мужчин, женщин и семей) с указанием полной информации об этих номерах
-поселение в гостиницу. При этом клиент должен оплатить или полную стоимость проживания или стоимость нескольких первых дней и получить квитанцию об оплате.
- оплата за проживание, если при поселении клиент заплатил не всю сумму (с выдачей квитанции).
- каждый проживающий может заказывать дополнительные услуги в номер (кабельное телевидение, доставка обеда в номер и т. п.) Стоимость услуг должна включаться в счет при выселении
- выселение из гостиницы. При этом проверяется соответствие даты оплаты текущей дате и в случае несоответствия выдается сообщение и выводится квитанция об оплате.
Вариант 3
Разработать прикладную систему ‘Учет выдачи книг в библиотеке’, с помощью которой будет фиксироваться история каждого экземпляра имеющихся книг. Базовая функциональность:
- ведение рубрикатора книг, при этом каждая книга должна относиться к одной из рубрик. Удобный поиск книг.
- ввод, удаление и корректировка сведений о книгах и их экземплярах;
- ввод, удаление и корректировка сведений о читателях;
- выдача выбранной книги. Если все экземпляры выбранной книги выданы, то при необходимости выдать список всех читателей, которым выдана эта книга
- сдача книги в библиотеку.
- печать карточки на любую книгу.
- статистический анализ за определенный период времени: список книг, не пользующихся спросом (которые вообще не выдавались за этот период), список наиболее популярных книг, список читателей-задолжников на текущую дату и начисление пеней с фиксированной ставкой за просрочку книг. Срок выдачи книги зависит от рубрики.
Вариант 4
Разработать прикладную систему ‘Расписание занятий ’. Предполагается, что расписание уже составлено, а система должна обеспечить удобный ввод, поиск и проверку расписания на наличие ‘накладок’ по преподавателям и аудиториям.
Базовая функциональность:
- ввод и корректировка расписания. Это трудоемкая процедура, поэтому постараться обеспечить максимум удобств при вводе.
- проверка на отсутствие накладок у преподавателей. Для каждого преподавателя проверить, нет ли у него двух пар одновременно.
- вывод на экран карты загрузки заданной аудитории (номер аудитории вводится) с одновременной проверкой накладок (два занятия одновременно)
- вывод расписания занятий на всю неделю для заданного преподавателя или для заданной группы.
- поиск свободных аудиторий в определенные дни недели и интервалы времени.
Вариант 5
Разработать прикладную систему «Отдел кадров», автоматизирующую учет сведений о сотрудниках какой-то организации. Организация состоит из нескольких отделов. Для каждого отдела имеется штатное расписание (список должностей, часть из них занята работающими сотрудниками, а некоторые должности являются вакантными). Принимать на работу можно только на вакантную должность.
При поступлении на работу каждый сотрудник заполняет типовую анкету: ф и о; пол; дата рождения; адрес; телефон; образование (высшее, среднее и т. д.); какие учебные заведения закончил, в каком году и номера дипломов; семейное положение (холост, женат, разведен); имена и даты рождения детей
Базовая функциональность:
прием нового сотрудника с заполнением анкеты
увольнение сотрудника, при этом уволившегося сотрудника занести в архив
любые изменения анкетных данных, в том числе рождение ребенка, окончание еще какого-нибудь учебного заведения и др.
получение всевозможных статистических данных (сколько в организации всего сотрудников, сколько мужчин и женщин, сколько с каким образованием, сколько многодетных и бездетных, какое распределение по возрастным группам и т. д.)
печать поздравлений тем сотрудникам, у которых сегодня день рождения
хранить историю изменений должностей/назначений сотрудника
Вариант 6
Разработать информационную систему для сбора и анализа данных при проведении чемпионата по футболу (или другому игровому виду спорта). В компьютер заносятся следующие данные:
сведения о командах (название, спортивный клуб, ФИО главного тренера)
данные об игроках (номер игрока в команде, ФИО, дата рождения, рост, вес)
сведения о сыгранных матчах (кто с кем играл на каком стадионе) и забитых голах (кто забил на какой минуте)
По этим данным необходимо подвести итоги чемпионата:
Сколько всего команд и игроков играло, средний возраст, рост и вес каждой команды
Подвести итоги в индивидуальном первенстве: отсортировать игроков в порядке убывания их результативности, вывести десятку лучших
Подвести итоги в командном первенстве, для этого подсчитать сумму очков для каждой команды (победа – 3 очка, ничья – 1 очко, поражение – 0 очков) и разницу забитых и пропущенных мячей во всех матчах.
Сформировать отчеты о результатах чемпионата.
Вариант 7
Разработать информационную систему для автоматизации деятельности фирмы, работающей на рынке ценных бумаг. Фирма занимается покупкой и продажей векселей, ее прибыль формируется из разницы между ценой покупки и продажи. У нее есть постоянный список клиентов, каждый из которых является или продавцом или покупателем векселей (или одновременно тем и другим). Каждый вексель имеет уникальный идентификатор (серия и номер), номинальную цену, дату гашения, фирму-эмитент. Базовая функциональность:
- Покупка или продажа векселей с обязательным заключением типового договора, в котором указываются серия и номер каждого векселя (в одном договоре может быть несколько векселей), сумма покупки или продажи для каждого векселя и его номинал.
- Подсчет прибыли (разница между ценами покупки и продажи) за определенный период времени.
- Система должна оповещать о приближении даты акцепта по векселям (по законодательству вексель должен быть предъявлен не позднее 3 дней до даты погашения, а в случае отказа от акцепта, переводить вексель в категорию опротестованных векселей)
Вариант 8
Разработать информационную систему для автоматизации работы торговой фирмы. У фирмы есть постоянный список товаров, которыми она торгует, и фирм-поставщиков, каждый из которых может поставлять определенные товары. Поставщики завозят свои товары в магазин и там они заносятся в компьютер с указанием даты поступления, количества, цены поставщика и розничной цены продажи и конечного срока реализации (возможно по дате производства и сроку годности). После того, как вся партия продана, она удаляется из текущей таблицы и заносится в архив. Продавать товар с истекшим сроком годности нельзя.
В конце каждого месяца (квартала) проводится инвентаризация и подсчитывается прибыль, за минусом товаров с истекшим сроком годности за этот период, что оформляется соответствующим отчетом.
Вариант 9
Разработать систему для автоматизации подсчета выполненной преподавателями кафедры учебной нагрузки. В конце каждого месяца выполненная каждым преподавателем нагрузка по отдельным видам занятий заносится в компьютер, и на основании этих данных делается сводный отчет по видам занятий по всей кафедре. В конце учебного года делается сводный отчет о выполненной нагрузке за год по каждому преподавателю и по всей кафедре. Виды занятий - лекции, лабораторные, практические, курсовые и дипломные работы, консультации, контрольные работы. Время от времени появляются новые виды, поэтому для видов занятий лучше сделать таблицу справочник. Кроме того, отдельно считается нагрузка основная, по совместительству и почасовая.
Принять во внимание, что список преподавателей не остается постоянным в течение всего учебного года: кто-то увольняется, а кто-то приходит.
Вариант 10
«Негосударственный учебный центр». В центре ведутся занятия по нескольким курсам. Каждый курс имеет определенную продолжительность: количество недель и количество часов в неделю. По каждому курсу набираются группы, занятия начинаются по мере комплектования групп. В центре один единственный компьютерный класс. Составить программу для удобного составления расписания занятий в этом самом классе. Расписание составляет завуч, но система должна предоставить ему максимум удобств для этого. При составлении расписания в свободную клеточку вписывается номер группы и преподаватель. Преподавателей в центре несколько. Каждый может вести, как правило, несколько курсов. Группе можно назначать только преподавателя, который имеет право вести данный курс. У одного преподавателя не может быть больше 6 часов занятий в день.
Вариант 11
«Система контроля знаний». Система позволяет выполнять тестирование по любым предметам, для которых подготовлены тесты. Для каждого предмета имеется несколько тестов, каждый по своей теме. В тесте – любое количество вопросов, для каждого вопроса предлагается несколько вариантов ответа, из которых требуется выбрать один правильный. В конце теста система сообщает количество процент правильных ответов и оценку по пятибальной системе. Порядок возможных вариантов ответа на текущий вопрос должен быть случайным. Результаты тестирования для каждого ученика сохраняются, и в любой момент могут быть показаны. По результатам тестов может быть выставлена оценка любому ученику по любому предмету, если он проходил хотя бы один тест по этому предмету.
Вариант 12
Система для домоуправления, выполняющая начисление квартирной платы. Система должна автоматически начислять оплату стоимости жилья и коммунальных услуг для каждого квартиросъемщика и фиксировать его платежи. Все услуги можно разделить на несколько категорий:
стоимость услуги фиксированная
стоимость услуги зависит от площади квартиры
стоимость услуги зависит от количества жильцов
стоимость зависит от показаний счетчика.
Предусмотреть вывод квитанции об оплате.
Вариант 13
Банковская подсистема «Отдел вкладов». Система предназначена для автоматизации всех работ по вкладам клиентов. Вклады могут различаться по сроку, возможности или невозможности пополнения или частичного изъятия суммы, возможностью или невозможностью автоматической пролонгации вклада (продолжения, если срок истек). От всех этих факторов зависит процент по вкладу.
Система должна обеспечить поддержку всех основных банковских операций: открытие нового вклада, пополнение счета или снятие денег со счета, закрытие вклада.
Банк имеет список клиентов, каждый клиент может иметь несколько вкладов любых видов.
Вариант 14
Банковская подсистема «Отдел кредитования». Система предназначена для автоматизации всех работ по выдаче кредитов клиентам и выполнении расчетов по погашению кредитов. Базовая функциональность:
- ведения списка различных видов кредита
-заполнение электронной анкеты клиентом на получение кредита
- фиксация решения о выдаче кредита
- фиксация платежей клиентов и учет должников
- закрытие полностью оплаченного кредита.
Вариант 15
Система для учета средств вычислительной техники во всех подразделениях одной организации, например, университета. Основная задача – проследить историю каждого СВТ, начиная с момента покупки до списания. Отслеживать и ремонты техники.
Базовая функциональность:
Поступление нового СВТ (партии СВТ) и принятие его на баланс конкретного подразделения
Инвентаризация подразделений
Передача СВТ из одного подразделения в другой
Списание СВТ
Многокритериальный поиск в базе данных
Вариант 16
Система для учета посещений в платной поликлинике. Система предназначена для предварительной записи клиентов, учета их посещений и оказанных клиентам услуг отдельно по каждому врачу, учета оплаты услуг клиентами.
Поликлиника имеет определенный штат врачей и определенный перечень услуг, которые могут оказывать конкретные врачи. Врачи работают по определенному расписанию, продолжительность сеанса приема фиксированная, в каждом сеансе может быть оказана одна или несколько услуг.
Клиенты могут записаться к любому врачу на любой свободный сеанс, на определенное количество дней вперед.
Каждый сеанс и услуги, оказанные в этом сеансе, отмечаются врачом и оплачиваются клиентом. Заработная плата врачей зависит от суммарной стоимости оказанных ими услуг.
Вариант 17
Система для учета приема и выполнения заказов в мастерской (по ремонту бытовой техники, обуви и т. д.). Система предназначена для автоматизации приемки-выдачи заказов и учета выполненных работ по ремонту сотрудниками мастерской.
Система должна предусматривать возможность принять заказ клиента, в котором может быть несколько различных пунктов (видов услуг) и автоматически рассчитать стоимость каждой услуги и суммарную стоимость заказа.
На выполнение каждой услуги заказа назначается определенный мастер, который после выполнения работы делает отметку о готовности. Заказ считается выполненным, если на всех пунктах стоит отметка о готовности.
После этого заказ выдается клиенту.
По каждому сотруднику мастерской ведется учет о выполненных работах и их стоимости.
Вариант 18
Система расчетов за пользование услугами сотовой связи. Предназначена для фиксации разговоров клиентов (для этой цели разработать специальную программу-робота, моделирующую процесс случайных переговоров между различными клиентами) и начисления оплаты за услуги в соответствии с тарифами.
Система должна фиксировать каждый факт оплаты услуг связи, ведение личного счета каждого клиента и за каждый разговор снимать со счета рассчитанную сумму.
Если на счете клиента отсутствуют деньги, система должна аннулировать такой звонок.
Вариант 19
Система продажи билетов в кинотеатр. Система предназначена для продажи билетов в кинотеатр с одним кинозалом. Каждый фильм идет в течение определенного срока на различных сеансах в соответствии с расписанием показа, которое вводится заранее до начала продаж на поступивший в прокат фильм. Билеты можно приобрести на любой сеанс заранее. Цена проданных билетов рассчитывается автоматически, исходя из базовой цены билета и надбавочных коэффициентов к фильму в целом, к каждому показу и к типу места в кинозале (например, пусть будут обычные места и VIP-места).
Должна быть предусмотрена возможность возврата билетов.
Вариант 20
Система учета и анализа успеваемости студентов (электронный деканат). Базовая функциональность:
- Ввод и корректировка всех данных;
- Печать экзаменационных ведомостей и ввод оценок в базу данных;
- Автоматический перевод студентов на следующий курс;
- Печать вкладышей к диплому;
- Анализ успеваемости студента, группы, курса, специальности или факультета в целом.
Литература
1. Дейт, К. Введение в системы баз данных. 8 издание /К. Дж. Дейт; Пер. с англ. – М.: Вильямс, 2006. – 1326 с.
2. Ульман, Д. Введение в системы баз данных /Д. Ульман, Д. Уидом; Пер. с англ. – М.: Лори, 2000. – 512 с.
3. Грибер, М. Введение в SQL / М. Грибер, М., “Лори”, 1996.
4. Базы данных: Учебник для ВУЗов / Под ред. А.Д. Хомоненко — СПб: Корона принт, 2000. – 416 с.
5. Колби, Дж. SQL для начинающих / Джон Колби, Пол Уилтон - М.: Вильямс · 20с.
6. Кевин, Кл. SQL: Справочник / пер. с англ. Клайн Кевин - 2-е издание – М.: Кудиц-Образ, 20с.
7. Полякова, Л. Основы SQL. Курс лекций: учебное пособие / – М.: ИНТУИТ. РУ, 20с.
8. Эбби, М. Oracle 9i. Первое знакомство/ : Лори, 2003.
9. Ржеуцкая, С. Базы данных. Рабочая программа, методические указания к лабораторным работам и курсовому проектированию, варианты заданий. / , — Вологда: ВоГТУ, 2007. – 48 с.
Введение
Данный цикл лабораторных работ предназначен для обучения основным умениям и навыкам в области разработки информационных систем на основе двухуровневой архитектуры «клиент-сервер». Каждая из работ служит для отработки навыков выполнения какого-либо из этапов разработки.
Информационная система, которая используется в качестве обучающего примера, предназначена для предварительной продажи билетов на автовокзале. Это типичная многопользовательская система оперативной обработки транзакций, на ее примере можно освоить основные типовые приемы, применяемые на различных этапах разработки.
В качестве базового средства на серверной стороне выбираем СУБД Oracle. Это мощная серверная СУБД, которая уже много лет является лидером на рынке SQL-серверов баз данных. Фирма Oracle на своем сайте предоставляет свободно распространяемую версию для целей обучения.
Для обучения основам моделирования данных используем Case-систему ERWin Data Modeler или аналогичную свободно распространяемую систему TOAD Data Modeler.
Приложения на клиентской стороне реализуем в среде Delphi (или свободно распространяемой версии Turbo Delphi).
Лабораторная работа № 1
«Анализ предметной области»
Цель работы: выполнить анализ предметной области, уяснить систему бизнес-правил предметной области, выделить круг пользователей, взаимодействующих с информационной системой.
Постановка задачи
Требуется создать информационную систему «клиент-сервер» для использования на автовокзале, которая обеспечивает возможность предварительной продажи билетов до любого населенного пункта, с которым имеется прямое автобусное сообщение, предоставляя для этого всю необходимую информацию. Система должна содержать средства, необходимые для оперативного изменения базы данных с целью поддержки информации в актуальном состоянии.
Разрабатываемая система предназначена для автоматизации только одной, хотя и очень важной функции автовокзала, и не затрагивает таких важных функций как финансовый и кадровый учет и анализ, покупки и ремонт техники и т. д. В связи с ограниченностью задачи представляется возможным выполнить все этапы разработки и получить физически реализованную серверную часть и готовые приложения-клиенты.
Состав инструментальных средств определим заранее. В качестве серверной СУБД выбираем SQL-сервер Oracle, клиентские приложения реализуем в среде Delphi.
Анализ требований к системе
Формализуем задачу, определив систему бизнес-правил, которым подчиняется предметная область, в данном случае автовокзал. Считаем, что эти правила согласованы с заказчиком (администрацией автовокзала) и не подлежат обсуждению.
1. Автовокзал имеет определенный парк автобусов нескольких различных моделей (Икарус, ПАЗ и т. д.). Автобусы каждой модели имеют определенное число мест и определенный уровень комфортности (класс). Все автобусы одной модели принадлежат одному классу и имеют одинаковое число мест. Время от времени автобусный парк обновляется.
2. Цена за километр пути постоянна для автобусов одного класса. В настоящий момент имеется только два класса (первый и второй), но не исключена возможность появления автобусов новых классов повышенной комфортности.
3. Имеется строго регламентированный набор автобусных маршрутов, по каждому маршруту выполняется определенное количество рейсов в неделю в соответствии с расписанием (каждую неделю одно и то же количество рейсов). Все рейсы одного и того же маршрута имеют одни и те же остановки, т. е. посещают одни и те же населенные пункты, и едут по одной и той же дороге. Маршруты изменяются довольно редко.
4. Расписание автобусных рейсов постоянно и составляется на неделю, при этом в расписании указан день недели, часы и минуты отправления автобуса для каждого рейса. Изменения в расписание иногда вносятся, обычно в начале сезона.
5. На каждый рейс назначен определенный автобус. Временные замены, связанные с ремонтом автобусов, в базе данных не фиксируются.
6. Цена билета определяется как произведение расстояния от пункта отправления до пункта назначения на цену за километр. Система должна автоматически вычислять цену билетов, не заставляя кассира делать это вручную. В целях упрощения задачи скидки для разных категорий льготников не реализуются.
7. Билеты продаются заранее, но не раньше, чем за неделю. На каждый рейс можно купить билеты до любого населенного пункта, в котором есть остановка.
8. На каждый рейс можно продать не больше билетов, чем вмещает автобус, назначенный для данного рейса. Проходящие рейсы, число билетов на которые заранее неизвестно, система не обрабатывает.
9. В момент отправления каждого рейса диспетчер обнуляет количество билетов на этот рейс и начинается продажа на рейс, который состоится ровно через неделю. Таким образом, на каждый рейс можно купить билеты за неделю.
Лица, взаимодействующие с системой
Основные пользователи системы — кассиры. Все кассиры работают с одним и тем же приложением. Их основные требования к интерфейсу — максимальная простота и удобство работы, обеспечение приемлемой скорости, сведение к минимуму количества возможных человеческих ошибок.
Администратор базы данных (он же может быть и администратором автовокзала) обязан поддерживать данные в актуальном состоянии. Для него должно быть создано отдельное приложение, особых требований к интерфейсу не предъявляется.
Для регулирования продаж билетов создадим еще одно небольшое приложение для диспетчера. В принципе, обнуление количества билетов можно было бы выполнять и автоматически в соответствии с расписанием, но в связи с возможными отклонениями от расписания надежнее поручить эту обязанность диспетчеру.
Любой из пассажиров мог бы воспользоваться электронным справочником, отрабатывающим запросы о расписании автобусов и о наличии билетов на конкретные рейсы. Разумеется, приложение-справочник должно работать с базой данных в режиме «только для чтения».
Анализ функций системы
Многочисленные функции администратора можно разбить на 3 группы:
1. Своевременное обновление информации об автобусном парке
2. Изменение данных о населенных пунктах, маршрутах и рейсах
3. Корректировка расценок за километр
Функции кассира:
1. Поиск нужного рейса или нескольких (возможно и всех) рейсов, которые проходят через заданный населенный пункт
2. Определение, имеется ли в наличии необходимое число билетов на выбранный рейс. Если билетов нет, поиск другого подходящего рейса, на который есть билеты
3. Продажа билетов с фиксацией в базе данных
4. Возврат билетов
Функции диспетчера:
Единственная функция — обнуление количества проданных билетов.
Функции, необходимые пассажирам, — быстрый поиск доступной для них информации из базы данных.
Лабораторная работа №2
«Разработка структуры базы данных»
Цель работы: получить навыки семантического анализа предметной области и построения диаграммы «Сущность-связь», освоить одну из типовых Case-систем для моделирования данных.
Для разработки используем Case-средство ErWin, которое позволит автоматически получить физическую схему и сценарий SQL (процесс разработки в любой другой Case-системе выполняется аналогично).
При входе в ErWin следует выбрать уровень Logical / Physical, а в качестве СУБД – Oracle.
Разработка логической схемы.
На основании бизнес-правил выделим следующие основные сущности предметной области и их атрибуты.
1. km_prices (расценки за километр)
сlass (класс автобуса)
price (цена за км для данного класса)
2. models (марки или модели автобусов)
cod_model (код, суррогатный ключ)
name_model (название, атрибут носит справочный характер)
places (количество мест в автобусах данной марки)
class (класс комфортности)
3. buses (автобусы)
cod_bus (код автобуса, возможно его инвентарный номер)
bus_number (номер ГИБДД, атрибут носит справочный характер)
cod_model (марка автобуса, внешний ключ)
Связь между данными сущностями можно изобразить так:

4. points (населенные пункты)
cod_point (код, суррогатный ключ)
name_point (название)
distance (расстояние от пункта отправления)
5. routes (маршруты)
cod_route (код, суррогатный ключ)
name_route (название маршрута)
Пункты и маршруты имеют связь «Многие-ко-Многим» (через каждый пункт может проходить несколько маршрутов и каждый маршрут имеет несколько остановок). Это можно отобразить так:

Пользуясь контекстным меню (выбрать Create Associating Entity), можно автоматически сформировать таблицу связку.

6. Сущность trips (рейсы) связывает сущности Маршруты и Автобусы, дополняя их такими важными атрибутами как время отправления. Здесь же можно фиксировать и количество проданных билетов, обнуляя этот атрибут при отправлении каждого рейса.
Атрибуты:
cod_trip (код рейса, суррогатный ключ)
week_day (день недели)
hour (часы)
minute (минуты)
cod_route (код маршрута)
cod_bus (код автобуса, назначенного на данный рейс)
tickets (количество проданных билетов)
Окончательно, логическая схема данных имеет вид:

Для формирования данной схемы запускаем Erwin, при запуске выбираем уровень Logical/ Physical (т. е. будем работать и на физическом, и на логическом уровне), из списка СУБД выбираем Oracle. Изображаем приведенную выше логическую модель, пользуясь встроенными средствами системы ErWin.
Физическую схему данных формируем автоматически, переключившись на физический уровень. На этом уровне можно подправить некоторые типы данных, если они нас не устраивают. Так, в таблице km_prices для атрибута price изменим тип с integer на number(4,2) – действительное число с двумя десятичными цифрами (цена задается с копейками).
Физическая схема (получена автоматически):

По этой схеме можно автоматически сформировать сценарий SQL для формирования таблиц. В меню Tools выберите пункт Forward Engineering, в появившемся окне щелкните по кнопке Preview. Сценарий желательно сохранить в виде текстового файла, так его удобнее использовать при создании базы данных.
Лабораторная работа №3
«Создание базы данных»
Цель работы: получить начальные навыки работы с SQL-сервером через консольную программу для связи с сервером. Научиться создавать таблицы средствами языка SQL, последовательности и триггеры для автоматического заполнения первичных ключей, задавать ограничения для таблиц.
Чтобы начать работу с серверной частью, сначала необходимо создать пользователя сервера Oracle и предоставить ему права на подсоединение к базе данных и создание в ней собственных объектов.
Для этого запустите программу SQL Plus из программной группы Oracle, на ее запрос введите имя пользователя SYSTEM, пароль MANAGER и строку подключения (host string) ORCL (либо другую по указанию преподавателя). Мы входим в систему с правами администратора, т. к. только он имеет право создавать пользователей и назначать им привилегии.
В командной строке SQL PLUS введите следующие команды:
Create user имя_пользователя
identified by пароль
default tablespace USERS
temporary tablespace TEMP;
Эта команда создает учетную запись пользователя. Следующая команда дает пользователю привилегии подключаться к базе данных и создавать объекты базы данных в своей схеме.
Grant connect, resource to имя_пользователя;
Выйдите из SQL-Plus, а затем войдите под своим именем и со своим паролем. Теперь можно создавать базу данных в своей схеме на сервере.
Таблицы, ключи
Сценарий создания БД, представляющий собой последовательность команд для создания всех таблиц и определения ключей, мы уже сформировали при помощи ERWin.
Скопируйте все команды Create Table и Alter Table в окно SQL-Plus, и они будут выполнены сразу одна за другой. Можно копировать и выполнять команды по одной, так удобнее контролировать результат выполнения каждой команды.
В сценарии, который сформировал ERWin, есть еще дополнительные команды для создания триггеров (create trigger …), их не нужно копировать в SQL-Plus и выполнять, т. к. в используемой версии Oracle они работают неправильно. Все необходимые нам триггеры мы создадим сами.
Последовательности и триггеры
Чтобы автоматически получать уникальные последовательные числовые значения для первичных ключей, воспользуемся имеющимся в Oracle объектом Sequence (последовательность). Последовательности используются для автоматического заполнения первичных ключей во всех таблицах с суррогатным ключом.
Чтобы создать последовательность с именем, например, bus_seq, нужно выполнить следующую команду:
create sequence bus_seq;
Для обращения к значениям последовательности в выражении SQL используются псевдостолбцы currval и nextval. Currval возвращает текущее значение, NextVal инкрементирует текущее значение и возвращает результат, при этом он становится текущим значением. Чтобы использовать последовательность для генерации уникальных значений первичного ключа, необходимо создать триггер, срабатывающий перед добавлением новой записи. Триггер – это специальная процедура, хранимая на сервере, которая запускается автоматически при наступлении какого-либо события в базе данных.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 |


