Лабораторная работа №1. Создание функций на pl/sql




Скачать 320.49 Kb.
НазваниеЛабораторная работа №1. Создание функций на pl/sql
страница1/3
Дата21.12.2012
Размер320.49 Kb.
ТипЛабораторная работа
  1   2   3

Лабораторные работы по курсу "Базы данных" (2-й семестр)


ВНИМАТЕЛЬНО ПРОЧИТАЙТЕ ЗАДАНИЕ!

ЗАДАНИЕ НА ВЫПОЛНЕНИЕ ЛАБОРАТОРНЫХ РАБОТ:

Лабораторная работа №1. Создание функций на PL/SQL.

Функции предназначены для использования в SQL-предложениях, обращающихся к соответствующим отношениям. Они, по возможности, не должны включать обращения к таблицам БД.

Лабораторная работа №2. Создание процедур на PL/SQL.

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

Лабораторная работа №3. Создание триггеров.

Лабораторная работа №4. Работа со средствами динамического SQL.


Вариант 1. БД отдела кадров.

Л.р. №1. Создание функций.

  1. Функция, определяющая по дате рождения, является ли человек юбиляром в текущем году, и выдающая для юбиляра возраст (юбилейную дату, например, "45"), а в противном случае – пустую строку.

  2. Функция, преобразующая значение ФИО в фамилию с инициалами (например, "Иванов Иван Сергеевич" в "Иванов И.С."). При невозможности преобразования функция возвращает строку '#############'.

  3. Функция, определяющая количество полных лет и месяцев, прошедших между двумя датами. Если вторая дата не указана, берется текущая дата. Функция вызывается для даты приёма на работу.

Л.р. №2. Создание процедур.

  1. Процедура, выводящая список всех сотрудников – юбиляров текущего года (с указанием даты юбилея и возраста). Использовать результаты лаб. работы №1.

  2. Процедура, выводящая список всех должностей и сотрудников в виде:

отдел1 должность1 фамилия1 ставка

фамилия2 ставка

вакантно количество вакантных ставок

должность2 фамилия1 ставка

фамилия2 ставка

фамилия3 ставка

вакантно количество вакантных ставок



отдел2 должность1 фамилия1 ставка



  1. Процедура, выводящая сведения о превышении установленного количества ставок по номеру отдела. Если таких случаев не обнаружено, процедура должна выводить сообщение об этом.

Л.р. №3. Создание триггеров.

  1. Реализация ограничения внешнего ключа.

  2. Проверка значений всех полей отношения "Сотрудники", для которых могут быть определены домены (в частности, количество ставок кратно 0.25 и не может превышать 1.5, дата поступления на работу не может быть больше текущей).

  3. Замена значений поля "Образование":

"ср.", "сред." и т.п. на "среднее",

"ср. спец.", "среднее спец." и т.п. на "среднее специальное",

"выс.", "высш." и т.п. на "высшее",

"н. высшее", "н. высш." и т.п. на "незаконченное высшее".

(Если значение не входит в список допустимых, триггер должен выдавать ошибку).

  1. Регистрация изменений, вносимых в таблицу "Сотрудники" (дублирование старой записи в специальной таблице с указанием даты изменения и пользователя, который их проводит).

Л.р. №4. Работа со средствами динамического SQL.

Создать процедуру, которая выводит в специальную таблицу информацию о количестве записей и средней длине записи во всех таблицах, принадлежащих пользователю, от имени которого запускается эта процедура. Таблица должна принадлежать пользователю, от имени которого запускается процедура. Данные берутся из представления USER_TABLES. Если данные по анализу таблицы устарели или отсутствуют, процедура сначала запускает команду ANALYZE.


Вариант 2. БД бухгалтерии.

Л.р. №1. Создание функций.

  1. Функция расчета стажа работы. Принимает 2 аргумента: стаж на прежних местах работы и дату поступления на данную работу.

  2. Функция, возвращающая отчество из строки ФИО или строку '##########', если она не смогла выделить отчество.

  3. Функция, определяющая, является ли человек пенсионером по полу и дате рождения. Возвращает строку "пенсионер" или пустую строку.

