МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙКОЙ ФЕДЕРАЦИИ
ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНСТИТУТ МАТЕМАТИКИ И КОМПЬЮТЕРНЫХ НАУК
Кафедра информационных систем
Курсовая работа
по дисциплине «Базы данных»
Учет нагрузки преподавателей.
Выполнил: Солецкий Д.А.
385 группа
Проверил: Моор А.П.
Старший преподаватель кафедры ИС
Тюмень 2011
Оглавление
1.Описание задачи. 3
1.1.Предметная область. 3
1.2.Функции приложения. 3
1.3.Первичный документ. 4
2.Нормализация. 5
3.Разработка модели «сущность-связь». 8
4.Описание (диаграмма) БД.. 13
4.1.Таблицы БД.. 13
4.2.Диаграмма БД.. 14
5.Описание приложения. 15
5.1.Требования к приложению.. 15
5.2.Реализация. 15
Заключение. 17
Учет нагрузки преподавателей — область, без которой не возможна нормальная работа учебного заведения.
База данных предоставляет возможность отслеживания и регулирования учебной нагрузки преподавателей.
Программа должна позволять просматривать нагрузку преподавателей по семестрам у разных специальностей по разным предметам. Набор групп для преподавателей не ограничен, как и предметов.
Приложение, работающее с базой данных учета нагрузки преподавателей:
1. Добавление, редактирование, удаление данных о преподавателях, предметах, специальностях, факультетах, кафедрах, должностях и учебных часах;
2. Оформление учета преподавателей по семестрам, специальностям и предметам;
3. Сортировка данных;
4. Формирование отчетов и экспорт данных в MSExcel.
№
|
7
|
ФИО преподавателя
|
Кириллов А.А
|
Кафедра
|
Физики
|
Должность
|
Старший преп.
|
Семестр
|
2
|
Факультет |
Специальность |
Предмет |
Часов лекций |
Часов практики |
Код |
Название |
Код |
Название |
Код |
Название |
1 |
ИМИКН |
1 |
КБ |
1 |
Теорет. Механика |
20 |
20 |
2 |
Физика |
15 |
15 |
2 |
КОИБАС |
2 |
Физика |
17 |
16 |
3 |
Математика |
12 |
15 |
2 |
Физический |
3 |
Физика |
2 |
Физика |
25 |
30 |
4 |
Теплофизика |
1 |
Теорет. Механика |
20 |
5 |
2 |
Физика |
13 |
25 |
При проведении нормализации были учтены все столбы, указанные в первичном документе. Первичный документ «Заказ» можно представить в виде таблицы.
№ |
ФИО |
Код кафе
дры
|
Кафе
дра
|
Код долж
ности
|
Долж
ность
|
Семес
тр
|
Код факу
ль
тета
|
Факультет |
Код специаль
ности
|
Специаль
ность
|
Код предме
та
|
Предмет |
Часов лекций |
Часов практики |
1 |
Кирилов А.А |
2 |
Физики |
1 |
Старший препод. |
2 |
1 |
ИМИКН |
1 |
КБ |
1 |
Теорет. Механика |
20 |
20 |
2 |
Физика |
15 |
15 |
2 |
КОИБАС |
2 |
Физика |
17 |
16 |
3 |
Математика |
12 |
15 |
2 |
Физический |
3 |
Физика |
2 |
Физика |
25 |
30 |
4 |
Теплофизика |
1 |
Теорет. Механика |
20 |
5 |
2 |
Физика |
13 |
25 |
1НФ:
Повторяющаяся группа: Код факультета (Id_fak), Факультет (name_fak), Код специальности (Id_spec), Специальность (name_spec), Код предмета (Id_pred), Предмет (name_pred), Часы лекций (lek), Часы практик (prak). Для того чтобы в отношении на пересечении каждой строки и каждого столбца содержалось только одно значение, продублируем значения атрибутов, не входящих в повторяющуюся группу:
id_prep |
Prep |
id_kaf |
name_kaf |
id_dol |
name_dol |
Semestr |
Id_fak |
name_fak |
Id_spec |
name_spec |
Id_pred |
name_pred |
Lek |
Prak |
1 |
Кирилов А.А |
2 |
Физики |
1 |
Старший препод. |
2 |
1 |
ИМИКН |
1 |
КБ |
1 |
Теорет. Механика |
20 |
20 |
1 |
Кирилов А.А |
2 |
Физики |
1 |
Старший препод. |
2 |
1 |
ИМИКН |
1 |
КБ |
2 |
Физика |
15 |
15 |
1 |
Кирилов А.А |
2 |
Физики |
1 |
Старший препод. |
2 |
1 |
ИМИКН |
2 |
КОИБАС |
2 |
Физика |
17 |
16 |
1 |
Кирилов А.А |
2 |
Физики |
1 |
Старший препод. |
2 |
1 |
ИМИКН |
2 |
КОИБАС |
3 |
Математика |
12 |
15 |
1 |
Кирилов А.А |
2 |
Физики |
1 |
Старший препод. |
2 |
2 |
Физический |
3 |
Физика |
2 |
Физика |
25 |
30 |
1 |
Кирилов А.А |
2 |
Физики |
1 |
Старший препод. |
2 |
2 |
Физический |
4 |
Теплофизика |
1 |
Теорет. Механика |
20 |
5 |
1 |
Кирилов А.А |
2 |
Физики |
1 |
Старший препод. |
2 |
2 |
Физический |
4 |
Теплофизика |
2 |
Физика |
13 |
25 |
Выберем потенциальные ключи:
id_prep, semestr, id_spec, id_pred - однозначно определяет строку в 1НФ
Единственный ключ он же первичный
Частичные функциональные зависимости: id_prep -> prep, id_kaf, name_kaf,id_dol, name_dol
id_spec -> name_spec, id_fak, name_fak
id_pred -> name_pred
Вынесем зависимые атрибуты с копией их детерменанта в отдельные отношения.
Итог
2
НФ
:
А (id_prep, semestr, id_pred, id_spec
,lek,prak)
Б(id_spec
, name_spec, id_fak, name_fak)
В(id_prep
, prep, id_kaf, name_kaf, id_dol, name_dol)
Г(id_pred
, name_pred)
Транзитивные зависимости:
В А транзитивных зависимостей нет
В
Б
: id_spec -> id_fak, id_fak -> name_fak
Отношение Б разбивается на два отношения:
Б1(id_spec
, name_spec, id_fak)
Б2(id_fak
, name_fak)
В
В
: id_prep -> id_kaf, id_kaf -> name -> kaf; id_prep -> id_dol, id_dol -> name_dol
Отношение В разбивается на 3 отношения:
В1(id_prep
, prep, id_kaf,id_dol)
В2( id_kaf, name_kaf)
B3(id_dol, name_dol)
В Г Транзитивных зависимостей нет
Итог
3
НФ
А (id_prep, semestr, id_pred, id_spec
, lek, prak)
Б1(id_spec
, name_spec, id_fak)
Б2(id_fak
, name_fak)
В1(id_prep
, prep, id_kaf, id_dol)
В2( id_kaf, name_kaf)
B3(id_dol, name_dol)
Г(id_pred
, name_pred)
НФБК
Отношения Б1, Б2, В1, B2, B3, Г: не имеют составных потенциальных ключей, следовательно они в НФБК
Отношения А имеет только один составной потенциальный (он же первичный ключ, следовательно оно в НФБК
Итог нормализации совпадает с итогом 3НФ
Итерация 1
Требования к программе:
· Хранить информацию о преподавателях ведущих учебную деятельность;
· Хранить информацию о предметах;
· Хранить информацию о специальностях;
Определение сущностей:
· Преподаватель;
· Предмет;
· Специальность
Может преподавать
Может преподаваться
Может
преподавать
Могут
учиться
Итерация 2
Уточнение сущностей:
Преподавателю определяют учебную нагрузку;
Преподаватель может вести несколько предметов у нескольких специальностей;
Должна содержать Должна содержать
Должна содержать
Может работать Может быть Может бытьИтерация 3
Уточнение сущностей:
Специальность характеризуется факультетом; Преподаватель имеет должность и относиться к какой-либо кафедре;
Определение атрибутов:
· Преподаватель содержит уникальный код, ФИО, Должность, Кафедру;
· Карточка учета содержит уникальный код, код преподавателя, код предмета, код специальности, семестр и часы нагрузки;
· Специальность содержит уникальный код, наименование специальности и код факультета;
· Факультет содержит код факультета, название;
· Кафедра содержит код кафедры, название;
· Должность содержит код должности, название;
· Предмет содержит код предмета, название;
Концептуальная модель
Кафедра
|
Код кафедры |
Название кафедры |
Учет нагрузки преподавателя
|
Код преподавателя |
Код специальности |
Семестр |
Код предмета |
Часов лекций |
Часов практики |
Специальность
|
Код специальности |
Название специальности |
Код факультета |
Преподаватель
|
Код преподавателя |
ФИО преподавателя |
Код кафедры |
Код должности |
Должность
|
Код должности |
Название должности |
Предмет |
Код предмета |
Название предмета |
Факультет |
Код факультета |
Название факультета |
Физическая модель
Table Kaf
|
Id_kaf(int) |
name_kaf( varchar30) |
Table Itog |
Id_prep(int) |
Id_spec(int) |
Semester(int) |
Id_pred(int) |
Lek(int) |
Prak(int) |
Table Spec
|
Id_spec(int) |
Name_spec(varchar30) |
Id_fak (int) |
Table Prep
|
Id_prep(int) |
Name_prep( varchar30) |
Id_kaf(int) |
Id_dol(int) |
Table Dol
|
Id_dol(int) |
Name_dol(varchar20) |
Table Pred |
Id_pred(int) |
Name_pred(varchar30) |
Table Fak |
Id_fak(int) |
Name_fak(varchar30) |
Название |
Тип поля |
Назначение |
Table
Itog
(Учет нагрузки преподавателей)
|
Id_itog
int
№
|
Id_prep |
int |
Код преподавателя |
Id_spec |
int |
Код специальности |
Semeste |
int |
Семестр |
Id_pred |
int |
Код предмета |
Lek |
int |
Часов лекций |
Prak |
int |
Часов практики |
Table Prep
(Преподаватели)
|
Id_prep |
int |
Код преподавателя |
Name_prep |
varchar30 |
ФИО преподавателя |
Id_kaf |
int |
Код кафедры |
Id_dol |
int |
Код должности |
Table Kaf
(Кафедры)
|
Id_kaf |
int |
Код кафедры |
name_kaf |
varchar30 |
Название кафедры |
Table Dol
(Должности)
|
Id_dol |
int |
Код должности |
Name_dol |
varchar20 |
Название должности |
Table Pred
(Предметы)
|
Id_pred |
int |
Код предмета |
Name_pre |
varchar30 |
Название предмета |
Table Spec
(Специальности)
|
Id_spec |
int |
Код специальности |
Name_spec |
varchar30 |
Название специальности |
Id_fak |
int |
Код факультета |
Table Fak
(Факультеты)
|
Id_fak |
int |
Код факультета |
Name_fak |
varchar30 |
Название факультета |
Приложение должно обеспечивать:
· Ввод, модификацию и удаление любых данных из БД
· Отображение данных с фильтрами и сортировкой
· Отображение не менее трех форм обобщенной информации (отчетов) с обязательным подведением итогов. По крайней мере, два отчета должны строиться на основе сложных выборок (три и более таблицы).
· Стабильную работу без ошибок в коде, ведущих к потере функциональности.
· Функциональный и интуитивно понятный интерфейс (интуитивно понятный интерфейс – это когда пользователь может работать с программой без вопросов к разработчику)
В приложении содержатся справочные таблицы в которые можно добавлять данные.
Рис.1. Справочная таблица «Преподаватели».
Рис. 2. Главная таблица и 3 запроса в выпадающем списке.
Так же в приложении содержится 3 запроса:
· Итоговый (обобщающий)
· Суммарная нагрузка преподавателей
· Нагрузка по кафедрам
Рис.3. Запрос «Итоговый» с демонстрацией фильтра по семестрам.
Информацию из запросов можно вывести в Exсel. Для этого необходимо нажать кнопку “Вывести в Exсel”.
В итоговом отчете предусмотрены сортировки по столбцам: «№», «Преподаватель» и «Специальность».
Рис.4. Сортировка по столбцу «Преподаватель»
В результате работы была разработана база данных для учета нагрузки преподавателей. Проект базы данных включает нормализацию и модель сущность связь, на их основе была разработана серверная часть в MicrosoftSQlServer 2008. Нормализация проводилась на основании первичного документа и доведена, до нормальной формы Бойса-Кодда, модель сущность связь так же включает концептуальную и физическую модели.
|