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

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

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