Отчет по практике oracle

Обновлено: 07.07.2024

В данной главе отчета описывается свободно — распространяемое программное обеспечение — пакет WOW. Для освоения этого материала необходимо знание языка SQL и его процедурного расширения PL/SQL от фирмы Oracle. Кроме этого необходимо знание основ администрирования сервера Oracle. Информацию по PL/SQL Вы можете получить из документации по серверу Oracle, книга «PL/SQL Users Guide and Reference». Информацию об основах администрирования сервера Oracle можно получить из этой же документации, книга «Oracle7 Server Administration Guide».

Пакет WOW предназначен для использования под ОС Unix.

7.2 Назначение и схема работы

Пакет WOW предназначен для обработки запросов от WWW — сервера (Web - ) к SQL — серверу Oracle (-Oracle- ) с генерацией динамических HTML — документов (-Web ). Разработчик приложений, использующий WOW оперирует только с родным языком Oracle — PL/SQL, являющимся процедурным расширением языка SQL. Это обуславливает высокую эффективность разработки приложений. Обработка созданных приложений непосредственно в сервере Oracle определяет высокую скорость исполнения приложений.

Основная идея пакета WOW — преобразование запроса к WWW — серверу в вызов определенной процедуры PL/SQL. В качестве параметров процедуры, используются данные из запроса к WWW — серверу. Кроме этого, язык PL/SQL дополняется функциями вывода различных данных в формате HTML. Сфера технологических решений пакета приведена на рис. 7-1.

7.3 Состав

Структурно, WOW состоит из ряда исполняемых программ, соответствующих спецификации CGI и набора пакетов PL/SQL (см. рис. 7-2).

Пакет htp содержит процедуры и функции, облегчающие формирование HTML — документа. Пакет htf содержит описание различных констант и функций, используемых при формировании HTML — документов.

7.4 Установка

Для корректной работы пакета необходимо правильно провести процедуру установки. Пакет WOW требует около 2Mb дискового пространства. На базовом сервере должны быть установлены:

  1. операционная система семейства Unix;
  2. WWW — сервер;
  3. сервер баз данных Oracle или сетевой стек Oracle SQL*Net с возможностью доступа к удаленному серверу баз данных Oracle.

Этап I

В случае, когда пакет поставляется в виде исходных текстов, необходимо произвести компиляцию и сборку исполняемого модуля wowstub . При сборке wowstub необходимо использовать библиотеки установленного сервера Oracle или сетевого стека SQL*Net. Компиляция и сборка производится утилитой make на основании данных файла Makefile. Вам необходимо изменить ряд параметров Makefile для настройки на Вашу конфигурацию Oracle и Unix:

  • ORACLE_HOME — должен совпадать с каталогом, определенным переменной ORACLE_HOME сервера Oracle.
  • DEST_DIR — должен указывать на каталог, хранящий CGI модули Вашего WWW сервера.
  • DOC_ROOT — должен указывать на каталог в котором будет размещена документация по WOW. Каталог должен быть доступен для WWW сервера.

Этап II

Независимо от сборки wowstub , необходимо создать ряд структур данных в БД Oracle.

  1. Создать пользователя, через которого WOW будет осуществлять доступ к данным и исполнение рабочих процедур. Обычно используется имя WWW.
  2. Создать из под вышеупомянутого пользователя все необходимые структуры данных и примеры. Для этого необходимо исполнить следующие SQL файлы, идущие в дистрибутиве WOW: wow.sql, ht.sql, math.sql, emp.sql, showemp.sql, hanoi.sql. Исполнить эти файлы можно с использованием одной из следующих утилит: SQL*Plus, SQL*DBA, Server Manager, Enterprize Manager.

Этап III

Необходимо поместить модуль wowstub в каталог CGI программ Вашего WWW сервера. Необходимо переопределить ряд параметров файла wow , представляющего собой скрипт sh:

  1. ORACLE_HOME — в соответствии с параметром ORACLE_HOME Вашего сервера Oracle или стека SQL*Net;
  2. TWO_TASK — в соответствии с параметром TWO_TASK клиентской части Вашего сервера Oracle;
  3. WOW_UID — в соответствии с именем пользователя и его паролем, созданными на этапе II установки.

В случае если Вы используете версию от ЦНИТ НГУ, необходимо отредактировать все 4 файла: wow.win , wow.iso , wow.alt , wow.koi8 .