Л.р. №2. Создание процедур.

  1. Процедура, повышающая заработную плату сотрудников:

  • до размера в 1.5 прожиточного минимума, если оклад меньше прожиточного минимума;

  • на 5%, если оклад больше, чем 1.5 прожиточного минимума;

  • на 10%, если работник является начальником подразделения.

Входной параметр – прожиточный минимум.

  1. Процедура расчета зарплаты в виде:

отдел1 1. фамилия1 сумма

2. фамилия2 сумма



отдел2 1. фамилия1 сумма

2. фамилия2 сумма



Сумма рассчитывается как (оклад-13%). Сотрудникам, чей стаж работы на данном предприятии превышает 10 лет, выплачивается надбавка (от 10 до 15 лет – 10% от оклада, от 15 до 20 лет – 20% от оклада, свыше 20 лет – 30% от оклада). Использовать функцию из предыдущей лабораторной работы, в качестве первого аргумента передавать 0.

  1. Процедура начисления премии. Входной параметр – общий размер премиального фонда. Размер премии зависит от оклада и надбавки, надбавка зависит от стажа работы на данном предприятии:

  • 5% от оклада, если стаж от 1 до 5 лет;

  • 10% от оклада, если стаж от 5 до 10 лет;

  • 30% от оклада, если стаж от 10 до 20 лет;

  • 50% от оклада, если стаж от 20 до 30 лет;

  • 100% от оклада, если стаж свыше 30 лет.

Премиальный фонд распределяется пропорционально полученным значениям (оклад + надбавка). Использовать функцию из предыдущей лабораторной работы.

Л.р. №3. Создание триггеров.

  1. Реализация ограничения внешнего ключа.

  2. Проверка значений всех полей отношения "Сотрудники", для которых могут быть определены домены (в т.ч., (возраст сотрудника)-(стаж на прежних работах)-(стаж работы на данном предприятии) не может быть меньше 16, а дата поступления на работу должна быть не больше текущей даты)).

  3. Установка значения поля "пол", если оно не установлено. Правила: если отчество оканчивается на '-ВНА', то пол женский, если на '-ВИЧ', то мужской. В противном случае триггер должен генерировать ошибку.

  4. Регистрация изменений, вносимых в таблицу "Сотрудники" (дублирование старой записи в специальной таблице с указанием даты изменения и пользователя, который их проводит).

Л.р. №4. Работа со средствами динамического SQL.

Создать процедуру, которая принимает в качестве параметров имя таблицы и имена 4-х полей в этой таблице. Первое поле она интерпретирует как ФИО, разбивает его на составляющие и заполняет три оставшихся поля. Если значение первого поля не может быть правильно проинтерпретировано как ФИО (отсутствует отчество, имя и отчество или в строке встречаются недопустимые символы), она помещает в специальную таблицу это значение и соответствующее значение ключа базы данных (ROWID).


Вариант 3. БД деканата (Сессия).

Л.р. №1. Создание функций.

  1. Функция, возвращающая по дате строку, в которой указаны время начала и завершения экзамена или консультации. 2 параметра: дата/время и тип (0 – экзамен, 1 – консультация). Продолжительность экзамена – 5 часов, консультации – 2 часа. (Например, для времени 9.00 и типа 'экзамен' функция должна вернуть
    '9.00 – 14.00').

  2. Функция, преобразующая две строки формата 'DD.MM.YYYY' и 'HH24:MI' в дату. Время должно находиться в интервале от 9.00 до 18.00 и должно быть кратно получасу. Если исходные строки не могут быть преобразованы в дату или время выходит за указанные границы, функция должна возвращать NULL.

  3. Функция, возвращающая фамилию с инициалами по значению ФИО или исходную строку, если строка ФИО содержит менее трех элементов.

Л.р. №2. Создание процедур.

  1. Процедура, выводящая расписание сессии. Список должен выглядеть так:

