Специализированная библиотека
Автор работы: Пользователь скрыл имя, 04 Февраля 2013 в 19:00, курсовая работа
Краткое описание
Рассмотрим задачу, связанную с определением нагрузки профессорко-
преподавательского состава кафедры по преподаваемым ими дисципли-
нам.
Вложенные файлы: 1 файл
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
Федеральное государственное автономное образовательное
учреждение высшего профессионального образования
«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
КУРСОВОЙ ПРОЕКТ
по курсу “Базы данных” «Специализированная библиотека»
Выполнил :
студент 4 курса
1 группы вечернего отделения
Угрин М.В.
Руководитель
Невская Е.С.
Ростов-на-Дону
2012
Прикладная математика и Информатика
.
Базы Данных
Прикладная математика и Информатика
1 Описание предметной области
Рассмотрим задачу, связанную с определением нагрузки профессорко-
преподавательского состава кафедры по преподаваемым ими дисципли-
нам.
Для анализа этой задачи необходимо иметь информацию о нагрузке
кафедры и преподавателей, ведении заданного курса и необходимо хра-
нить данные о профессорко-преподавательском составе, преподаваемых
ими дисциплинах, кафедрах.
Для дисциплин указаны лекционные и практические часы. Дисци-
плины должны соответствовать профилю кафедры и специализациям
преподавателей. Лекции и практику должны вести преподаватели с од-
ной кафедры. Лекции должны читать доценты и профессора. За каждой
кафедрой закреплено максимальное количество часов нагрузки. Долж-
ность преподавателя определяет максимальное число часов нагрузки (про-
фессор — 600 часов, доцент — 700, ст.преподаватель и ассистент — 800).
Если преподаватель читает лекции нескольким группам (потоку), то его
нагрузка определяется по потоку.
Ставится задача проверить ведется ли заданной кафедрой заданный
курс, можно ли каким-нибудь преподавателям поручить разрабатывать
новый курс, добавить или исключить курс, принять на работу препо-
давателя в случае необходимости, определить нагрузку преподавателя,
кафедры.
Предполагается хранить, обрабатывать и анализировать данные о ра-
боте кафедр, распределении нагрузки преподавателей, распределяя по-
следних по должностям
Поэтому для
1. каждого преподавателя будем хранить данные:
- ФИО
2. Для дисциплин соответственно:
Базы Данных
Прикладная математика и Информатика
- Наименование
- нагрузка в часах, практика
- нагрузка в часах, лекции
И для кафедр:
3. И добавим искусственную базу, которая будет содержать должно-
сти:
- Наименование
- возможность преподавать лекции
- возможная нагрузка в часах
Базы Данных
Прикладная математика и Информатика
2 Проектирование базы данных
2.1 Предметная область
Для нашей задачи можно определить объекты Между объектами су-
ществуют связи или отношения, соединяющие их. Сами связи также мо-
гут рассматриваться, как объекты.
∙ Объекты базы данных
1. Кафедры
2. Преподаватели
3. Дисциплины
4. Должности
∙ Связи базы данных
1. Объект link_k_t связывает объекты Кафедра и Преподава-
тель
2. Объект link_k_d связывает объекты Кафедра и Дисциплина
3. Объект link_t_d связывает объекты Преподаватель и Долж-
ность
4. Объект opis связывает объекты link_k_t и link_k_d (на са-
мом деле производится связь между объектами Кафедра, Дис-
циплина и Преподаватель)
Базы Данных
Прикладная математика и Информатика
2.2 Модель данных (ER-модель)
Должность
d
d
d
d
d
d
d
d
d
d
атрибут
c
T
Преподаватель
d
d
d
d
d
d
d
d
d
d
работает
c
T
Кафедра
d
d
d
d
d
d
d
d
d
d
есть
c
T
Дисциплина
E
link_t_d
E
link_k_t
d
d
d
d
d
d
d
d
d
d
link_ktd
c
T
E
link_k_d
E
opis
Базы Данных
Прикладная математика и Информатика
2.3 Реляционная схема
Определим реляционную схему базы данных
1. Список должностей:
Атрибут
Комментарий
num
номер должности, ключевой атрибут
title
Наименование должности
uhr
Количество часов нагрузки
lect
Возможность преподавания лекции
2. Преподаватель:
Атрибут
Комментарий
num
номер преподавателя, ключевой атрибут
title
Фамилия, Имя, Отчество преподавателя
3. Связь между преподавателем и должностью:
Атрибут
Комментарий
num_t
номер преподавателя, ключевой атрибут
num_d
номер должности, ключевой атрибут
4. Кафедра:
Атрибут
Комментарий
num
номер кафедры, ключевой атрибут
title
Наименование кафедры
5. Связь между преподавателем и кафедрой:
Атрибут
Комментарий
num_k
номер кафедры, ключевой атрибут
num_t
номер преподавателя, ключевой атрибут
Базы Данных
Прикладная математика и Информатика
6. Дисциплина:
Атрибут
Комментарий
num
номер дисциплины, ключевой атрибут
title
Наименование дисциплины
uhr_lect
Количество лекционных часов нагрузки
uhr_pract
Количество практических часов нагрузки
7. Связь между дисциплиной и кафедрой:
Атрибут
Комментарий
num_k
номер кафедры, ключевой атрибут
num_d
номер дисциплины, ключевой атрибут
8. Опись, связь между Дисциплиной, Кафедрой и Преподавателем:
Атрибут
Комментарий
num
номер дисциплины, ключевой атрибут
num_k
номер кафедры, ключевой атрибут
num_t
номер преподавателя, ключевой атрибут
lect
Возможность преподавания лекции
uhr_lect
Количество лекционных часов нагрузки
uhr_pract
Количество практических часов нагрузки
Базы Данных
Прикладная математика и Информатика
3 Проектирование информационной системы
3.1 функции информационной системы(ИС)
Главными функциями информационной системы (ИС), или приложе-
ния, являются просмотр и редактирование данных о преподавателях,
предметах, кафедрах.
Для объекта Преподаватель введем следующие операции:
1. Введем объект Должность преподавателя и операции для него:
(a) Показать список должностей
(b) Добавить должность
2. Добавить преподавателя в базу
3. Показать список преподавателей
4. введем объект Связь Преподаватель-Должность и операции для
него(форма одна, но совмещает 2 операции):
(a) определить должность преподавателю
(b) изменить должность преподавателю
Для объекта Кафедра введем следующие операции:
1. Добавить Кафедру
2. Показать список Кафедр
Для объекта Дисциплина введем операции:
1. Добавить Дисциплину
2. Показать список Дисциплин
Базы Данных
Прикладная математика и Информатика
Введем также объект Опись (в ИС он будет содержать все связи, кроме
связи Должность-Преподаватель, хотя формально вся опись расположе-
на в 3-х таблицах)
1. введем связь кафедра-преподаватель и операции для него(форма
одна, но совмещает 2 операции):
(a) определить преподавателя на кафедру
(b) перевести преподавателя на другую кафедру
2. введем связь кафедра-дисциплина и операции для него(форма од-
на, но совмещает 2 операции):
(a) определить дисциплину на кафедру
(b) поменять кафедру для дисциплины
3. введем связь преподаватель-должность и операции для него
(a) определить дисциплину для преподавателя
Базы Данных
Прикладная математика и Информатика
3.2 Архитектура информационной системы
ИС
c
Препод.
должность
Показать
список
Добавить
E
E
связь с
должн.
опред.
должн
изм.
должн
E
E
Добавить
Показать.
список.
c
Кафедра
Добавить
Показать.
список.
c
Дисциплина
Добавить
Показать.
список.
c
Опись
кафедра
преп.
Определить
кафедру
Изменить
кафедру
E
E
кафедра
дисцип.
определить
кафедру
изменить
кафедру
E
E
Преп.
дисцип.
определить
преп.
изменить
преп.
E
E
Базы Данных
Прикладная математика и Информатика
4 Контрольный пример
Приведем контрольный пример:
Выборка опись.
содержит в себе назначение преподавателя для дисциплин.
Базы Данных
Прикладная математика и Информатика
последовательно опишем все объекты и рассмотрим ее с программной
точки зрения:
так выглядит эта форма в конструкторе:
Базы Данных
Прикладная математика и Информатика
данные окружения — все таблицы нашей базы данных т.е. последова-
тельно вносим следующие таблицы data environment:
1. teacher
2. dolg
3. link_t_d
4. kaph
5. link_k_t
6. lisciple
7. link_k_d
8. opis
опишем последовательно объекты и методы главной формы
thisform.init
1
thisform.label2.Visible= .F.
2
thisform.label5.Visible= .F.
3
thisform.label3.Visible= .F.
4
thisform.list2.Visible= .F.
5
thisform.label4.Visible= .F.
6
thisform.label7.Visible= .F.
7
thisform.label6.Visible= .F.
8
thisform.label10.Visible= .F.
9
thisform.list3.Visible= .F.
10
thisform.label8.Visible= .F.
11
thisform.label9.Visible= .F.
12
thisform.text1.Visible= .F.
13
thisform.text2.Visible= .F.
14
thisform.text4.Visible= .F.
15
thisform.text3.Visible= .F.
Базы Данных
Прикладная математика и Информатика
16
17
thisform.BackColor=RGB(0,64,64)
18
thisform.BorderStyle= 2
19
thisform.ColorSource= 5
20
thisform.FillColor=RGB(128,128,128)
21
thisform.FillStyle= 6
22
thisform.FontCharSet=204
23
thisform.FontName="Times New Roman"
24
thisform.FontSize=10
25
26
thisform.Height=632
27
thisform.Left=15
28
thisform.Width=632
29
thisform.Top=0
30
31
thisform.MaxHeight=thisform.Height
32
thisform.MinHeight=thisform.Height
33
thisform.maxWidth=thisform.Width
34
thisform.minWidth=thisform.Width
35
36
thisform.MaxButton= .F.
37
thisform.MinButton= .F.
38
39
thisform.MacDesktop= 2
40
41
thisform.MousePointer= 12
42
thisform.SizeBox= .F.
43
thisform.top=50
весь этот код описывает внешний вид главного окна скрывает часть
объектов на форме до первой необходимости, назначает максимальные,
минимальные и текущие размеры формы (как нетрудно заметить они
одинаковые, чтобы размер формы менять было нельзя), меняет вид ука-
Базы Данных
Прикладная математика и Информатика
зателя мышки при наведении на форму и убирает кнопки «Развернуть
на весь экран» и «Минимизировать» также указываем в Properties opis
caption=opis, поле Name не меняем.
label1.init:
1
thisform.label1.BackStyle= 0
2
thisform.label1.FontBold= .T.
3
thisform.label1.FontCharSet= 204
4
thisform.label1.FontName= "Monotype Corsiva"
5
thisform.label1.FontSize=18
6
thisform.label1.MousePointer= 12
7
thisform.label1.Top=12
8
thisform.label1.Left=84
9
thisform.label1.Height=25
10
thisform.label1.Width=108
здесь также указывается внешний вид и расположение метки, а также
шрифт и размер надписи, цвет метки копируется с формы. опять же в
Properties label1 caption= “discipline”, поле Name не меняем.
label2.init:
1
thisform.label2.BackStyle= 0
2
thisform.label2.FontBold= .T.
3
thisform.label2.FontCharSet= 204
4
thisform.label2.FontName= "Monotype Corsiva"
5
thisform.label2.FontSize=13
6
thisform.label2.MousePointer= 12
7
thisform.label2.Top=12
8
thisform.label2.Left=288
9
thisform.label2.Height=24
10
thisform.label2.Width=72
11
thisform.label2.Visible= .F.
Тут добавлю что на этот раз в Properties label1 caption= “kaphedra”,
поле Name не меняем.
Базы Данных
Прикладная математика и Информатика
label3.init:
1
thisform.label3.BackStyle= 0
2
thisform.label3.FontBold= .T.
3
thisform.label3.FontCharSet= 204
4
thisform.label3.FontName= "Times New Roman"
5
thisform.label3.FontSize=14
6
thisform.label3.MousePointer= 12
7
thisform.label3.Top=48
8
thisform.label3.Left=312
9
thisform.label3.Height=24
10
thisform.label3.Width=240
11
thisform.label3.Visible= .F.
Здесь caption меняется по наступлению события программным спосо-
бом(при щелчке левой кнопки мышки по объекту List1 и выполнения
необходимых условий получает значение «Назначить преподавателя»),
поле Name не меняем.
label4.init:
1
thisform.label4.BackStyle= 0
2
thisform.label4.FontBold= .T.
3
thisform.label4.FontCharSet= 204
4
thisform.label4.FontName= "Times New Roman"
5
thisform.label4.FontSize=14
6
thisform.label4.MousePointer= 12
7
thisform.label4.Top=264
8
thisform.label4.Left=336
9
thisform.label4.Height=25
10
thisform.label4.Width=216
11
thisform.label4.Visible= .F.
А здесь caption меняется по наступлению события также программно, но
надпись уже содержит одно из полей записи в базе данных , поле Name
не меняем.
Базы Данных
Прикладная математика и Информатика
label5.init:
1
thisform.label5.BackStyle= 0
2
thisform.label5.FontBold= .T.
3
thisform.label5.FontCharSet= 204
4
thisform.label5.FontName= "Times New Roman"
5
thisform.label5.FontSize=13
6
thisform.label5.MousePointer= 12
7
thisform.label5.Top=0
8
thisform.label5.Left=360
9
thisform.label5.Height=48
10
thisform.label5.Width=240
11
thisform.label5.Visible= .F.
12
thisform.label5.WordWrap= .T.
13
Аналогично предыдущей, плюс размещение записи в 2 строчки в случае,
когда помещаемый туда текст будет слишком велик
label6.init:
1
thisform.label6.BackStyle= 0
2
thisform.label6.FontBold= .T.
3
thisform.label6.FontCharSet= 204
4
thisform.label6.FontName= "Monotype Corsiva"
5
thisform.label6.FontSize=13
6
thisform.label6.MousePointer= 12
7
thisform.label6.Height=25
8
thisform.label6.Left=456
9
thisform.label6.Top=300
10
thisform.label6.Width=97
11
thisform.label6.Visible= .F.
label7.init:
1
thisform.label7.BackStyle= 0
Базы Данных
Прикладная математика и Информатика
2
thisform.label7.FontBold= .T.
3
thisform.label7.FontCharSet= 204
4
thisform.label7.FontName= "Monotype Corsiva"
5
thisform.label7.FontSize=12
6
thisform.label7.MousePointer= 12
7
thisform.label7.Height=24
8
thisform.label7.Left=336
9
thisform.label7.Top=300
10
thisform.label7.Width=96
11
thisform.label7.Visible= .F.
label8.init:
1
thisform.label8.BackStyle= 0
2
thisform.label8.FontBold= .T.
3
thisform.label8.FontCharSet= 204
4
thisform.label8.FontName= "Monotype Corsiva"
5
thisform.label8.FontSize=12
6
thisform.label8.MousePointer= 12
7
thisform.label8.Height=25
8
thisform.label8.Left=336
9
thisform.label8.Top=564
10
thisform.label8.Width=97
11
thisform.label8.Visible= .F.
label9.init:
1
thisform.label9.BackStyle= 0
2
thisform.label9.FontBold= .T.
3
thisform.label9.FontCharSet= 204
4
thisform.label9.FontName= "Monotype Corsiva"
5
thisform.label9.FontSize=13
6
thisform.label9.MousePointer= 12
7
thisform.label9.Height=25
Базы Данных
Прикладная математика и Информатика
8
thisform.label9.Left=492
9
thisform.label9.Top=564
10
thisform.label9.Width=97
11
thisform.label9.Visible= .F.
Кнопки с надписью «practice» и «lection»
label10.init:
1
thisform.label10.BackStyle= 0
2
thisform.label10.FontBold= .T.
3
thisform.label10.FontCharSet= 204
4
thisform.label10.FontName= "Times New Roman"
5
thisform.label10.FontSize=11
6
thisform.label10.MousePointer= 12
7
thisform.label10.Top=420
8
thisform.label10.Left=300
9
thisform.label10.Height=25
10
thisform.label10.Width=313
11
thisform.label10.Visible= .F.
последняя надпись на форме здесь caption появляется по наступле-
нию события программным способом(при щелчке левой кнопки мышки
по объекту List1 и выполнения необходимых условий проявляется уже
определенная надпись «дисциплина уже ведется преподавателями»), по-
ле Name не меняем.
объекты text1, text2, text3, text4 просто расположены на форме, они
будут принимать в себя некоторые значения, появляться и исчезать с
формы, в общем предопределенных свойств у них нет.
list1.init:
инициализация первого списка
1
thisform.list1.AutoHideScrollbar= 1
2
thisform.FontSize=12
3
thisform.list1.FontName= "Times New Roman"
4
thisform.list1.RowSourceType= 6
Базы Данных
Прикладная математика и Информатика
5
thisform.list1.RowSource= "disciple.title"
6
thisform.list1.Height=576
7
thisform.list1.Left=12
8
thisform.list1.Top=48
9
thisform.list1.Width=270
это единственная часть формы которая видна сразу
list1.click:
реагирование на клик формы №1
1
SELECT disciple
2
nd=disciple.num
3
ul=uhr_lect
4
ur=uhr_pract
5
thisform.label7.Visible= .f.
6
thisform.label6.Visible= .f.
7
thisform.label4.Visible= .F.
8
thisform.text1.Visible= .F.
9
thisform.text2.Visible= .F.
10
thisform.label5.Visible= .f.
11
thisform.label3.Visible= .f.
12
thisform.list2.Visible= .f.
13
thisform.text3.Visible= .F.
14
thisform.label8.Visible= .F.
15
thisform.text4.Visible= .F.
16
thisform.label9.Visible= .F.
17
thisform.label10.Visible= .F.
18
SELECT link_k_d
19
GO TOP
20
LOCATE FOR nd=num_d
21
IF FOUND()
22
thisform.label2.Visible= .T.
23
thisform.label5.Visible= .T.
24
PUBLIC nk
25
nk=num_k
Базы Данных
Прикладная математика и Информатика
26
SELECT kaph
27
GO TOP
28
LOCATE FOR nk=num
29
kn=title
30
thisform.label5.Caption= kn
31
thisform.label3.Visible= .T.
32
thisform.label3.Caption="Назначить преподавателя"
33
thisform.list2.Visible= .T.
34
thisform.label10.Visible= .T.
35
36
thisform.list3.RowSourceType= 3
37
csql1= "SELECT s.title FROM teacher s into cursor tmpcur;
38
WHERE s.num in ;
39
(select num_t FROM opis WHERE num_d=nd)"
40
thisform.list3.RowSource=csql1
41
42
thisform.text1.Visible= .t.
43
thisform.text2.Visible= .t.
44
thisform.text1.Value =ul
45
thisform.text2.Value =ur
46
47
td=thisform.list1.Value
48
SELECT disciple
49
GO TOP
50
LOCATE FOR td=title
51
IF FOUND()
52
n_d=num
53
ELSE
54
n_d=0
55
ENDIF
56
57
ELSE
58
thisform.label7.Visible= .f.
Базы Данных
Прикладная математика и Информатика
59
thisform.label5.Visible= .f.
60
thisform.label3.Visible= .f.
61
thisform.list2.Visible= .f.
62
ENDIF
63
64
SELECT link_k_d
65
GO TOP
66
LOCATE FOR n_d=num_d
67
IF FOUND()
68
n_k=num_k
69
thisform.list3.Visible= .T.
70
ELSE
71
n_k=0
72
ENDIF
73
74
thisform.list2.RowSourceType= 3
75
csql= "SELECT s.title FROM teacher s into cursor tmpcur2;
76
WHERE s.num in ;
77
(select num_t FROM link_k_t WHERE num_k=n_k)"
78
thisform.list2.RowSource=csql
опишем немного данный код:
первые 4 строки выбираем запись в списке, далее до 17 строки прячем
на форме все остальное до первой необходимости с 18 по 25 открываем
таблицу связи дисциплины и кафедры и находим соответственно номер
кафедры, с 26 по 35 показываем List2 & label1,2,3,5 с 36 по 40 выполня-
ется sql - запрос для отображения списка преподавателей уже известной
кафедры, с 42 по 45 показываем text1,2 и
с 47 по 78 делаем тоже самое, но для поиска уже записанных в базу
list2.init:
инициализация второго списка
1
thisform.list2.AutoHideScrollbar= 1
2
thisform.FontSize=12
Базы Данных
Прикладная математика и Информатика
3
thisform.list2.FontName= "Times New Roman"
4
thisform.list2.Height=168
5
thisform.list2.Left=288
6
thisform.list2.Top=84
7
thisform.list2.Width=313
8
9
thisform.Visible= .F.
10
list2.click:
реагирование на клик формы №2
1
nm=thisform.list2.value
2
3
SELECT teacher
4
LOCATE FOR nm=teacher.title
5
IF FOUND()
6
nt=num
7
SELECT link_t_d
8
GO TOP
9
LOCATE FOR nt=num_t
10
IF FOUND()
11
nd=num_d
12
SELECT dolg
13
GO TOP
14
LOCATE FOR nd=num
15
mdolg=dolg.title
16
llect=dolg.lect
17
thisform.label4.Visible= .T.
18
thisform.label6.Visible= .T.
19
thisform.text1.Visible= .t.
20
thisform.text2.Visible= .t.
21
thisform.label4.Caption=mdolg
22
IF llect
23
thisform.label7.Visible= .t.
Базы Данных
Прикладная математика и Информатика
24
thisform.text1.visible=.t.
25
ELSE
26
thisform.label7.Visible= .f.
27
thisform.text1.visible=.f.
28
29
ENDIF
30
31
ENDIF
32
ENDIF
эта форма также работает на клик и открываетзакрывает label4,7,6 &
text1,2 в зависимости от должности преподавателя
list3.init:
инициализация третьего списка
1
thisform.list3.AutoHideScrollbar= 1
2
thisform.FontSize=12
3
thisform.list3.FontName= "Times New Roman"
4
thisform.list3.Height=96
5
thisform.list3.Left=300
6
thisform.list3.Top=456
7
thisform.list3.Width=312
8
9
thisform.list3.Visible= .F.
list3.click:
реагирование на клик формы №3
1
nm=thisform.list3.value
2
SELECT teacher
3
LOCATE FOR nm=teacher.title
4
IF FOUND()
5
nt=num
6
7
kn=thisform.label5.Caption
8
dn=thisform.list1.Value
Базы Данных
Прикладная математика и Информатика
9
10
SELECT disciple
11
LOCATE FOR dn=disciple.title
12
IF FOUND()
13
nd=num
14
ENDIF
15
16
SELECT kaph
17
LOCATE FOR kn=kaph.title
18
IF FOUND()
19
nk=num
20
ENDIF
21
22
SELECT opis
23
GO TOP
24
LOCATE FOR nt=num_t AND nk=num_k AND nd=num_d
25
IF FOUND()
26
llect=opis.lect
27
ul=uhr_lect
28
ur=uhr_pract
29
thisform.text3.Value=ul
30
thisform.text4.Value=ur
31
thisform.text3.Visible=llect
32
thisform.label8.Visible=llect
33
thisform.text4.Visible= .T.
34
thisform.label9.Visible= .T.
35
ENDIF
36
ENDIF
37
действует аналогично с той лишь разницей, что ищет уже записанных
другой таблице OPis
кнопка
declare
Базы Данных
Прикладная математика и Информатика
1
2
3
SELECT teacher
4
GO TOP
5
LOCATE FOR thisform.list2.Value = title
6
nt=num
7
8
9
SELECT disciple
10
GO TOP
11
LOCATE FOR thisform.list1.Value = title
12
nd=num
13
14
SELECT kaph
15
GO TOP
16
LOCATE FOR thisform.label5.Caption=title
17
nk=num
18
19
IF thisform.text1.Visible
20
pr=thisform.text1.Value
21
ELSE
22
pr=0
23
ENDIF
24
25
SELECT opis
26
APPEND BLANK
27
replace num_t WITH nt,;
28
num_d WITH nd, ;
29
num_k WITH nk, ;
30
lect WITH thisform.text1.Visible, ;
31
uhr_lect WITH pr;
32
uhr_pract WITH thisform.text2.Value
33
Базы Данных
Прикладная математика и Информатика
34
RETURN
она понятно записывает в базу количество часов преподавания данным
преподавателем данной дисциплины
Базы Данных
Прикладная математика и Информатика
5 Реализация информационной системы
5.1 Средства реализации
СУБД Visual Fox Pro (vfp) для реализации информационной си-
стемы (ИС) имеет следующие средства:
— базовые возможности полнофункциональной интегрированной систе-
мы программирования vfp с использованием объектно-ориентированного
программирования;
— визуальные средства, которыми можно воспользоваться из главного
меню СУБД Visual Fox Pro;
— язык программирования СУБД vfp с полным набором операторов (ко-
манд);
— специализированный язык запросов SQL (Structured Query Language)
Опишем основные объекты СУБД Visual Fox Pro, использованные в
этом проекте:
∙ Проект;
∙ База данных;
– Таблицы;
– Индексы;
∙ Представления данных;
∙ Запросы;
∙ Формы;
∙ Программы;
∙ Меню;
Базы Данных
Прикладная математика и Информатика
Проект (объект Project) используется для объединения элементов при-
ложения. Проект играет роль каталога, содержащего элементы приложе-
ния (информационной системы конкретной задачи – конкретной пред-
метной области), упрощая разработку приложения.
База данных (объект Database) состоит из таблиц, индексов, триггеров
и хранимых процедур. Каждая таблица имеет имя и хранится в отдель-
ном файле с расширением DBF (data base file – файл базы данных). Каж-
дая таблица может иметь несколько индексов, используемых для упоря-
дочения данных и быстрого поиска данных. Индексы хранятся в файле
с тем же именем, что и таблица, но с расширением CDX – составной
индексный файл (мультииндексный файл), хранящий сразу несколько
индексных выражений.
Представления данных (Views) позволяют объединять данные таблиц
и представлять их в более удобном виде. Представления – это виртуаль-
ные таблицы. Они похожи на обычные таблицы, но не являются физи-
ческими объектами хранения данных. Представления существуют в базе
данных до тех пор, пока не будут принудительно удалены. Количество
представлений в базе данных обычно превосходит количество таблиц.
Во многих информационных системах (приложениях) доступ к данным
осуществляется только с помощью представления данных. Представле-
ния используются для выборки данных в формах, отчетах, при создании
запросов и в программах.
Формы, отчеты, запросы и программы используются для отображе-
ния и редактирования данных. Формы (объект Form) используются для
просмотра и ввода данных в таблицы, отображения их на экране или
управления работой приложения (ИС).Формы как объекты предостав-
ляют разработчику множество свойств, событий и методов, которые поз-
воляют управлять внешним видом окна и на созданном окне размещать
различные элементы управления. Объект Form является контейнером,
в который помещаются другие объекты. Это позволяет расширить соб-
ственную функциональность, а также позволяет организовать интерак-
тивный диалог с пользователем.
Базы Данных
Прикладная математика и Информатика
Запросы являются средством выборки данных из одной или несколь-
ких таблиц. Для реализации запроса используются следующие средства:
специализированный язык запросов – SQL (Structured Query Language),
конструктор запросов и программа на алгоритмическом языке Visual
FoxPro. Результаты выполнения запроса могут выводиться в виде от-
чета, отображаться в форме или сохраняться в указанной таблице.
Программы, написанные на алгоритмическом языке Visual FoxPro, яв-
ляются объектноориентированными. С помощью программ обрабатыва-
ются события в форме, создаются объекты, осуществляются вычисления,
происходит управление базой данных. Можно объединять программы в
библиотеки.
Меню является основной формой диалога в информационных систе-
мах обработки данных.
Базы Данных
Прикладная математика и Информатика
Для создания объектов и работы с ними в Visual FoxPro существуют
специальные средства – конструкторы (Designers) и мастера (Wizards).
Они предоставляют удобные возможности, позволяющие создавать нуж-
ные объекты информационных систем (приложений).
Конструктор Базы Данных (Database Designer)
Конструктор базы данных предоставляет средства для создания объек-
та БД (Database). С его помощью можно создавать, добавлять, удалять
таблицы, связывать их так называемыми «постоянными связями», опре-
делять правила ссылочной целостности.
Конструктор таблиц (Table Designer)
Конструктор таблиц предназначен для создания таблиц и определения
их структуры, создания индексов, определения правил ввода как для
полей, так и для записей в целом.
Конструктор запросов (Query Designer)
Конструктор запросов позволяет визуальными средствами создавать за-
просы к БД на языке SQL.
Конструктор представлений (View Designer)
Конструктор предназначен для создания представлений – SQL-запросов,
хранящихся в БД. Представления позволяют редактировать данные.
Конструктор форм (Form Designer)
Конструктор форм предоставляет удобные средства для создания поль-
зовательского интерфейса.
Базы Данных
Прикладная математика и Информатика
5.2 Описание структуры базы данных
Объект Преподаватель.
Характеризует предметную область, представлен таблицей. Степень
отношения — 2. Ключ отношения — атрибут num обладает следующи-
ми свойствами: однозначность идентификации и неизбыточность. Вы-
бран в качестве первичного ключа. Искуственный.По нему же построен
индекс в порядке возрастания. Не может быть нулевым. Автоматиче-
ский инкремент, начинается с 1 шаг 1. Искусственно введен. Отношение
нормализовано и находится в первой нормальной форме.
Второй кортеж представляет собой Фамилию, Имя и Отчество (или
инициалы) записаные в одну строку.
В базе данных имеет название teacher и в таблице представлены его
атрибуты и кортежи :
name
field
caption type data size
data
(width,
decimal)
key
limits
description
num
№
integer
(Autoinc)
4,0
primary только для чте-
ния, уникаль-
ный, ключевой
искусственно
введенный
ключ,
номер
преподавателя
title
name
Character 65,0
нет
не более 65 сим-
волов
ФИО
Таблица данных teacher — Преподаватели
Базы Данных
Прикладная математика и Информатика
Объект Должность.
Характеризует предметную область, представлен таблицей. Степень
отношения — 4. Ключ отношения — атрибут num обладает следующи-
ми свойствами: однозначность идентификации и неизбыточность. Вы-
бран в качестве первичного ключа. Искуственный.По нему же построен
индекс в порядке возрастания. Не может быть нулевым. Автоматиче-
ский инкремент, начинается с 1 шаг 1. Искусственно введен. Отношение
нормализовано и находится в первой нормальной форме.
Остальные кортежи представляют собой наименование должности, на-
грузка в часах и возможность преподавания.
В базе данных имеет название dolg и в таблице представлены его
атрибуты и кортежи :
name
field
caption type
data
size
data
(width,
decimal)
key
limits
description
num №
integer
(Autoinc)
4,0
primary только для чтения,
уникальный, ключе-
вой
искусственно
введенный
ключ,
номер
должности
title
name
Character 35,0
нет
не более 35 симво-
лов, по умолчанию
имеет пустое значе-
ние (включено для
отсеивания ошибок)
наименование
должности
uhr
hour
Integer
4,0
нет
по умолчанию имеет
значение 650 (вклю-
чено для отсеивания
ошибок, минимальное
значение среди воз-
можного)
нагрузка в часах
преподавания
(ведение
лек-
ций и практик
складывается)
lect
lection? Logical
1,0
нет
по умолчанию имеет
значение .F. (вклю-
чено для отсеивания
ошибок, аналог false )
возможность
преподавания
лекции
данной
должностью
Таблица данных dolg — Должность.
Базы Данных
Прикладная математика и Информатика
Отношение Связь объектов Преподаватель-Должность.
Связывает объекты Преподаватель и Должность. Степень отношения — 2. Ключ
отношения — атрибут num_t обладает следующими свойствами: однозначность
идентификации и неизбыточность.Отношение типа 1:N. Выбран в качестве ключа,
не являющимся первичным. Искуственный.По нему же построен индекс в порядке
возрастания. Не может быть нулевым. Искусственно введен.
Второй ключ отношения — атрибут num_d обладает следующими свойствами:
неоднозначность идентификации и неизбыточность. Отношение типа N:1. Выбран в
качестве ключа, не являющимся первичным. По нему же построен индекс в порядке
возрастания. Не может быть нулевым. Искусственно введен.
Отношение нормализовано и находится во второй нормальной форме. Все атри-
буты функционально полно зависят от первичных ключей объектов.
В базе данных имеет название link_t_d и в таблице представлены его атрибуты
и кортежи :
name
field
caption type data size
data
(width,
decimal)
key
limits
description
num_t
№
integer
4,0
candidate только для чте-
ния, уникаль-
ный, ключевой
искусственно
введенный
ключ,
номер
преподавателя
num_d
№
integer
4,0
regular
только для чте-
ния, ключевой
искусственно
введенный
ключ,
номер
должности
Таблица данных link_t_d — Связь объектов Преподаватель-Должность.
Базы Данных
Прикладная математика и Информатика
Объект Кафедра.
Характеризует предметную область, представлен таблицей. Степень
отноше-
ния — 2. Ключ отношения — атрибут num обладает следующими свойствами: одно-
значность идентификации и неизбыточность. Выбран в качестве первичного ключа.
Искуственный.По нему же построен индекс в порядке возрастания. Не может быть
нулевым. Автоматический инкремент, начинается с 1 шаг 1. Искусственно введен.
Отношение нормализовано и находится в первой нормальной форме.
Второй кортеж представляет собой наименование кафедры.
В базе данных имеет название kaph и в таблице представлены его атрибуты и
кортежи :
name
field
caption type data size
data
(width,
decimal)
key
limits
description
num
№
integer
(Autoinc)
4,0
primary только для чте-
ния, уникаль-
ный, ключевой
искусственно
введенный
ключ,
номер
кафедры
title
name
Character 35,0
нет
не более 35 сим-
волов,
имеет
пустое значение
по умолчанию
(включено для
отсеивания
ошибок)
Наименование
кафедры
Таблица данных kaph — Кафедра
Базы Данных
Прикладная математика и Информатика
Отношение Связь объектов Преподаватель-Кафедра.
Связывает объекты Кафедра и Преподаватель. Степень отношения — 2. Ключ от-
ношения — атрибут num_t обладает следующими свойствами: однозначность иден-
тификации и неизбыточность.Отношение типа 1:N. Выбран в качестве ключа, не
являющимся первичным. Искуственный. По нему же построен индекс в порядке воз-
растания. Не может быть нулевым. Искусственно введен.
Второй ключ отношения — атрибут num_k обладает следующими свойствами:
неоднозначность идентификации и неизбыточность. Отношение типа N:1. Выбран
в качестве ключа, не являющимся первичным. Искуственный.По нему же построен
индекс в порядке возрастания. Не может быть нулевым. Искусственно введен.
Отношение нормализовано и находится во второй нормальной форме. Все атри-
буты функционально полно зависят от первичных ключей объектов.
В базе данных имеет название link_k_t и в таблице представлены его атрибуты
и кортежи :
name
field
caption type data size
data
(width,
decimal)
key
limits
description
num_t
№
integer
4,0
candidate только для чте-
ния, уникаль-
ный, ключевой
искусственно
введенный
ключ,
номер
преподавателя
num_k
№
integer
4,0
regular
только для чте-
ния, ключевой
искусственно
введенный
ключ,
номер
кафедры
Таблица данных link_k_t — Связь объектов Преподаватель-Кафедра.
Базы Данных
Прикладная математика и Информатика
Объект Дисциплины.
Характеризует предметную область, представлен таблицей. Степень
отноше-
ния — 4. Ключ отношения — атрибут num обладает следующими свойствами: од-
нозначность идентификации и неизбыточность. Выбран в качестве первичного клю-
ча.Искуственный. По нему же построен индекс в порядке возрастания. Не может
быть нулевым. Автоматический инкремент, начинается с 1 шаг 1. Искусственно вве-
ден.
Остальные кортежи представляют собой наименование дисциплины и предопре-
деленные часы практик и лекций.
Отношение нормализовано и находится в первой нормальной форме.
В базе данных имеет название lisciple и в таблице представлены его атрибуты и
кортежи :
name
field
caption type data size
data
(width,
decimal)
key
limits
description
num
№
integer
(Autoinc)
4,0
primary только для чте-
ния, уникаль-
ный, ключевой
искусственно
введенный
ключ,
номер
дисциплины
title
name
Character 35,0
нет
не более 35 сим-
волов,
имеет
пустое значение
по умолчанию
(включено для
отсеивания
ошибок)
наименование
дисциплины
uhr_lect
lect
Integer
4,0
нет
по умолчанию
имеет значение
0
(включено
для отсеивания
ошибок)
нагрузка в часах
преподавания
лекций
uhr_pract pract
Integer
4,0
нет
по умолчанию
имеет значение
0
(включено
для отсеивания
ошибок)
нагрузка в часах
преподавания
практики
Таблица данных disciple — Дисциплины
Базы Данных
Прикладная математика и Информатика
Отношение Связь объектов Дисциплина-Кафедра.
Связывает объекты Дисциплина и Преподаватель. Степень отношения — 2. Ключ
отношения — атрибут num_d обладает следующими свойствами: однозначность
идентификации и неизбыточность.Отношение типа 1:N. Выбран в качестве ключа,
не являющимся первичным. Искуственный. По нему же построен индекс в порядке
возрастания. Не может быть нулевым. Искусственно введен.
Второй ключ отношения — атрибут num_k обладает следующими свойствами:
неоднозначность идентификации и неизбыточность. Отношение типа N:1. Выбран
в качестве ключа, не являющимся первичным. Искуственный.По нему же построен
индекс в порядке возрастания. Не может быть нулевым. Искусственно введен.
Отношение нормализовано и находится во второй нормальной форме. Все атри-
буты функционально полно зависят от первичных ключей объектов.
В базе данных имеет название link_k_d и в таблице представлены его атрибуты
и кортежи :
name
field
caption type data size
data
(width,
decimal)
key
limits
description
num_d
№
integer
4,0
candidate только для чте-
ния, уникаль-
ный, ключевой
искусственно
введенный
ключ,
номер
дисциплины
num_k
№
integer
4,0
regular
только для чте-
ния, ключевой
искусственно
введенный
ключ,
номер
кафедры
Таблица данных link_k_d — Связь объектов Дисциплина-Кафедра.
Базы Данных
Прикладная математика и Информатика
Отношение Связь объектов Дисциплина-Кафедра-Преподаватель.
Связывает объекты Дисциплина, Кафедра и Преподаватель. Степень отноше-
ния — 2.
Ключ отношения — атрибут num_d обладает следующими свойствами: неодно-
значность идентификации и неизбыточность.Отношение типа N:1. Выбран в качестве
ключа, не являющимся первичным. Искуственный. По нему же построен индекс в
порядке возрастания. Не может быть нулевым. Искусственно введен.
Второй ключ отношения — атрибут num_k обладает следующими свойствами:
неоднозначность идентификации и неизбыточность. Отношение типа N:1. Выбран
в качестве ключа, не являющимся первичным. Искуственный.По нему же построен
индекс в порядке возрастания. Не может быть нулевым. Искусственно введен.
Второй ключ отношения — атрибут num_t обладает следующими свойствами:
неоднозначность идентификации и неизбыточность. Отношение типа N:1. Выбран
в качестве ключа, не являющимся первичным. Искуственный.По нему же построен
индекс в порядке возрастания. Не может быть нулевым. Искусственно введен.
Остальные кортежи представляют собой возможность преподавания лекций и
предопределенные часы практик и лекций.
Отношение нормализовано и находится во третьей нормальной форме. Атрибуты
uhr_lect uhr_pract нетранзитивно зависят от первичных ключей
В базе данных имеет название opis и в таблице представлены его атрибуты и
кортежи :
Базы Данных
Прикладная математика и Информатика
name
field
caption type data size
data
(width,
decimal)
key
limits
description
num_d
№
integer
4,0
regular
только для чте-
ния, ключевой
искусственно
введенный
ключ,
номер
дисциплины
num_k
№
integer
4,0
regular
только для чте-
ния, ключевой
искусственно
введенный
ключ,
номер
кафедры
num_t
№
integer
4,0
regular
только для чте-
ния, ключевой
искусственно
введенный
ключ,
номер
преподавателя
uhr_lect
lect
Integer
4,0
нет
по умолчанию
имеет значение
0
(включено
для отсеивания
ошибок)
нагрузка в часах
преподавания
лекций
uhr_pract pract
Integer
4,0
нет
по умолчанию
имеет значение
0
(включено
для отсеивания
ошибок)
нагрузка в часах
преподавания
практики
lect
lection? Logical
1,0
нет
по умолчанию
имеет значение
.F. (включено
для отсеивания
ошибок, аналог
false )
возможность
преподавания
лекции
данной
должностью
Таблица данных opis — Связь объектов Дисциплина-Кафедра-Преподаватель.
Базы Данных
Структура отчета по курсовому проекту
Стр.
1
Описание предметной области ........................................ 3
2
Проектирование базы данных ......................................... 5
2.1
Предметная область............................................... 5
2.2
Модель данных (ER-модель)..................................... 6
2.3
Реляционная схема ................................................ 7
3
Проектирование информационной системы ......................... 9
3.1
функции информационной системы(ИС) ....................... 9
3.2
Архитектура информационной системы ........................ 11
4
Контрольный пример................................................... 12
5
Реализация информационной системы ............................... 29
5.1
Средства реализации.............................................. 29
5.2
Описание структуры базы данных .............................. 33
42
Информация о работе Специализированная библиотека