Создание хранимых процедур и представлений. Триггеры и привилегии

Создание таблиц с первичным ключом и ограничением NOT NULL, тип связи - "один-ко-многим". Разработка пакета, содержащего процедуры заполнения таблиц данными об авиарейсах. Разработка триггера для обеспечения ограничений на изменение данных; представления.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 08.10.2017
Размер файла 78,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.Allbest.ru/

Федеральное агентство связи

Государственное образовательное учреждение высшего профессионального образования

Сибирский государственный университет телекоммуникаций и информатики

Кафедра ПМиК

Курсовая работа

По дисциплине

Сетевые базы данных

Создание хранимых процедур и представлений. Триггеры и привилегии

Выполнил: Семенов В.П.

Студент группы П-93

Проверил: Грязнов Н.Г.

Новосибирск, 2013

Содержание

  • Задание
  • 1. Структура таблиц
  • 2. SQL-сценарии
    • Начальное заполнение
    • Начальные данные
    • Триггер
    • Представление
    • Второй пакет
  • 3. Привилегии

Выводы

Литература

Задание

Создать две таблицы, каждая из которых должна иметь первичный ключ и, по крайней мере, один столбец с ограничением NOT NULL. Таблицы должны быть связаны внешним ключом; тип связи - "один-ко-многим". Создать пакет, содержащий процедуру начального заполнения таблиц данными (по 7-10 записей в таблице) и процедуру очистки таблиц (удаления записей).

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

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

Предоставить привилегии всем пользователям базы данных Oracle на использование представления для просмотра данных. Предоставить привилегию конкретному пользователю на выполнение процедуры изменения данных.

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

Варианты заданий находятся в файлах varNN.txt, где NN - номер группы.

В таблицах должна содержаться информация об Авиарейсах и Категориях рейсов. Каждый рейс может иметь несколько сервисных категорий. Процедура должна добавлять рейс в таблицу. Триггер должен разрешать добавление только после 20-го числа. Включить в пакет еще одну процедуру, которая выводит количества категорий для каждого рейса, кроме рейса, заданного в параметре. Выборку данных производить в запись, созданную на основе явно определяемого курсора.

1. Структура таблиц

Авиарейсы: race

Название поля

Описание поля

Тип

race_id

Первичный ключ

number(8), not null

name

Название рейса

varchar(128)

Сервисные категории: categories

Название поля

Описание поля

Тип

id

Первичный ключ

number(8), not null

name

Название категории

varchar(128)

race

Внешний ключ - идентификатор рейса

number(8), not null

2. SQL-сценарии

Начальное заполнение

drop table categories;

drop sequence seq_id_categories;

commit;

drop table race;

drop sequence seq_id_race;

commit;

/* рейсы */

create sequence seq_id_race;

create table race(

race_id number(8) not null,

name varchar(128)

);

alter table race add (constraint race_pk primary key (race_id));

commit;

/* сервисные категории */

create sequence seq_id_categories;

create table categories(

categories_id number(4) not null,

name varchar(128),

race number(8) not null

);

alter table categories add (constraint categories_pk primary key

(categories_id));

alter table categories add (constraint categories_fk foreign key (race)

references race(race_id));

commit;

create or replace package fill_everything is

procedure fill_races;

procedure clear_races;

procedure clear_categories;

procedure fill_categories;

end fill_everything;

create or replace package body fill_everything is

procedure clear_races is

begin

delete from race;

if sql % notfound then

raise NO_DATA_FOUND;

end if;

exception

when NO_DATA_FOUND then

dbms_output.put_line('No races found!');

end clear_races;

procedure fill_races is

begin

insert into race values (seq_id_race.nextval, 'ТИ 916');

insert into race values (seq_id_race.nextval, 'ЛА 161');

insert into race values (seq_id_race.nextval, 'ПЛ 541');

insert into race values (seq_id_race.nextval, 'С7 173');

insert into race values (seq_id_race.nextval, 'У6 100');

insert into race values (seq_id_race.nextval, 'ЮТ 569');

insert into race values (seq_id_race.nextval, 'УН 107');

insert into race values (seq_id_race.nextval, 'ГЛ 3338');

end fill_races;

таблица авиарейс ключ триггер представление

procedure clear_categories is

begin

delete from categories;

if sql%notfound then

raise NO_DATA_FOUND;

end if;

exception

when NO_DATA_FOUND then

dbms_output.put_line('No companies found!');

end clear_categories;

procedure fill_categories is

begin

