Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
46
Добавлен:
01.05.2014
Размер:
197.12 Кб
Скачать

Вариант 4:

а) выдать шифры НИР, известных БД; выдать шифры НИР, в которых участвуют преподаватели, исключая шифры-дубликаты; сравнить результаты;

б) выдать всю известную информацию о НИР, стоимость которых лежит в пределах от 80 до 200 тысяч рублей, и наименование организации заказчика, по которым включает подстроку ‘НПО’, ‘НИИ’ или ‘МП’;

в) выдать всю известную информацию о НИР, кроме тех, заказчиком по которым являются НПО «Статор» или НИИ АО, начавшихся не раньше 1 июля 1990 года; выдаваемую информацию упорядочить по возрастанию стоимости НИР;

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

д) для НИР, шифр которых включает подстроку ‘САПР’ и ‘АСОИУ’, выдать следующую информацию: шифр и стоимость НИР, заказчик, фамилия, ученая степень и кафедра руководителя НИР; упорядочить информацию по фамилиям руководителей;

е) для НИР, начавшихся не ранее 1 января 1991 года, выдать сведения о преподавателях, участвующих в выполнении НИР в качестве научных и старших научных сотрудников (значения в БД соответственно ‘н.с.’ и ‘с.н.с.’); разработать два варианта запроса: с использованием соединения и с использованием подзапросов; в результирующую таблицу включить: для варианта с соединением - шифр и название НИР, фамилию, кафедру, месячный оклад преподавателя и упорядочить информацию в порядке убывания оклада преподавателя; для варианта с подзапросом - фамилии и кафедры преподавателей;

ж) см. запрос ж) для Варианта 1;

з) для НИР, руководитель которых неизвестен БД, сформировать и выдать таблицу, в которой с шифром, названием и стоимостью каждой НИР сопоставляются фамилии и кафедры всех преподавателей, имеющих степень доктора наук;

и) выдать названия НИР, состоящих более чем из четырех этапов;

к) для НИР, шифр которых включает подстроку ‘АСОИУ’ выдать: среднюю стоимость работ; названия и стоимости самой дорогой и самой дешевой работ; для самой дешевой из работ выдать сведения о названиях, сроках и стоимостях входящих в ее состав этапов;

Логическая схема учебной бд на реляционном языке 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 , /* месячный оклад */

);

Рис.2. ( Продолжение )

Логическая схема учебной БД на реляционном языке SQL (окончание)

/*Индексы над таблицами */

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.

Соседние файлы в папке Б А З Ы Д А Н Н Ы Х