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

Логическая схема учебной бд для сетевой субд db_vista

database example{

data file «example.d01» contains system,subject,student,teacher, research,stage;

data file «example.d02» contains advancement,teaching, participation;

key file «example.k01» contains sb_shfp,curd_num,group_num, course,tch_id,degree,rs_shfp;

key file «example.k02» contains dept,customer,job;

/* Предмет */

record subject{

unique key char sb_shfp[4] ; /* шифр */

char sb_name[160] ; /* название */

int lect_vol ; /* объем лекций */

int lab_vol ; /* объем лабораторных */

int pract_vol ; /* объем практ./занятий */

}

/* Студент */

record student{

unique key char card_num[8] ; /* номер студ. Билета */

key char group_name[5] ; /* номер группы */

key int course ; /* курс */

char std_name[30] ; /* фамилия */

char std_surname[20] ; /* имя */

char std_patr_name[30] ; /* отчество */

}

/* Преподаватель */

record teacher{

unique key long tch_id ; /* личный номер */

char tch_name[30] ; /* фамилия */

char tch_surname[20] ; /* имя */

char tch_patr_name[30] ; /* отчество */

key char degree[30]; /* ученая степень */

key char dept[160] ; /* кафедра */

}

/* Н И Р */

record research{

unique key char rs_shfp[20] ; /* шифр */

char rs_name[160] ; /* название */

long rs_start_date ; /* даты начала и конца */

long rs_finish_date ; /* формат: ГГММДД */

long rs_price ; /* стоимость */

key char customer[80] ; /* заказчик */

}

Рис.4 ( Начало )

Логическая схема учебной БД для сетевой СУБД db_VISTA ( продолжение )

/* Этап */

record stage{

char sg_name[80] ; /* название */

long sg_start_date ; /* даты начала и конца */

long sg_finish_date ; /* формат: ГГММДД */

long sg_price ; /* стоимость */

}

/* Успеваемость */

record advancement{

int mark ; /* оценка */

long exam_date ; /* дата контроля: ГГММДД */

char exam_kind[40] ; /* вид контроля */

}

/* Проведение занятий */

record teaching{

int tch_lect_vol ; /* объем лекций */

int tch_lab_vol ; /* объем лабораторных */

int tch_pract_vol ; /* объем практ.занятий */

}

/* Участие */

record participation{

char job[80] ; /* научная должность */

long prt_start_date ; /* даты включения и завер- */

long prt_finish_date ; /* шения: ГГММДД */

int month_salary ; /* месячный оклад */

}

/* Перечень предметов */

set subject_list{

order ascending ;

owner system ;

member subject by sb_name ;

}

/* Перечень студентов */

set student_list{

order ascending ;

owner system ;

member student by group_num ;

}

/* Перечень преподавателей */

set teacher_list{

order ascending ;

owner system ;

member teacher by dept ;

}

/* Перечень Н И Р */

set research_list{

order descending ;

owner system ;

member research by rs_price ;

}

/* По предмету студенты */

set subject_to_students{

order last ;

owner subject ;

member advancement ;

}

/* Студент по предметам */

set student_to_subjects{

order last ;

owner student ;

member advancement ;

}

/* По предмету преподаватели */

set subject_to_teachers{

order descending ;

owner subject ;

member teaching by tch_lect_vol;

}

/* Преподаватель по предметам */

set teacher_to_subjects{

order descending ;

owner teacher ;

member teaching by tch_lect_vol;

}

/* Участники студенты */

set students_in_research{

order last ;

owner research ;

member student ;

}

/* Компоненты Н И Р */

set parts_of_research{

order descending ;

owner research ;

member research by rs_price ;

}

/* Этапы Н И Р */

set stages_of_research{

order ascending ;

owner research ; ;

member stage by sg_start_date ;

}

/* Руководство */

set management{

order last ;

owner teacher ;

member research ;

}

/* Преподаватель в НИРах */

set teacher_in_researches{

order last ;

owner teacher ;

member participation ;

}

/* Преподаватели в НИР */

set research_to_teacher{

order last ;

owner research ;

member participation ;

}

При подготовке к лабораторной работе по литературе следует иметь ввиду, что терминология, принятая в db_VISTA, не­сколько отличается от терминов, используемых CODASYL. Ниже приведены наиболее важные термины-синонимы: структурная диа­грамма (диаграмма Бахмана, сетевая диаграмма), сингулярный набор (системный набор, SYSTEM-набор), ключ БД (адрес БД).

Пример: найти и выдать фамилии преподавателей, читающих лекции по предметам, по которым студент с номером студен­ческого билета 833А002 получил отличные оценки.

/* Булевские переменные faili принимают значение «истина» в случае

завершения поиска в БД неудачей */

/* Поиск и получение сведений о студенте с номером билета 833А002 */

Record_find( STUDENT , student.card_num=’833А002’ );

Record_get;

print( student.card_num , student.std_name );

/* Назначение найденной записи о студенте текущим владельцем типа

набора СТУДЕНТ ПО ПРЕДМЕТАМ*/

Currency_owner_record( STUDENT_TO_SUBJECTS );

/* Поиск первого члена типа набора СТУДЕНТ ПО ПРЕДМЕТАМ текущего владельца */

Set_first( STUDENT_TO_SUBJECTS );

while not( fail1 ) begin

Record_get;

if advancement.mark=5 then begin

/* Назначение текущей записи текущим членом типа набора

ПО ПРЕДМЕТУ СТУДЕНТЫ*/

Currency_member_record( SUBJECT_TO_STUDENTS );

/* Поиск владельца текущего члена типа набора ПО ПРЕДМЕТУ СТУДЕНТЫ */

Set_owner( SUBJECT_TO_STUDENTS );

/* Назначение текущей записи текущим владельцем типа набора

ПО ПРЕДМЕТУ ПРЕПОДАВАТЕЛИ */

Currency_owner_record( SUBJECT_TO_TEACHERS );

/* Поиск первого члена типа набора ПО ПРЕДМЕТУ ПРЕПОДАВАТЕЛИ

текущего владельца*/

Set_first( SUBJECT_TO_TEACHERS );

while not( fail2 ) begin

Record_get;

if teaching.tch_lect_vol > 0 then begin

/* Назначение текущей записи текущим членом типа набора

ПРЕПОДАВАТЕЛЬ ПО ПРЕДМЕТАМ */

Currency_member_record( TEACHER_TO_SUBJECTS );

/* Поиск владельца текущего члена типа набора ПРЕПОДАВАТЕЛЬ ПО ПРЕДМЕТАМ */

Set_owner( TEACHER_TO_SUBJECTS );

Record_get;

print( teacher.tch_name )

end

/* Поиск следующего члена типа набора ПО ПРЕДМЕТУ ПРЕПОДАВАТЕЛИ

текущего владельца */

Set_next( SUBJECT_TO_TEACHERS )

end

end

/* Поиск следующего члена типа набора СТУДЕНТ ПО ПРЕДМЕТАМ текущего

владельца */

Set_next( STUDENT_TO_SUBJECTS )

end

Содержание отчета: для каждого запроса: исходная формулировка запроса; текст запроса: операции над сетевой БД включаются в текст программы обработки БД на некотором универсальном языке программирования или псевдоязыке; для наиболее сложных за­просов - блок-схема программы обработки БД; фрагмент информации, полученной в ответ на запрос.

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