insert into categories values (seq_id_categories.nextval, 'первый класс

улучшенный', 1);

insert into categories values (seq_id_categories.nextval, 'первый класс',

1);

insert into categories values (seq_id_categories.nextval, 'первый класс со

скидкой', 2);

insert into categories values (seq_id_categories.nextval, 'бизнес-класс

улучшенный', 2);

insert into categories values (seq_id_categories.nextval, 'бизнес-класс', 2);

insert into categories values (seq_id_categories.nextval, 'бизнес-класс со

скидкой', 3);

insert into categories values (seq_id_categories.nextval, 'экономический

класс улучшенный', 4);

insert into categories values (seq_id_categories.nextval, 'экономический

класс с фиксированными тарифами', 5);

insert into categories values (seq_id_categories.nextval, 'экономический

класс со скидкой', 6);

end fill_categories;

end fill_everything;

begin

fill_everything.fill_races;

fill_everything.fill_categories;

end;

Начальные данные

Рейсы:

select * from race;

Категории сервиса:

select * from categories;

select * from categories, race where categories.race = race.race_id;

Триггер

Триггер должен разрешать добавление только после 20-го числа.

drop trigger on_insert_race;

create or replace trigger on_insert_race

before insert on race

begin

if to_char(sysdate,'dd')<'20' then

raise_application_error(-20999, 'You cannot insert entries to table "race".');

end if ;

end;

При выполнении такого скрипта до 20-го числа появится исключение:

begin

fill_everything.fill_races;

fill_everything.fill_categories;

end;

Представление

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

create or replace view categories_race as

select categories.name as categories_name, race.name as race_name

from categories, race

where (categories.race = race.race_id)

and (race.race_id = 2);

Второй пакет

Содержит вызовы процедур из первого пакета.

Содержит процедуру categories_for_races, которая выводит количества категорий для каждого рейса, кроме рейса, заданного в параметре.

create or replace package pack_2 is

procedure categories_for_races(except_race_name in VARCHAR);

procedure fill_all;

procedure clear_all;

end pack_2;

create or replace package body pack_2 is

procedure categories_for_races(except_race_name in VARCHAR) is

var_race_id number(8);

var_race_name varchar(128);

custnum number;

cursor c1 is

select race.race_id as race_id, race.name as race_name

from race

where not race.name = except_race_name;

begin

open c1;

FETCH c1 INTO var_race_id, var_race_name;

LOOP

select count(*) into custnum from categories where categories.race =

var_race_id;

dbms_output.put_line(var_race_name || ': ' || custnum);

FETCH c1 INTO var_race_id, var_race_name;

EXIT WHEN c1%NOTFOUND;

END LOOP;

CLOSE c1;

end categories_for_races;

procedure fill_all is

begin

fill_everything.fill_categories;

fill_everything.fill_races;

end fill_all;

procedure clear_all is

begin

fill_everything.clear_categories;

fill_everything.clear_races;

end clear_all;

end pack_2;

Результаты запуска процедуры «categories_for_races»:

3. Привилегии

Предоставить привилегии всем пользователям базы данных Oracle на использование представления для просмотра данных. Предоставить привилегию конкретному пользователю на выполнение процедуры изменения данных.

grant select on categories to public;

grant select on race to public;

grant update on categories to up1;

grant update on race to up1;

Выводы о проделанной работе

В процессе разработки скриптов, необходимых для выполнения задания курсовой работы, были разработаны две таблицы: airplanes и flights, необходимые для хранения информации предметной области. При этом были учтены связи между таблицами. Также были разработаны пакеты, содержащие процедуры обработки данных; триггер, контролирующий время выхода фильма; и представление view, позволяющее пользователям БД просматривать информацию из связанных таблиц в формализованном и удобочитаемом виде.

В ходе выполнения данной курсовой работы я закрепил и улучшил навыки работы с СУДБ Oracle, полученные при выполнении лабораторных работ.

Литература

1. Лекции по курсу «Сетевые базы данных»

2. Oracle PL/SQL для профессионалов 3-е изд. / С. Фейерштейн, Б. Прибыл, - СПб.: Питер, 2004. - 941 с.

3. Краткий справочник по Oracle7. http://www.codenet.ru/db/oracle/ora1/

4. Oracle Database SQL Reference 10g Release 2 (10.2).

Размещено на Allbest.ru

...

Подобные документы

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

    курсовая работа [820,4 K], добавлен 16.06.2013

  • Создание баз данных с помощью Transact-SQL. Специализированные типы данных. Обеспечение целостности ссылок. Преимущества хранимых процедур. Синтаксис запроса на создания триггера. Фиксированные серверные роли. Предоставление прав на объекты в базе данных.

    лабораторная работа [2,2 M], добавлен 12.09.2012

  • Язык манипуляции данными. Процесс отбора данных. Использование агрегатных функций и специальных операторов в условиях отбора. Создание и использование представлений и хранимых процедур. Использование триггеров, разработка интерфейса пользователя.

    лабораторная работа [70,6 K], добавлен 13.02.2013

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

    курсовая работа [1,5 M], добавлен 22.11.2010

  • Анализ предметной области и создание таблиц базы данных "Фирма по продаже запчастей". Простой выбор данных и обработка группирующих запросов с условием средствами MS SQL Server 2008. Создание хранимых процедур и функций, изменение структуры базы данных.

    курсовая работа [6,1 M], добавлен 16.12.2015

  • Стандартные функции MS SQL-сервера. Состав и структура таблиц базы данных. Диалог пользователя с приложением. Корректировка таблиц-справочников. Построение печатных форм. Использование представлений, хранимых процедур и функций, курсоров, триггеров.

    курсовая работа [609,2 K], добавлен 28.01.2016

  • Создание моделей данных, основных таблиц с помощью конструктора таблиц, связей между таблицами, форм для заполнения таблиц, запросов на выборку данных, отчетов для вывода на печать и начальной кнопочной формы. Основные объекты Microsoft Access.

    контрольная работа [4,5 M], добавлен 18.03.2012

  • Рассмотрение теоретических основ проектирования. Анализ предметной области и разработка таблиц базы данных. Заполнение таблиц, поиск данных с помощью фильтра. Создание форм, разработка запросов. Создание и настройка отчетов, составление приложения.

    курсовая работа [2,8 M], добавлен 01.06.2014

  • Особенности модификации таблиц базы данных средствами СУБД Access. Описание свойств полей, задания ограничений, масок ввода данных. Создание и модификации таблиц, установка их свойств. Схема связи таблиц. Представление результатов задания в виде таблицы.

    лабораторная работа [243,5 K], добавлен 13.06.2014

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

    контрольная работа [1,4 M], добавлен 11.04.2012

  • Этапы создания программы для учета рождаемости детей. Разработка базы из основной таблицы с оперативными данными и четырех таблиц-справочников с наименованиями кодов. Создание форм для заполнения таблиц и просмотра запросов с русифицированными кнопками.

    практическая работа [1,6 M], добавлен 13.07.2010

  • Понятие баз данных и принципы проектирования информационных систем. Разработка программы для отслеживания финансовой стороны работы компании в среде Delphi 7. Создание таблиц и схемы данных. Разработка клиентского приложения и процедуры добавления данных.

    курсовая работа [1,4 M], добавлен 25.04.2012

  • Создание БД с информацией о сотрудниках на основе таблиц: "Сотрудники", "Отдел". Поиск, сортировка и фильтрация данных в таблицах. Запросы на выборку данных, удаления и замены. Создание форм и отчетов на основе запросов и таблиц. Диспетчер кнопочных форм.

    лабораторная работа [136,7 K], добавлен 01.12.2011

  • Разработка структуры таблиц собственной базы данных Access. Последовательность действий при создании структуры таблиц с помощью мастера и конструктора. Создание и редактирование модулей. Создание отчета на основе нескольких таблиц с помощью мастера.

    лабораторная работа [25,3 K], добавлен 16.11.2008

  • Установление связи между таблицами. Создание запроса с параметром для отбора пациентов с определенным видом заболевания. Создание формы для ввода данных, отчетов и главной кнопочной формы. Ход разработки базы данных. Изменение и обновление записей.

    курсовая работа [4,5 M], добавлен 20.06.2017

  • Программирование геоинформационной системы: создание векторного чертежа университета, слоев, блоков, написание базы данных (составление таблиц, их связи, нормализация данных), разработка приложения для связи графической и атрибутивной информации.

    курсовая работа [3,0 M], добавлен 30.07.2010

  • Операторы языка хранимых процедур в среде MS SQL Server: IF, WHILE, RETURN, ET, SELECT, DECLARE. Структура базы данных, состав таблиц. SQL-код для создания таблиц и описания ограничений. Схема диалога пользователей с системой управления спортивной школой.

    курсовая работа [2,3 M], добавлен 30.04.2013

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

    контрольная работа [50,1 K], добавлен 30.10.2009

  • Создание баз данных и таблиц. Ограничение доступа для пользователей. Хранимая процедура, доступная всем пользователям. Скрипты для проверки ограничений. Методы обеспечения безопасности сервера базы данных. Чтение, изменение и добавление данных.

    лабораторная работа [1,4 M], добавлен 23.07.2012

  • Цель инфологического моделирования базы данных. Создание с помощью СУБД Microsoft SQL Server шести сущностей с определенными атрибутами, представлений, основанных на соединении столбцов нескольких таблиц и связей между ними. Создание процедур и запросов.

    курсовая работа [721,4 K], добавлен 29.11.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.