факультет1

группа1 дисципл1 препод. консультация (дата, время, ауд.) экз. (дата, время, ауд.)

дисципл2 препод. консультация (дата, время, ауд.) экз. (дата, время, ауд.)

дисципл3 препод. консультация (дата, время, ауд.) экз. (дата, время, ауд.)

группа2 дисципл1 препод. консультация (дата, время, ауд.) экз. (дата, время, ауд.)

дисципл2 препод. консультация (дата, время, ауд.) экз. (дата, время, ауд.)



факультет2



Использовать функции из первой лабораторной работы.

  1. Процедура назначения консультаций: накануне каждого экзамена, в свободной аудитории, не позднее 17.00. Время консультации – два часа; время экзамена – пять часов. Считайте, что все номера аудиторий указаны в этой же таблице "Сессия".

  2. Процедура, выдающая ведомость на оплату экзаменационной сессии (каждая фамилия должна встречаться один раз). Профессор за экзамен получает 1000 руб., доцент – 800 руб., старший преподаватель – 500 руб.

Л.р. №3. Создание триггеров.

  1. Реализация ограничения внешнего ключа.

  2. Проверка значений всех полей отношения "Сессия", для которых могут быть определены домены.

  3. Регистрация изменений: при модификации или удалении записи из таблицы "Дисциплины" старое содержимое этой записи дублируется в другую таблицу с указанием даты модификации и пользователя, изменившего запись.

  4. Проверка: в каждый день у преподавателя может быть только один экзамен (но могут быть еще консультации).

Л.р. №4. Работа со средствами динамического SQL.

Создать процедуру, которая принимает в качестве параметров имя таблицы и имя поля в этой таблице. Поле имеет символьный тип с маской '_ _/_ _/_ _ _ _'. Процедура исправляет неправильные даты:

  • если неверно указано число, она заменяет его на '01';

  • если неверно указан месяц, она заменяет его на '01';

  • если неверно указан год (больше текущего или меньше 1900), она заменяет его на '1900'.


Вариант 4. БД спортивного клуба.

Л.р. №1. Создание функций.

  1. Функция, преобразующая значение ФИО в фамилию с инициалами (например, "Иванов Иван Сергеевич" в "Иванов И.С."). При невозможности преобразования функция возвращает строку '#############'.

  2. Функция, возвращающая строку "подходит по возрасту", если спортсмен может участвовать в соревновании, и null в противном случае. 2 параметра: ограничение по возрасту и дата рождения спортсмена.

  3. Функция преобразования номера телефона в строку вида '8-ХХХ-ХХХ-ХХ-ХХ'. Входной параметр – строка с номером телефона в виде 11-и, 10-и или семизначной последовательности.

Л.р. №2. Создание процедур.

  1. Процедура, выводящая список всех спортсменов, которые участвовали в соревнованиях:

Название соревнования1 место1 ФИО спортсмена ФИО тренера

место2 ФИО спортсмена ФИО тренера



Название соревнования2 место1 ФИО спортсмена ФИО тренера



Использовать функцию из лабораторной работы №1.

  1. Процедура, проверяющая, что места участникам соревнований расставлены в соответствии с завоеванными очками, и выдающая нарушения расстановки мест. Проверяется только соответствие правилу "чем больше очков, тем выше место".

  2. Процедура, устанавливающая стипендию спортсменам. Параметр – размер стипендиального фонда. Правила такие: спортсмен, не участвовавший в соревнованиях в прошлом году, стипендию не получает. А остальные получают стипендию пропорционально рейтингу, но так, чтобы общая сумма совпадала с размером стипендиального фонда.

Л.р. №3. Создание триггеров.

  1. Проверка значений всех полей отношения "Спортсмены", для которых могут быть определены домены.

  2. Фиксация в специальной таблице перехода спортсмена от одного тренера к другому (при изменении поля "Тренер" в таблице "Спортсмены").

  3. Увеличение рейтинга спортсмена при добавлении сведений о его участии в соревнованиях: за 1-е место – плюс 20 баллов к рейтингу, за 2-е место – плюс 15, за 3-е место – плюс 10, за простое участие – плюс 2 балла.

  4. Реализация ограничения внешнего ключа.

