Лабораторная работа № 5 Изучение возможностей СУБД Oracle по созданию и ведению баз данных 1. Цель работы Целью работы является изучение возможностей СУБД Oracle по созданию и ведению баз данных. 2. Задачи Задачами лабораторной работы являются овладение навыками создания и заполнения таблиц баз данных, создания представлений, триггеров, хранимых процедур для СУБД Oracle, освоение программных технологий доступа к базам данных Oracle из веб-приложений ASP.NET на основе C#. 3. Теоретическая часть СУБД Oracle представляет собой сложный программный пакет и состоит из нескольких десятков приложений, каждый из которых включает десятки и даже сотни компонентов. Хотя данная система тесно интегрируется с операционной системой, Oracle старается поддерживать независимость от платформы, поэтому приложения, созданные в Oracle, будут запускаться на любой системе с установленной системой Oracle. Oracle Database 10g Express Edition – Oracle10g XE (eXpress Edition) — бесплатная версия СУБД Oracle в составе программного продукта. В состав Oracle Database XE также включено средство создания web-приложений Oracle Application Express (APEX). Oracle Database XE предоставляет те же интерфейсы SQL и PL/SQL, что и во всех остальных версиях Oracle Database 10g, а также широкий спектр программных интерфейсов. Например, предоставляется полная поддержка разработки и развертывания приложений для разработчиков, работающих на платформах Java, .NET, PHP и Windows. Версия ХЕ содержит ряд ограничений: – поддерживается база данных размером до 4 Гбайт; – на одном компьютере может быть запущен только один экземпляр базы Oracle XE; – при наличии на сервере нескольких процессоров Oracle XE использует только один из них; – Oracle XE использует не более 1 Гбайт независимо от объема доступной оперативной памяти. Несмотря на данные ограничения, на основе Oracle XE можно создавать приложения для решения широкого круга задач. А если по мере роста базы данных и увеличения количества пользователей OracleXE перестанет справляться с поставленными задачами или будет достигнут предельный для Oracle XE размер базы, то перевести задачи на одну из платных версий Oracle не составит особого труда. В настоящее время существуют версии Oracle XE для платформ Linux (Debian, Mandriva, Novell, Red Hat и Ubuntu) и Windows. Oracle Database XE имеет следующие преимущества: – абсолютно свободная СУБД; – можно тестировать, разрабатывать и распространять с нулевыми инвестициями в ПО и без риска; – легко мигрировать на промышленные редакции; – не требуется переписывание приложений при переходе на промышленные редакции. 1 Табличное пространство – логическое объединение элементов базы данных. Отображается в физические файлы данных. Экземпляр Oracle Database XE (который состоит из фоновых процессов Oracle Database XE и выделенной оперативной памяти) работает только с одной базой данных. Вместо создания нескольких баз данных для разных приложений Oracle Database XE использует одну базу данных, а разделение данных для различных приложений осуществляется посредством использования отдельных схем. "База данных Oracle" – синоним "экземпляра SQL Server" и "табличное пространство Oracle" – то же самое, что и "база данных SQL Server ". Это означает, что конечные пользователи используют различные табличные пространства так же, как если бы использовали разные базы данных. Последовательности в Oracle – объект базы данных, который генерирует набор уникальных целочисленных значений. Как известно, одной из самых важных особенностей реляционных баз данных это наличие в каждой таблице первичного ключа. Во многих случаях самым простым решением является создание нового ключевого столбца, который выполняет роль идентификатора при работе с базой данных. Может возникнуть вопрос: откуда получать номера, которые гарантированно были бы уникальными? Для подобных целей в Oracle используются последовательности. Это именованный набор номеров, которые Oracle использует при генерации новых значений. Последовательность имеет следующие особенности: во-первых, ее надо установить заранее, а во-вторых, для того, чтобы реализовать запрос на генерацию нового значения нужно написать код. Как правило, последовательность определяется при создании исходной таблицы. Но это не обязательно. Поскольку между таблицей и последовательностью нет непосредственной связи, последовательность можно определить в любой момент перед созданием номером, она создается единожды. К сожалению, использование последовательностей не гарантирует корректность значений суррогатных ключей. Во-первых, любой разработчик может использовать существующую последовательность для произвольных целей. Если последовательность используется для каких-либо иных целей, нежели генерация суррогатных ключей, некоторые значения в ней будут пропущены. Вторая, более серьезная проблема заключается в том, что в схеме нет ничего, что запрещало бы выполнить вставку без использования последовательности. PL/SQL – процедурное расширение языка SQL, разработанное корпорацией Oracle. PL/SQL дает возможность использовать переменные, операторы, массивы, курсоры и исключения. Начиная с версии 8 посредством использования Oracle RDBMS стала доступна и объектно-ориентированная модель. Стандартный SQL является специализированным декларативным языком программирования. На язык наложены определённые ограничения, такие как, например, отсутствие прямой поддержки циклов. PL/SQL же, как полный по Тьюрингу язык, позволяет разработчикам обрабатывать реляционную базу данных Oracle, используя (более привычный) императивный стиль программирования. Операторы SQL могут быть легко вызваны непосредственно из PL/SQL-процедуры, функции или из триггера (иногда с некоторыми ограничениями). Представления в Oracle – объект, поддерживающий подмножество строк и столбцов из базовой таблицы. Один из видов представлений носит название материализованного представления. Это «мгновенный» снимок таблицы в конкретный момент времени. Используется для ускорения выполнения запросов при наличии объединений. Копии данных находятся во временном хранилище, поэтому система должна выполнить обновление только один раз при обновлении информации. SQL-представление (SQL view) — это виртуальная таблица, составленная из других таблиц или представлений. Представление не имеет своих собственных данных, а объединяет данные из таблиц или пердставлений, которые в него входят. Представления создаются с помощью операторов SELECT. Согласно стандарту SQL-92 представления не могут включать в себя конструкцию ORDER BY, но Oracle такой вариант допускает. 2 Представления имеют множество применений. Во-первых, с их помощью можно скрывать от доступа отдельные столбцы или строки. Кроме того, они позволяют отображать вычисляемые столбцы и скрывать сложные SQL-операторы. Также представления обеспечивают уровень абстракции между данными, обрабатываемыми приложением, и реальными данными, содержащимися в таблицах. Далее рассматриваются примеры каждого из этих применений и обсуждаются некоторые другие варианты использования представлений. Триггеры в Oracle – это специальная программа, назначаемая таблице или представлению. Триггер вызывается СУБД, когда пользователь запрашивает вставку, обновление или удаление строки из таблицы или представления, которому принадлежит данный триггер. Триггеры для Oracle можно писать на собственном языке программирования этой СУБД, носящим название PL/SQL (Programming Language for SQL – язык программирования для SQL), или на Java. Oracle поддерживает три вида триггеров: предваряющие (BEFORE), замещающие (INSTEAD OF) и завершающие (AFTER). Как и логично было бы ожидать, предваряющие триггеры вызываются перед обработкой запроса на вставку, обновление или удаление, замещающие – вместо него, а завершающие – после обработки запроса. Всего имеется девять возможных типов триггеров: предваряющий триггер вставки, обновления и удаления, замещающий триггер вставки, обновления и удаления и завершающий триггер вставки, обновления и удаления. При запуске триггера СУБД предоставляет доступ к вставляемым, обновляемым или удаляемым из тела триггера данным. В случае вставки триггеру доступны значения столбцов новой строки, в случае удаления — значения столбцов удаляемой строки, а в случае обновления триггер может оперировать как новыми, так и старыми значениями. Триггеры имеют множество применений. Основные из них: проверка допустимости вводимых данных, присваивание значений по умолчанию, обновление представлений и обеспечение ссылочной целостности. Процедуры в Oracle – именованный блок PL/SQL, который хранится на сервере и выполняет определенные действия. это программа, которая выполняет некоторые действия с информацией в базе данных и при этом сама хранится в базе данных. В Oracle хранимые процедуры можно можно писать на языках PL/SQL и Java. Хранимые процедуры могут входные параметры и возвращать результаты. В отличие от триггеров, которые принадлежат определенной таблице или представлению, хранимые процедуры принадлежат базе данных в целом. Они могут вызываться любым процессом, использующим базу данных, при условии, что у этого процесса есть достаточные права доступа. Хранимые процедуры используются для многих целей. Хотя администраторы баз данных используют их для выполнения рутинных задач администрирования, главной областью их применения являются все же приложения баз данных. Эти процедуры могут вызываться из прикладных программ, написанных на таких языках, как Java, С7^, Си—Ь или VB.Net, а также из веб-сценариев, написанных на VBScript или JavaScript. Кроме того, эти процедуры можно вызывать в интерактивном режиме из командной оболочки SQL*Plus. Можно выделить следующие преимущества хранимых процедур: – Большая безопасность. – Меньший сетевой трафик. – SQL можно оптимизировать. – Совместное использование кода между разработчиками. В отличие от кода приложений, хранимые процедуры никогда не передаются на клиентские компьютеры. Она всегда находятся в базе данных и выполняются СУБД на том компьютере, где располагается сервер базы данных. Таким образом, они более безопасны, чем распространяемый код приложения, а кроме того, снижают сетевой трафик. Хранимые процедуры постепенно становятся предпочтительным режимом реализации логики приложения в се3 ти Интернет и корпоративных интрасетях. Еще одно преимущество хранимых процедур заключается в том, что SQL-операторы в них могут быть оптимизированы компилятором СУБД. Курсоры в процедурах Oracle – область памяти, выделенная процессором PL/SQL для хранения строк, возвращаемых в результате выполнения запросов SELECT на выборку данных. В PL/SQL поддерживаются два типа курсоров: явные и неявные. Явный курсор объявляется разработчиком, а неявный курсор не требует объявления. Курсор может возвращать одну строку, несколько строк или ни одной строки. Для запросов, возвращающих более одной строки, можно использовать только явный курсор. Курсор может быть объявлен в секциях объявлений любого блока PL/SQL, подпрограммы или пакета. Приложения Oracle (Applications) – полнофункциональная система, выполняющая конкретный набор задач. Обычно приложение состоит из интегрированных форм и отчетов и может включать меню и справочную систему. ASP.NET. Microsoft .NET Framework – это платформа для создания, развертывания и запуска Web-сервисов и приложений. Она предоставляет высокопроизводительную, основанную на стандартах, многоязыковую среду, которая позволяет интегрировать существующие приложения с приложениями и сервисами следующего поколения, а также решать задачи развертывания и использования Web-приложений. .NET Framework состоит из трех основных частей – общеязыковой среды выполнения (common language runtime), иерархического множества унифицированных библиотек классов и компонентной версии ASP – ASP.NET. Web-страница ASP.NET имеет расширение .aspx и состоит из трех разделов: – директивы страницы – используются для настройки и определяют, как должна обрабатываться страница. Например, в такой секции можно импортировать пространства имен и загружать сборки. – код – код обработки событий, генерируемых страницей или ее элементами управления. Код размещается в теге <script>. – разметка страницы – это HTML-код страницы, включающий HTML-тег body и его содержимое. Там же размещаются клиентские и серверные элементы управления, а также простой текст. Для разработки приложений ASP.NET чаще всего используется среда Microsoft Visual Studio, однако такие страницы можно создавать и в текстовом редакторе. Теоретически под ASP.NET можно писать программы на любом языке, для которого имеется соответствующий компилятор. Однако на практике для создания ASP.NETприложений используются главным образом Visual Basic.NET и C#. Одной из ключевых особенностей технологии ASP.NET является возможность использования серверных элементов управления. Для их обозначения используются теги с префиксом asp и атрибут runat со значением server. 4. Порядок выполнения работы 1. Запустить базу данных Oracle Database 10g Express Edition: Пуск | Программы | Oracle Database 10g Express Edition | Start Database ► ф. Start Database; закрыть окно 2. Открыть домашнюю страницу базы данных Пуск | Программы | Oracle Database 10g Express Edition | Go To Database Homepage ► браузер по умолчанию (Internet Explorer); ф. Application Express Login; Database Login: Username ← sys; Password ← student; кн. Login ► ф. Oracle 3. Создать пользовательское табличное пространство для представления объектов базы данных: – придумать идентификатор для табличного пространства; 4 – программно указать табличное пространство для заданного пользователя: ф. Oracle | кн. SQL ► кн. SQL Commands ► ф. Home>SQL>SQL Commands; ввести код: create tablespace Идентификатор_табл_простр datafile 'D:/oraclexe/oradata/XE/ Идентификатор_табл_простр.dbf' size 100M кн. Run; ф. Results ► Statement processed. 4. Создать нового пользователя базы данных: ф. Home>SQL>SQL Commands | ссылка Home ► ф. Oracle | кн. Administration ► кн. Database Users ► ф. Home>Administration>Manage Database Users; кн. Create> ► ф. Create Database User: Username ← Имя; Password ← Пароль; User Privileges ← Check All; кн. Create ► ф. Home>Administration>Manage Database Users с новым пользователем 5. Изменить табличное пространство имен для созданного пользователя базы данных: ф. Oracle | кн. SQL ► кн. SQL Commands ► ф. Home>SQL>SQL Commands; ввести код: ALTER USER Имя пользователя DEFAULT TABLESPACE Идентификатор_табл_простр; кн. Run; ф. Results → User altered 6. Зайти в систему под именем созданного пользователя: ф. Oracle | кн. Logout ► ф. You are now logged out | кн. Login; Username ← пользователь; Password ← пароль; кн. Login ► ф. Oracle 7. Создать структуру таблицы Students (справочник студентов), относящуюся к созданному табличному пространству: – создать последовательность studIDs (счетчик) ф. Oracle | кн. Object Browser | кн. Create; выбр. Sequence ► ф. Seqence; Sequence Name ← studIDs; Start With ← 1; Minimum Value ← 1; Increment by ← 1; кн. Next ► ф. Seqence; кн. Create – создать таблицу ф. Oracle | кн. Object Browser | кн. Create; выбр. Table ► ф. Table – Create table; Table Name ← Students; – задать поле идентификатора студента (числовое обязательное): ф. Table | Column Name ← stud_ID; Type ← Number; уст. Not Null; перейти на следующую строку – задать поле номера зачетной книжки (6 символов): ф. Table | Column Name ← no_zk; Type ← Varchar2; Scale ← 6; уст. Not Null; перейти на следующую строку – задать поля фамилии, имени, отчества (строковые): ф. Table | Column Name ← fam; Type ← Varchar2; Scale ← 20; уст. Not Null; перейти на следующую строку аналогично – для имени (im) и отчества (ot); – задать поле кода специальности spec (до 7 букв): 5 ф. Table | Column Name ← spec; Type ← Varchar2; Scale ← 7; уст. Not Null; перейти на следующую строку – задать поле курса kurs (одна цифра): ф. Table | Column Name ← kurs; Type ← Varchar2; Scale ← 1; уст. Not Null; перейти на следующую строку – задать поле номера группы gr (две цифры): ф. Table | Column Name ← gr; Type ← Varchar2; Scale ← 2; уст. Not Null; перейти на следующую строку – задать поле даты рождения data_r: ф. Table | кн. Add Column → Column Name ← data_r; Type ← Date; не уст. Not Null; перейти на следующую строку – задать поле биографии biogr (текст): ф. Table | кн. Add Column → Column Name ← biogr; Type ← Varchar2; Scale ← 4000; не уст. Not Null; – создать первичный ключ таблицы (поле stud_ID, счетчик) кн. Next ► ф. Table – Primary Key; Primary Key ← уст. Populated from an existing sequence; Sequence Name ← studIDs; Primary Key ← stud_ID; кн. Next ► ф. Table – Foreign Keys; кн. Next ► ф. Table – Constraints – создать ограничение проверки значения поля kurs (диапазон от 1 до 6): ф. Table – Constraints | уст. Check; ввести код kurs >= 1 AND kurs <= 6; Name ← kurs_from_1_to_6; кн. Add – создать ограничение проверки значения поля gr (диапазон от 1 до 99): ф. Table – Constraints | уст. Check; ввести код gr >='01' AND gr <= '99'; Name ← Gr_from_01_to_99; кн. Add – создать ограничение проверки уникальности значения поля no_zk: ф. Table – Constraints | уст. Unique; Select Key Column(s) ← выбр. NO_ZK; переместить в колонку Key Column(s ); Name ← Unique_no_zk; кн. Add – создать уникальный индекс ФИО (Unique_fio) из полей фамилия (fam), имя (im), отч (ot): ф. Table – Constraints | уст. Unique; Select Key Column(s) ← выбр. fam; переместить в колонку Key Column(s ); аналогично выбрать im и ot; Name ← Unique_fio; кн. Add кн. Finish; ф. Create Table; кн. Create 8. Аналогичным образом создать структуру таблицы Subjects (справочник предметов) с полями: – создать последовательность predmIDs (счетчик) – создать таблицу Subjects с полями: – Идентификатор предмета predm_ID (числовое, обязательное) – Название name (название предмета (текстовое, обязательное)); – Цикл cycle (цикл дисциплин, к которым относится предмет (текстовое, обязательное)); – Объем hrs (количество часов (числовое, обязательное)); 6 – Кафедра dept (название кафедры, на которой ведется преподавание предмета (текстовое, необязательное)). – создать первичный ключ из поля predm_ID со значениями из последовательности predmIDs; – создать не менее трех ограничений на значения полей; – создать хотя бы одно ограничение уникальности 9. Аналогичным образом создать структуру таблицы Успеваемость (успеваемость студентов по предметам) – Uspev: – создать структуру таблицы Uspev с полями: – Student (числовое, обязательное); – Predmet (числовое, обязательное); – Ocenka (оценка (символ)); – Data (дата (дата)). – ввести составной первичный ключ (поля идентификаторов студента и предмета): ф. Table – Primary Key; Primary Key ← уст. Not Populated; Primary Key ← Student; Composite Primary Key ← Predmet; кн. Next; – Связать таблицы, сделав таблицы студентов и предметов родительскими, а таблицу успеваемости – дочерней; установить каскадное правилj ссылочной целостности для удаления: ф. Table – Foreign Keys; Name ← USPEV_STUDENT_fk; уст. Cascade Delete; Select Key Column(s) ← выбр. Student; переместить в столбец Key Column(s); References Table ← выбр. Students; нажать на символ ↓; Select Reference Column(s); выбр. stud_ID; переместить в столбец References Column(s); кн. ADD аналогичным образом установить связь между таблицами USPEV и SUBJECTS; кн. Next. – создать по одному ограничению на значение и уникальность полей 10. Наполнить базу данных сведениями о студентах (не менее 5), предметах (не менее 3) и оценках (не менее 10). Освоить доступ к дочерним записям из родительской таблицы. Проверить работоспособность полей и таблиц подстановок. Освоить приемы изменения и удаления полей и записей. Проверить работоспособность ограничений значений полей, уникальности и др., предусмотренные при задании структуры базы данных. Проверить работоспособность ссылочной целостности, удаляя, изменяя и вставляя данные: ф. Oracle – Object Explorer; раскр. список ← выбр. Tables; выбр. табл. Students ► ф. Students; кн. Data; кн. Insert Row ► ф. Students – Create Row; внести данные; кн. Create and Create Another (если есть еще записи для внесения) или кн. Create (если это последняя строка); аналогичным образом заполнить остальные таблицы Б. Представления, триггеры, процедуры 1. Создать именованное представление, выводящее детальную информацию о студентах (номер зачетной книжки, фамилия, имя, отчество, специальность, курс и группа): – создать представление Students_details: ф. Oracle – Object Browser; кн. Create; выбр. View → ф. Create View; View Name ← Students_details; 7 – ввести программный код: select stud_id, fam, im, ot, spec, kurs, gr from students – сохранить представление: ф. Create Materialized View; кн. Next → ф. Create Materialized View; кн. Create; – проверить работоспособность представления: ф. Oracle – Object Explorer; список ← выбр. Materialized Views; выбр. Students_details; ф. Students_details; кн. Data → результаты на экране – модифицировать данные с помощью именованного представления: ф. Students_details; кн. Data; кн. Insert row ► ф. Students_info; внести данные; кн. Create; открыть таблицу Students и проверить наличие новой строки. Аналогичным образом проверить работоспособность представления для операций обновления и удаления данных. 2. Создать материализованное представление для хранения кратких сведений о студентах (идентификатор, номер зачетки, фамилия и инициалы, идентификатор группы) и их успеваемости: – создать материализованное представление Students_info: ф. Oracle – Object Browser; кн. Create; выбр. Materialized View ► ф. Create Materialized View; Materialized View Name ← Students_info; – ввести программный код: select stud_id, no_zk, concat(concat(concat(rtrim(fam),' '),concat(substr(im,1,1),'.')),concat(substr(ot,1,1),'.')) as FIO, concat(concat(spec,'-'), concat(kurs,gr)) as GRUPPA, name as Predmet, ocenka, data from students, uspev, subjects where students.stud_id=uspev.student and subjects.predm_id=uspev.predmet – сохранить представление: ф. Create Materialized View; кн. Next → ф. Create Materialized View; кн. Create; – проверить работоспособность представления: ф. Oracle – Object Explorer; список ← выбр. Materialized Views; выбр. Students_info; ф. Students_info; кн. Data → результаты на экране 3. Создать триггер, проверяющий, что каждый студент может сдавать не более двух предметов в один день. – написать программный код триггера (PL/SQL): ф. Oracle – Object Browser; кн. Home → ф. Oracle; кн. SQL → кн. SQL Commands; ф. SQL Commands ввести код: CREATE OR REPLACE TRIGGER Stud_uspev BEFORE INSERT OR UPDATE ON Uspev FOR EACH ROW DECLARE kurs number; stud number; data Date; cnt number; BEGIN 8 stud := :new.student; data := :new.data; SELECT COUNT(*) INTO cnt FROM Uspev WHERE Student=stud and Data=data; if cnt > 1 then dbms_output.put_line('Больше нельзя'); end if; END; / – проверить работоспособность триггера, вводя данные в таблицу Uspev. 4. Создать хранимую процедуру для вывода информации о количестве студентов в группе по ее номеру: – создать процедуру Count_group: ф. Oracle – Object Browser; кн. Create; выбр. Procedure ► ф. Create Procedure; Procedure Name ← Count_group; уст. Include Arguments; кн. Next – определить входные и выходные параметры процедуры: Argument Name ← gr; In/Out ← In; Argument Type ← Varchar2; перейти на след. cтроку; Argument Name ← count; In/Out ← Out; Argument Type ← Number; кн. Next – ввести программный код процедуры: вкл. Procedure Body ← select count(*) into count from students where gr=gr; кн. Next; – сохранить процедуру ф. Create Procedure; кн. Finish → ф. Create Procedure; кн. Create – проверить работоспособность процедуры ф. Oracle – Object Browser; кн. Home ► ф. Oracle; кн. SQL ► кн. SQL Commands; ф. SQL Commands ввести код: DECLARE c NUMBER; BEGIN COUNT_GROUP('номер группы',c); DBMS_OUTPUT.PUT_LINE(Число студентов в группе: ' || c); END; / кн. Run → результат на экране 5. Аналогичным образом создать хранимую процедуру, выводящую количество предметов заданной специальности. 6. Создать хранимую процедуру для вывода списка студентов группы по ее номеру: ф. Oracle – SQL Commands; ввести код: create or replace procedure printGroup(g in varchar2) is cursor c_stud is select fam from students where gr=g; r_stud c_stud%ROWTYPE; begin open c_stud; loop fetch c_stud into r_stud; exit when c_stud%NOTFOUND; 9 DBMS_OUTPUT.put_line(r_stud.fam); end loop; close c_stud; end; / кн. Run → Results: Procedure created. – проверить работоспособность процедуры DECLARE C INTEGER; BEGIN printGroup('номер группы'); END; / кн. Run → результат на экране 7. Аналогичным образом создать хранимую процедуру, выводящую список студентов по заданной специальности. В. Приложения Oracle 1. Создать приложение-отчет для вывода информации о студентах из таблицы Students: ф. Oracle | кн. Application Builder → ф. Application Builder | кн. Create> ► ф. Create Application | уст. Create Application; кн. Next ► Name ← Students_report; кн. Next ► Select Page Type ← уст. Report; Page Source ← Table; Table Name ← Students; кн. Add Page ► кн. Next ► Tabs ← One Level of Tabs; кн. Next ► Copy Shaped Components from Another Application ← No; кн. Next ► Authentication Scheme← No Authentication; кн. Next ► Select a theme ← выбрать любой вариант представления; кн. Next ► кн. Create; кн. Run 2. Аналогичным образом создать приложение-отчет для вывода информации о предметах из таблицы Subjects. 3. Создать приложение-отчет для вывода информации об успеваемости студентов из таблиц Students, Subjects и Uspev: ф. Oracle | кн. Application Builder ► ф. Application Builder | кн. Create> ► ф. Create Application | уст. Create Application; кн. Next ► Name ← Uspev_report; кн. Next ► Select Page Type ← уст. SQL Query; Page Name ← Uspev_query; кн. Query Builder ► ф. Query Builder: выбр. Students, Subjects, Uspev; выделить stud_ID в графическом объекте Students и перетащить его на student в объекте Uspev; аналогично – для predm_ID из Subjects. Выбрать поля: Fam, im, ot – из Students; name – из Subjects; ocenka, data – из Uspev; Кн. Run; просмотреть результат на экране; кн. return; кн. Add Page; кн. Next ► Tabs ← One Level of Tabs; кн. Next ► Copy Shaped Components from Another Application ← No; кн. Next ► Authentication Scheme ← No Authentication; кн. Next ► Select a theme ← выбрать любой вариант представления; кн. Next ► кн. Create; кн. Run 10 4. Создать приложение-форму для редактирования информации о студентах из таблицы Students: ф. Oracle | кн. Application Builder → ф. Application Builder | кн. Create> ► ф. Create Application | уст. Create Application; кн. Next ► Name ← Students_form; кн. Next ► Select Page Type ← уст. Form; Table Name ← Students; кн. Add Page; кн. Next ► Tabs ← One Level of Tabs; кн. Next ► Copy Shaped Components from Another Application ← No; кн. Next ► Authentication Scheme ← No Authentication; кн. Next ► Select a theme ← выбрать любой вариант представления; кн. Next ► кн. Create; кн. Run 5. Аналогичным образом создать приложение-форму для редактирования информации о предметах из таблицы Subjects. Г. Oracle и ASP.NET 1. Запустить Microsoft Visual Web Developer: Пуск | Программы | Microsoft Visual Web Developer 2008 Express Edition ► Start Page – Visual Web Developer 2008 Express Edition 2. Создать директорию для хранения файлов под именем Группа_неделя (например, asoi337_8): 3. Создать новый Web-сайт: File | New Web Site… ► ф. New Web Site; Visual Studio installed templates ← выбр. ASP.NET Web Site; Location ← File System; выбрать директорию для размещения файлов; Language ← Visual C#; кн. OK 4. Установить соединение с базой данных Oracle: – настроить соединение: Tools | Connect to Database… | ф. Add Connection; Server Name ← 127.0.0.1; User name ← имя пользователя; – проверить соединение: кн. Test Connection → сообщение о статусе соединения; – установить соединение: кн. OK → вкл. Database Explorer; проверить наличие нового соединения. 5. Изменить заголовок главной страницы сайта: вкл. Default.aspx; заменить код <title> Untitled Page</title> на <title>Работа с СУБД Oracle </title> 6. Проверить работоспособность созданного приложения сочетанием клавиш [Ctrl + F5]. 7. Ввести заголовок списка данных на странице – текст «Список студентов»: вкл. Default.aspx; между открывающим и закрывающим тегами <div> ввести текст: Список студентов 8. Перейти на вкладку Design 11 9. Поместить на страницу таблицу для представления данных: Панель инструментов Toolbox | выбр. GridView; перетащить на страницу. 10. Связать таблицу с базой данных: ф. Grid View Tasks | Choose data source | <New data source…> | ф. Data Source Configuration Wizard; Choose a Data Source Type ← выбр. Database; Specify an ID for Data Source ← SqlDataSource; кн. OK; Choose Your Data Connection | выбр. созданное ранее соединение; кн. Next ► не уст. Yes, save this connection as…; кн. Next; Configure the Select Statement | Specify columns from a table or view; Name ← Students; Columns ← выбр. * ; кн. Next ► Test Query | кн. Test Query → результаты на экране Кн. Finish 11. Проверить работоспособность созданного приложения сочетанием клавиш [Ctrl + F5]. 5. Контрольные вопросы 1. К какому классу СУБД относится Oracle? 2. Каковы особенности Oracle? 3. Как реализуются триггеры в Oracle? 4. Что представляют собой хранимые процедуры в Oracle? 5. Какие представления реализуются в Oracle? 6. Содержание и оформление отчета Отчет должен содержать: – титульный лист, название и цель работы; – скриншоты результатов работы с СУБД Oracle; – выводы по работе. 12