- •Методические указания
- •Общие сведения о лабораторных работах
- •Использование литературы для подготовки к лабораторным работам
- •Концептуальная схема учебной бд в виде er-диаграммы
- •Лабораторная работа n 1
- •Вариант 1:
- •Логическая схема учебной бд на реляционном языке sql
- •Лабораторная работа n 2
- •1 Разработка и реализация запросов на обновление учебной базы данных (бд) на основе реляционного языка запросов sql;
- •2 Практическое освоение языка sql.
- •Вариант 1:
- •Вариант 1:
- •Вариант 1:
- •Лабораторная работа n 3
- •Вариант 1:
- •Структурная диаграмма учебной бд
- •Логическая схема учебной бд для сетевой субд db_vista
- •Лабораторная работа n 4
- •1 Разработка и реализация запросов на обновление учебной базы данных (бд) на основе сетевого языка манипулирования данными;
- •2 Практическое освоение языков описания и манипулирования данными на основе предложений codasyl.
- •Рекомендуемая литература
- •Основные функции интерактивной обработки базы данных сетевой субд db_vista
Логическая схема учебной бд на реляционном языке sql
/* ПРЕДМЕТ */
table SUBJECT
( id char(4) not null, /* шифр */
name char(80) not null, /* название */
lect_vol number(3) , /* объем лекций */
lab_vol number(3) , /* объем лабораторных */
pract_vol number(3) , /* объем практ./занятий */
);
/* ПРЕДСТАВЛЕНИЕ ПРЕДМЕТА */
view SUBJECT_VIEW
( id , name , lect_vol , lab_vol , pract_vol , total_vol )
/* total_vol - общий объем */
as select id, name, lect_vol, lab_vol, pract_vol, lect_vol+lab_vol+pract_vol
from SUBJECT;
/* СТУДЕНТ */
table STUDENT
( card_num char(8) not null, /* номер студ.билета */
group_num char(5) not null, /* номер группы */
course number(1) , /* курс */
name char(20) not null, /* фамилия */
surname char(15) , /* имя */
patr_name char(20) , /* отчество */
research_id char(15) , /* шифр НИР */
);
/* ПРЕПОДАВАТЕЛЬ */
table TEACHER
( id number(5) not null, /* личный номер */
name char(20) not null, /* фамилия */
surname char(15) , /* имя */
patr_name char(20) , /* отчество */
degree char(5) , /* ученая степень */
dept char(10) , /* кафедра */
);
/* Н И Р */
table RESEARCH
( id char(15) not null, /* шифр */
name char(100) not null, /* название */
start_date date , /* дата начала */
finish_date date , /* дата окончания */
price number , /* стоимость */
customer char(20) , /* заказчик */
manager_id number(5) , /*личный номер руководителя */
comp_research_id char(15) , /* шифр комплексной НИР */
);
Рис.2.(Начало)
Логическая схема учебной БД на реляционном языке SQL (продолжение)
/* ЭТАП */
table STAGE
( id char(3) not null, /* номер */
research_id char(20) not null, /* шифр НИР */
name char(80) not null, /* название */
start_date date , /* дата начала */
finish_date date , /* дата окончания */
price number , /* стоимость */
);
/* УСПЕВАЕМОСТЬ */
table ADVANCEMENT
( subject_id char(4) not null, /* шифр предмета */
student_card_num char(8) not null, /* номер студ. билета */
mark number(1) , /* оценка */
exam_date date , /* дата контроля */
exam_kind char(10) , /* вид контроля */
);
/* ПРОВЕДЕНИЕ ЗАНЯТИЙ */
table TEACHING
( subject_id char(4) not null, /* шифр предмета */
teacher_id number(5) not null, /* личный номер препод-ля */
lect_vol number(3) , /* объем лекций */
lab_vol number(3) , /* объем лабораторных */
pract_vol number(3) , /* объем практ.занятий */
);
/* ПРЕДСТАВЛЕНИЕ ПРОВЕДЕНИЯ ЗАНЯТИЙ */
view TEACHING_VIEW
( subject_id, teacher_id, lect_vol, lab_vol, pract_vol, total_vol )
/* total_vol - общий объем */
as select
subject_id, teacher_id, lect_vol, lab_vol, pract_vol, lect_vol+lab_vol+pract_vol
from TEACHING;
/* УЧАСТИЕ ПРЕПОДАВАТЕЛЯ */
table TCH_PARTICIPATION
( teacher_id number(5) not null, /* личный номер препод-теля */
research_id char(15) not null, /* шифр НИР */
job char(15) not null, /* научная должность */
start_date date , /* дата включения */
finish_date date , /* дата завершения */
month_salary number , /* месячный оклад */
);
/*Индексы над таблицами */
unique index subject_key on SUBJECT( id );
unique index student_key on STUDENT( card_num );
index student_group on STUDENT( group_num );
index student_course on STUDENT( course );
unique index teacher_key on TEACHER( id );
index teacher_dept on TEACHER( dept );
unique index research_key on RESEARCH( id );
unique index stage_key on STAGE( research_id , id );
unique index teaching_key on TEACHING(subject_id , teacher_id );
unique index tch_participation_key on
TCH_PARTICIPATION( research_id , teacher_id ).
Рис.2. (Окончание)
Рекомендации по выполнению.
Пользуясь командами, указанными преподавателем, осуществите «мягкий» старт ядра СУБД ORACLE, вызовите утилиту интерактивного доступа UFI и укажите пароль для доступа к БД. Последовательно выполните в интерактивном режиме запросы по вариантам задания, зафиксируйте корректные тексты запросов и фрагменты информации, полученной в ответ на запрос из БД.
Пример:для преподавателей, работающих на кафедре АСОИУ, выдать сведения об участии в НИР; в результирующую таблицу включить фамилию, имя преподавателя, название НИР, научную должность и месячный оклад преподавателя; разработать два варианта запроса: с использованием соединения и с использованием подзапросов.
/* Использование эквисоединений */
select substr( TEACHER.NAME , 1 , 12 ) ,
substr( RESEARCH.ID , 1 , 8 ) ,
substr( RESEARCH.NAME , 1 , 36 ) ,
substr( JOB , 1 , 8 ) , substr( MONTH_SALARY , 1 , 3 )
from TEACHER , TCH_PARTICIPATION , RESEARCH
where DEPT = ‘АСОИУ’ and
TEACHER.ID = TEACHER_ID and
RESEARCH.ID = RESEARCH_ID
;
/* Использование вложенных подзапросов */
select TEACHER_ID , RESEARCH_ID , MONTH_SALARY , JOB
from TCH_PARTICIPATION
where TEACHER_ID in
( select ID
from TEACHER
where DEPT = ‘АСОИУ’
);
Содержание отчета:
графическое представление схемы БД;
для каждого запроса: исходная формулировка запроса; текст запроса на языке SQL; фрагмент информации, полученной в ответ на запрос; при необходимости, альтернативная формулировка запроса на SQL.