Л.р. №4. Работа со средствами динамического SQL.

Создать процедуру, которая принимает в качестве параметра имя таблицы и имя поля в этой таблице. Процедура выводит на экран статистику по этой таблице: количество записей в таблице – имя поля – количество различных значений поля – количество null-значений. Статистика подсчитывается в этой процедуре.


Вариант 5. БД диссертаций.

Л.р. №1. Создание функций.

  1. Функция, преобразующая значение ФИО в фамилию с инициалами (например, "Иванов Иван Сергеевич" в "Иванов И.С."). При невозможности преобразования функция возвращает строку '#############'.

  2. Функция, выдающая полное название учетной степени по параметрам "Тип" и "Раздел науки". Например, для типа "докторская" и раздела "Технические науки" функция должна вернуть "доктор технических наук".

  3. Функция, выдающая возраст по двум датам: дате рождения и дате, на которую интересует возраст. Если вторая дата не указана, то возраст на текущую дату. Вызывать функцию для двух полей: дата рождения автора и дата защиты диссертации.

Л.р. №2. Создание процедур.

  1. Процедура, выдающая отчет по диссертациям, защищенным в определенном году:

Раздел1

Направление1

ФИО1 дата защиты название диссертации

ФИО2 дата защиты название диссертации



Направление2

ФИО1 дата защиты название диссертации



Раздел2

Направление1

ФИО1 дата защиты название диссертации



Сначала для каждого научного направления выводятся данные о докторских диссертациях, затем – о кандидатских. Параметр – год защиты. Использовать функцию из лабораторной работы №1.

  1. Процедура поиска авторов, которые внесены в таблицу "Авторы" дважды. Идентификация автора происходит по совпадению ФИО и даты рождения (паспортные данные могут измениться). Если при этом диссертации (кандидатская и докторская) защищены по одному направлению, то это один и тот же человек. Данные о нем объединяются: в таблице "Авторы" остается одна строка с более поздней датой выдачи паспорта.

  2. Выдает список авторов с указанием ученой степени. Если автор защитил кандидатскую и докторскую диссертации по одному разделу, то он является доктором наук. Если разделы разные, то ученые степени перечисляются через запятую (например, 'кандидат экономических наук, доктор технических наук'). Использовать функцию из лабораторной работы №1.

Л.р. №3. Создание триггеров.

  1. Реализация ограничений внешнего ключа.

  2. Проверка значений всех полей отношения "Диссертации", для которых могут быть определены домены (в т.ч., дата защиты и дата утверждения не могут быть больше текущей даты).

  3. Замена при добавлении данных сокращенных значений поля "Тип" отношения "Диссертации" на полные ("канд" на "кандидатская" и т.п.).

  4. Триггер, переносящий в архив (в специальную таблицу) изменения сведений об авторах.

Л.р. №4. Работа со средствами динамического SQL.

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


Вариант 6. БД больницы.

Л.р. №1. Создание функций.

  1. Функция, возвращающая строку "больше месяца", если со времени поступления пациента прошло более 1 месяца. Параметр – дата поступления.

  2. Функция, преобразующая значение ФИО в фамилию с инициалами (например, "Иванов Иван Сергеевич" в "Иванов И.С."). При невозможности преобразования функция возвращает строку '#############'.

  3. Функция, выдающая возраст по двум датам: дате рождения и дате, на которую интересует возраст. Если вторая дата не указана, то возраст на текущую дату. Вызывать функцию для двух полей: дата рождения и дата поступления пациента.

Л.р. №2. Создание процедур.

  1. Процедура, распределяющая больных временно отсутствующего лечащего врача по другим лечащим врачам в соответствии со специализацией врачей. Процедура не должна допускать перекоса при распределении пациентов (т.е. всех пациентов – одному врачу). В качестве параметра принимает идентификатор врача.

  2. Процедура, выводящая список палат с указанием количества коек и статуса палаты:

