Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BDlab / 5__oracle.docx
Скачиваний:
47
Добавлен:
18.03.2015
Размер:
65.11 Кб
Скачать

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. Создать пользовательское табличное пространство для представления объектов базы данных:

– придумать идентификатор для табличного пространства;

– программно указать табличное пространство для заданного пользователя:

ф. 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 букв):

ф. 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 (количество часов (числовое, обязательное));

– Кафедра 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;

– ввести программный код:

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

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;

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

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

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].

Соседние файлы в папке BDlab