Создание хранимых процедур и представлений. Триггеры и привилегии
Создание таблиц с первичным ключом и ограничением 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