"пустая", если в палате никто не лежит,

"свободных мест нет", если палата заполнена,

"мужская", если в палате лежат только мужчины,

"женская", если в палате лежат только женщины,

"ошибка в данных" во всех остальных случаях.

Параметр – название отделения.

  1. Процедура, создающая отчет "Оборачиваемость коек": отделение – количество коек – коэффициент занятости. Коэффициент занятости высчитывается как отношение суммарной продолжительности пребывания пациентов в отделении в течение года, к произведению общего количества дней в году на количество коек в данном отделении.

Л.р. №3. Создание триггеров.

  1. Реализация ограничения внешнего ключа.

  2. Проверка значений всех полей отношения "Пациенты", для которых могут быть определены домены.

  3. Если при вводе данных дата поступления не указана, устанавливать текущую дату.

  4. При удалении данных о пациенте – перенос этих данных в архив.

Л.р. №4. Работа со средствами динамического SQL.

Создать процедуру, которая принимает в качестве параметра имя таблицы. Процедура выводит на экран информацию обо всех таблицах, связанных с указанной таблицей по внешнему ключу и принадлежащих пользователю, от имени которого запускается эта процедура. Эта информация включает в себя имя таблицы, количество различных значений внешнего ключа и среднее количество записей на одно значение внешнего ключа.
  1   2   3

Похожие:

Лабораторная работа №1. Создание функций на pl/sql iconЛабораторная работа Использование редактора запросов sql borland sql explorer(TM) для создания запросов к данным с использованием языка sql

Лабораторная работа №1. Создание функций на pl/sql iconЛабораторная работа №5 посвящена оптимизации запросов и работе с индексами
Лабораторные работы заключаются в изучении языка sql. Работы выполняются в sql plus под управлением системы Oracle (версии не ниже...
Лабораторная работа №1. Создание функций на pl/sql iconЛабораторная работа №2: Создание er-модели и ее нормализация. Создание er-модели и ее нормализация Ознакомление с методами и алгоритмом создания модели «Сущность-связь»
Лабораторная работа №3: Проектирования бд на основе декомпозиции универсального отношения
Лабораторная работа №1. Создание функций на pl/sql iconЛабораторная работа № Создание простейшей базы данных 8 Лабораторная работа № Создание базы данных «Библиотека»
База данных – это организованная структура, предназначенная для хранения информации. В современных базах данных хранятся не только...
Лабораторная работа №1. Создание функций на pl/sql iconЛабораторная работа «Создание www-странички с фреймами»

Лабораторная работа №1. Создание функций на pl/sql iconЛабораторная работа №1 Создание базы данных Access
Создать первую таблицу, согласно заданию из приложения 1, с использованием мастера
Лабораторная работа №1. Создание функций на pl/sql iconЛабораторная работа Установка и настройка 6 Лабораторная работа Демонстрационный проект 7 Упражнение 1: Работа с основной схемой проекта 7 Упражнение 2: Работа со схемой «Резервуарный парк»
Разработка систем диспетчерского контроля и управления с использованием Infinityscada 4
Лабораторная работа №1. Создание функций на pl/sql iconЛабораторная работа. Получение и свойства оксидов, гидроксидов и солей
Лабораторная работа. Ряд напряжений металлов. Гальванические элементы. Электролиз юююююю
Лабораторная работа №1. Создание функций на pl/sql iconТематическое планирование биология, 6 класс
Морфология листа (лабораторная работа) 12. Строение растительного организма. Клетки и ткани 13. Типы растительных тканей (Лабораторная...
Лабораторная работа №1. Создание функций на pl/sql icon«московский государственный университет пищевых производств» Конопленко Е. И., Хореева Н. К., Лапусь А. П
Лабораторная работа №6. Обобщение данных. Создание таблицы подстановки. Подведение итогов 28
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница