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