Отредактированный файл wow (все 4 отредактированных файлы при использовании версии от ЦНИТ НГУ) необходимо поместить в каталог для CGI — программ Вашего WWW сервера.

7.5 Использование

происходит следующая цепочка действий (см. рис. 7-3):

  1. WWW — сервер интерпретирует это обращение как запуск CGI — программы wow.win.
  2. Программа wow.win интерпретирует параметры как вызов процедуры test пакета example с параметром answer имеющим значение no, созданной в схеме WWW сервера Oracle.
  3. Сервер Oracle исполняет эту процедуру и все процедуры и функции, вызываемые из нее. Выходные данные, представляющие динамически созданный HTML — документ, передаются программе wow.win.
  4. Программа wow.win перекодирует выходной документ в кодировку Microsoft CodePage 1251, используемую в Windows — приложениях, и передает его WWW — серверу.
  5. WWW — сервер возвращает созданный документ, как результат запроса, WWW — клиенту.

URL, обращающийся к процедуре PL/SQL должен быть построен по определенным правилам и содержать ряд элементов:

  1. Указатель на модуль пакета WOW, находящийся в каталоге CGI — программ. Расширение программы wow.koi8, .win, .iso, .alt определяет кодировку WWW — клиента:
  • КОИ-8
  • Microsoft Code Page 1251
  • ISO 8859-5
  • Microsoft Code Page 866
  1. Имя процедуры PL/SQL, к которой происходит обращение. Модули пакета используют схему и регистрационные данные пользователя www БД Oracle. Таким образом, вызываемая PL/SQL — процедура должна быть доступна пользователю www на исполнение. Если процедура (test ) создана прямо в схеме www, необходимо просто указать ее имя:

Если процедура входит в состав пакета (example ), созданного в схеме www , необходимо добавить имя пакета и имя процедуры:

Когда пакет создан в другой схеме Oracle, необходимо указывать и имя схемы. Например, для схемы fancy получим:

Пользователь www должен иметь права на исполнение этой процедуры, явно предоставленные оператором GRANT языка SQL.

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

<название_параметра> = <значение_параметра>

между собой, различные параметры разделяются амперсандом '&':

<название_параметра1>= <значение_параметра1>& <название_параметра2>= <значение_параметра2>

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

Исходя из описанного механизма работы пакета WOW можно сформулировать основные требования к PL/SQL — процедурам, обрабатывающим запросы от WWW — сервера.

  1. Все входные переменные, передающиеся через WOW в процедуру всегда имеют тип varchar2. Если Вы хотите использовать какой — либо другой тип данных, необходимо использовать функции преобразования из varchar2.
  2. В пакете htp отсутствуют функции вывода начала и конца HTML — документа. Поскольку многие современные броузеры интерпретируют текст без обрамляющих тегов <HTML>… </HTML> как преформатированный, необходимо прямо задавать эти теги в начале и конце документа.

Пример пакета example :
Create or Replace package example is
procedure test(answer in Varchar2);
end;
/
Create or Replace package body example is
procedure test(answer in Varchar2) is
ответ varchar2(3);
cursor c_man(ans in varchar2) is select Фамилия from Результаты_опроса where Ответ=ans order by Фамилия;
begin
— Начало документа
htp.p('<HTML>');
— Вывод названия страницы и заголовка
if answer = 'no'
then
ответ:='НЕТ';
htp.htitle('Фамилии людей, ответивших отрицательно');
else
ответ:='ДА';
htp.htitle('Фамилии людей, ответивших положительно');
end if;
htp.olistopen;
— Начало нумерованного списка
for man in c_man(Ответ) loop
— Элемент списка
htp.item(man.Фамилия);
end loop;
— Конец нумерованного списка
htp.olistclose;
— Конец документа
htp.p('</HTML>');
end;
end;
/

При этом подразумевается что в схеме WWW Oracle находится таблица примерно следующей структуры:

Create table Результаты_опроса(Фамилия varchar2(30),
Имя varchar2(14),
Отчество varchar2(20),
Ответ varchar2(3));

Обращаться к пакету WOW можно и из форм HTML. Ниже приведен пример обращения к тому же пакету example из простейшей формы.

7.6 Спецификация процедур пакета htp

procedure title(ctitle in varchar2)

— выводит название документа (теги <TITLE> )

procedure htitle(ctitle in varchar2)

— выводит название документа и повторяет его в заголовке первого уровня (теги <TITLE >, <H1> )

procedure header(nsize in integer, cheader in varchar2)

— выводит заголовок уровня nsize (теги <H1><H6> )

procedure url(curl in varchar2, cname in varchar2)

— формирует cname как гипертекстную связь, указывающую на curl (теги <A HREF> ).

procedure gif(curl in varchar2)

— включает в документ картинку, путь до которой curl (теги <IMG> ).

procedure gif(curl in varchar2, calign in varchar2)

— включает в документ картинку, путь до которой curl с выравниванием, определяемым параметром calign (теги <IMG> ).

procedure bold(ctext in varchar2)

— выводит текст ctext жирным шрифтом (теги <B> ).

procedure italic(ctext in varchar2)

— выводит текст ctext шрифтом italic (теги <I> )

procedure item(cval in varchar2)

— выводит cval как элемент списка (теги <ITEM> ).

procedure formOpen(curl in varchar2)

— создает форму с действием curl (теги <FORM> ).

procedure formHidden(cname in varchar2, cvalue in varchar2)

— создает скрытое поле формы для хранения значения cvalue переменной с именем cname.

procedure formPassword(cname in varchar2),
procedure formPassword(cname in varchar2, cvalue in varchar2)

— создает поле формы для ввода значения переменной — пароля с именем cname и значением по умолчанию cvalue.

procedure formField(cname in varchar2, nsize in integer),
procedure formField(cname in varchar2),
procedure formField(cname in varchar2, cvalue in varchar2)

— создает поле формы для ввода значения переменной с именем cname длиной nsize со значением по умолчанию cvalue.

procedure formText(cname in varchar2, nrow in integer, ncol in integer)

— создает многострочное поле формы (длиной ncol, высотой nrow ) для ввода значения переменной с именем cname.

procedure formCheckbox(cname in varchar2)

— создает элемент checkbox для ввода значения логической переменной cname.

procedure formRadio(cname in varchar2, cval in varchar2)

— создает элемент radiobutton для ввода одного из значений cval переменной cname.

procedure formSelectOpen(cname in varchar2)

— создает список значений для переменной с именем cname.

procedure formSelectOption(cval in varchar2)

— добавляет значение cval в список значений переменной, описанной в formSelectOpen.

— заканчивает список значений, открытый formSelectOpen.

procedure formDo(cname in varchar2)

— создает кнопку типа SUBMIT текущей формы с именем cname.

— создает кнопку типа SUBMIT текущей формы с именем 'Submit'.

procedure formUndo(cname in varchar2)

— создает кнопку типа RESET текущей формы с именем cname.

— создает кнопку типа RESET текущей формы с именем 'Reset'.

— закрывает текущую форму.

Процедуры вывода:

procedure print (cbuf in varchar2),
procedure print (dbuf in date),
procedure print (nbuf in number)

— выводят значение различных типов.

Синонимы для процедуры print — p:

procedure p (cbuf in varchar2),
procedure p (dbuf in date),
procedure p (nbuf in number).

Под базой данных (БД) понимают хранилище структурированных данных, при этом данные должны быть непротиворечивы, минимально избыточны и целостны.

Жизненный цикл любого программного продукта, в том числе и системы управления базой данных, состоит из стадий проектирования, реализации и эксплуатации.

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

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

Хорошо спроектированная база данных:

· Удовлетворяет всем требованиям пользователей к содержимому базы данных. Перед проектированием базы необходимо провести обширные исследования требований пользователей к функционированию базы данных.

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

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

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

Логически в современной реляционной СУБД можно выделить наиболее внутреннюю часть – ядро СУБД (часто его называют DataBaseEngine), компилятор языка БД (обычно SQL), подсистему поддержки времени выполнения, набор утилит. В некоторых системах эти части выделяются явно, в других – нет, но логически такое разделение можно провести во всех СУБД.

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

Описание Предметной области

Автоматизированная информационная система (АИС)

Автоматизированная информационная система (АИС) — совокупность программно-аппаратных средств, предназначенных для автоматизации деятельности, связанной с хранением, передачей и обработкой информации.

АИС являются, с одной стороны, разновидностью информационных систем (ИС), с другой — автоматизированных систем (АС), вследствие чего их часто называют ИС или АС.

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

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

Основной причиной создания и развития АИС является необходимость ведения учёта информации о состоянии и динамике объекта, которому посвящена система. На основании информационной картины, создаваемой системой, руководители различного звена могут принимать решения об управляющих воздействиях с целью решения текущих проблем.

Учётные данные системы могут быть подвергнуты автоматической обработке для последующего тактического и стратегического анализа с целью принятия управленческих решений большего горизонта действия.

· Побочными, возможными, но не гарантированными эффектами от использования системы могут выступать:

· повышение производительности работы персонала;

· улучшение качества обслуживания клиентов;

· снижение трудоемкости и напряженности труда персонала;

· снижение количества ошибок в его действиях.

АИС «Риелторская контора»

Данный ПП моделирует работу организации занимающейся покупкой-продажей недвижимости. ПП позволяет пользователю осуществлять покупку недвижимости, а также позволяет вносить риелтору в базу новую недвижимость со всеми данными о ней.

Цель создания программы состоит в следующем:

· сокращение времени обработки информации;

· простоте реализации различных запросов и скорости обработки данных;

Благодаря тому, что программа реализована при помощи Microsoft® Access 2000, она имеет внешний вид (интерфейс) характерный для всех приложений разработанных под операционную систему Microsoft® Windows, который очень прост и дружелюбен по отношению к пользователю.

Разработка ПП . Выбор среды программирования

Мною была выбрана СУБД MicrosoftAccess. Microsoft Office Access или просто Microsoft Access — реляционная СУБД корпорации Microsoft. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных. Основные компоненты MS Access:

· построитель экранных форм;

· построитель SQL-запросов (язык SQL в MS Access не соответствует стандарту ANSI);

· построитель отчётов, выводимых на печать.

Они могут вызывать скрипты на языке VBA, поэтому MS Access позволяет разрабатывать приложения и БД практически «с нуля» или написать оболочку для внешней БД.

MS Access является файл-серверной СУБД и потому применима лишь к маленьким приложениям. Отсутствует ряд механизмов, необходимых в многопользовательских БД, таких, например, как триггеры. Опыт показывает[источник не указан 55 дней], что даже для проектов на 5-20 пользователей предпочтительно использовать клиент-серверные решения.

Существенно расширяет возможности MS Access по написанию приложений механизм связи с различными внешними СУБД: "связанные таблицы" (связь с таблицей СУБД) и "запросы к серверу" (запрос на диалекте SQL, который "понимает" СУБД). Также MS Access позволяет строить полноценные клиент-серверные приложения на СУБД MS SQL Server. При этом имеется возможность совместить с присущей MS Access простотой инструменты для управления БД и средства разработки.

Выбор модели

На сегодняшний день наиболее часто используются три модели данных: иерархическая, сетевая и реляционная. Кроме них существуют и другие модели, например модель данных, основанная на инвертированных списках или объектно-ориентированная, однако они не имеют широкого распространения, так как базы на инвертированных списках использовались на заре развития СУБД, а объектно-ориентированные базы данных ещё не до конца изучены. Таким образом, выбор сокращается до трёх вышеназванных моделей данных.

Иерархические базы данных. Этот вид баз данных одним из первых получил широкое распространение и стал промышленно использоваться. Иерархическая БД состоит из упорядоченного набора деревьев; более точно, из упорядоченного набора нескольких экземпляров одного типа дерева. Тип дерева состоит из одного "корневого" типа записи и упорядоченного набора из нуля или более типов поддеревьев (каждое из которых является некоторым типом дерева). Тип дерева в целом представляет собой иерархически организованный набор типов записи. Примерами типичных операторов манипулирования иерархически организованными данными могут быть следующие операторы:

- Найти указанное дерево БД;

- Перейти от одного дерева к другому;

- Перейти от одной записи к другой внутри;

- Перейти от одной записи к другой в порядке обхода иерархии;

- Вставить новую запись в указанную позицию;

- Удалить текущую запись.

Одним из основных преимуществ иерархической модели данных является скорость поиска по базе.

Типичным представителем (наиболее известным и распространенным) является InformationManagementSystem (IMS) фирмы IBM. Первая версия появилась в 1968 г. До сих пор поддерживается много баз данных, что создает существенные проблемы с переходом, как на новую технологию БД, так и на новую технику.

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

Сетевая БД состоит из набора записей и набора связей между ними, а если говорить более точно: из набора экземпляров каждого типа из заданного в схеме БД набора типов записи и набора экземпляров каждого типа из заданного набора типов связи.

Тип связи определяется для двух типов записи: предка и потомка. Экземпляр типа связи состоит из одного экземпляра типа записи предка и упорядоченного набора экземпляров типа записи потомка. Для данного типа связи L с типом записи предка P и типом записи потомка C должны выполняться два условия:

- Каждое экземпляр типа P является предком только в одном экземпляре L;

- Каждый экземпляр C является потомком не более чем в одном экземпляре L.

На формирование типов связи не накладываются особые ограничения; возможны, например, ситуации:

а) Тип записи потомка в одном типе связи L1 может быть типом записи предка в другом типе связи L2 (как в иерархии).

б) Данный тип записи P может быть типом записи предка в любом числе типов связи.

в) Данный тип записи P может быть типом записи потомка в любом числе типов связи.

г) Может существовать любое число типов связи с одним и тем же типом записи предка и одним и тем же типом записи потомка; и если L1 и L2 два типа связи с одним и тем же типом записи предка P и одним и тем же типом записи потомка C, то правила, по которым образуется родство, в разных связях могут различаться.

д) Типы записи X и Y могут быть предком и потомком в одной связи и потомком и предком - в другой.

е) Предок и потомок могут быть одного типа записи.

Примерный набор операций может быть таковым:

· Найти конкретную запись в наборе однотипных записей (инженера Сидорова);

· Перейти от предка к первому потомку по некоторой связи (к первому сотруднику отдела 310);

· Перейти к следующему потомку в некоторой связи (от Сидорова к Иванову);

· Перейти от потомка к предку по некоторой связи (найти отдел Сидорова);

· Создать новую запись;

· Включить в связь;

· Исключить из связи;

· Переставить в другую связь и т.д.

К достоинствам сетевой СУБД можно отнести возможность экономии памяти за счет разделения подобъектов.

Типичным представителем является Integrated Database Management System (IDMS) компании Cullinet Software Inc., предназначенная для использования на машинах основного класса фирмы IBM под управлением большинства операционных систем. Архитектура системы основана на предложениях Data Base Task Group (DBTG) Комитета по языкам программирования Conference on Data Systems Languages (CODASYL), организации, ответственной за определение языка программирования Кобол.

Описанные выше модели данных относятся к так называемым ранним СУБД. У этих моделей есть существенные недостатки так то:

· Слишком сложно пользоваться;

· Фактически необходимы знания о физической организации;

· Прикладные системы зависят от этой организации;

· Их логика перегружена деталями организации доступа к БД.

В условия современного развития компьютерной техники, когда с базами данных всё чаще работают непрофессионалы, делает эти СУБД весьма сложными для обслуживания.

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

· наличие небольшого набора абстракций, которые позволяют сравнительно просто моделировать большую часть распространенных предметных областей и допускают точные формальные определения, оставаясь интуитивно понятными;

· наличие простого и в то же время мощного математического аппарата, опирающегося главным образом на теорию множеств и математическую логику и обеспечивающего теоретический базис реляционного подхода к организации баз данных;

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

В настоящее время основным предметом критики реляционных СУБД является не их недостаточная эффективность, а присущая этим системам некоторая ограниченность (прямое следствие простоты) при использование в так называемых нетрадиционных областях (наиболее распространенными примерами являются системы автоматизации проектирования), в которых требуются предельно сложные структуры данных.

Наиболее распространенная трактовка реляционной модели данных, по-видимому, принадлежит Дейту. Согласно Дейту реляционная модель состоит из трех частей, описывающих разные аспекты реляционного подхода: структурной части, манипуляционной части и целостной части.

В структурной части модели фиксируется, что единственной структурой данных, используемой в реляционных БД, является нормализованное n-арное отношение.

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

Относительная простота и эффективность РСУБД, а также наличие солидной теоретической базы сделало эту модель данных наиболее распространённой на сегодняшний день. Абсолютное большинство систем управления базами данных, присутствующих на рынке программного обеспечения основываются именно на реляционной модели.

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

Читайте также: