Преподаватель Читает Дисциплина
Таб. № | ФИО | Дисциплина | Таб. № | Дисциплина | Колич. часов |
101 | Иванов | Математика | 101 | Математика | 120 |
120 | Сидоров | Физика | 101 | Физика | 80 |
203 | Кузнецов | Информатика | 101 | Философия | 150 |
245 | Петров | Сопромат | 120 | Сопромат | 90 |
Механика | 120 | Механика | 120 | ||
Физика | 120 | Информатика | 150 |
Проведя анализ на наличие функциональных зависимостей мы выделили следующие функциональные зависимости:
1. № зачетки (NZ)® ФИО (FIO), Группа (GRUPPA), Город (TOWN)
2. №зачетки (NZ), Код дисциплины (S_ID) ® Оценка (MARK)
3. Код дисциплины (S_ID) ® Наименование (SUBS), Колич. Часов (HOUR)
5. Код дисциплины (S_ID) ® Таб. № (TN)
6. Таб. № (TN) ® ФИО (FIO), Ученая степень (UCHSTEPEN), Кафедра (KAFEDRA)
1.2 Формулировка ограничений целостности
Ограничения целостности, как ограничения на значения ключевых полей в связных таблицах служат для сохранения логической структуры баз данных. Как правило, ограничения целостности реализуются на уровне приложений и являются составной частью технического задания на их разработку. Некоторые СУБД способны поддерживать определенные виды ограничений на уровне организации окружения программы. Требования целостности для ключевых полей каждого отношения приведены в таблицах.
Таблица Student (отношение «Студент»).
Имя поля | Описание | Тип | Примечание | Требование |
NZ | № зачетной книжки | + | ключ | Уникальность в пределах отношения; при обновлении значения в связной таблице должны изменяться одновременно; при удалении одновременно удаляется информация из связной таблицы. |
FIO | ФИО | Alpha | ||
GRUPPA | Группа студента | Alpha | ||
TOWN | Город | Alpha |
Таблица Marks (отношение «Оценки»).
Имя поля | Описание | Тип | Примечание | Требование |
NZ | № зачетной книжки | Long integer | Должен принадлежать домену Student.NZ | |
S_ID | Код дисциплины | Long integer | Должен принадлежать домену Subs.S_ID | |
MARK | Оценка за предмет | Number |
Таблица Subs (отношение «Дисциплина»).
Имя поля | Описание | Тип | Примечание | Требование |
S_ID | Код дисциплины | + | ключ | Уникальность в пределах отношения; при обновлении значения в связной таблице должны изменяться одновременно; при удалении одновременно удаляется информация из связной таблицы. |
Subs | Наименование дисциплины | Alpha | ||
Hour | Количество часов | Number |
Таблица Subj (отношение «Дисциплина2»).
Имя поля | Описание | Тип | Примечание | Требование |
S_ID | Код дисциплины | Long integer | Должен принадлежать домену Subs.S_ID | |
TN | Табельный номер преподавателя | Long integer | Должен принадлежать домену Prepodavatel.TN |
Таблица Prepodavatel (отношение «Преподаватель»).
Имя поля | Описание | Тип | Примечание | Требование |
TN | Табельный номер преподавателя | + | ключ | Уникальность в пределах отношения; при обновлении значения в связной таблице должны изменяться одновременно; при удалении одновременно удаляется информация из связной таблицы. |
FIO | ФИО преподавателя | Alpha | ||
UCHSTEPEN | Ученая степень | Alpha | ||
KAFEDRA | Название кафедры | Alpha |
Таблица Kafedra (отношение «Кафедра»).
Имя поля | Описание | Тип | Примечание | Требование |
KAFEDRA | Название кафедры | Alpha | ||
TELEPHON | № телефона кафедры | Long integer |
1.3 Физическое проектирование
В качестве исходных данных для физического проектирования примем простейшую ситуацию :
¨ Задача реализуется на одном рабочем месте.
¨ Многопользовательский доступ к базе данных не предусмотрен.
В нашем случае таблицы хранятся в формате DB; все файлы базы данных располагаются на локальном диске. Здесь же хранятся файлы поддержки СУБД и файлы прикладной программы.
Важная часть физического проектирования - выбор индексных выражений для построения индексов и выбор формата хранения индексов. Для обеспечения скорости работы, особенно на операциях выборки и поиска, необходима индексация по всем ключевым полям таблиц (см. таблицы выше).
Для создания таблиц мы используем DatabaseDesktop программы BorlandDelphi. Входим в меню File -> New -> Table и выбираем тип таблицы Paradox 7. И заполняем поля таблицы. Созданные таблицы (см. Приложение 1) будут хранится в формате DB.
Глава 2 Проектирование интерфейса
Функционально приложение состоит из трех частей:
- Интерфейс ввода / корректировки БД
- Подсистема генерации печатных форм.
- Вспомогательные функции.
Каждой из этих частей соответствует опция главного меню программы.
2.1 Интерфейс ввода/корректировки БД
Главное меню представляет собой иерархическую систему из собственно главного меню и всплывающих меню, позволяющих уточнить выбор, сделанный в меню. Передача управления в процедуру обработки выбранной команды происходит при выборе надлежащей опции всплывающего меню. Для передачи управления используется механизм управления событиями.
Меню программы выглядит следующим образом.
Рис. 2. Структурная схема (дерево диалога)
Интерфейс ввода / корректировки данных позволяет вводить, исправлять либо корректировать информацию в БД. На программную поддержку интерфейса возлагается задача отслеживания как корректности действий оператора, так и ограничений целостности.
Интерфейс состоит из двух уровней. На первом из них предоставляется доступ к одной из четырех справочников – «Студенты», «Предметы», «Преподаватели» либо «Кафедры». Для доступа к этим справочникам используется экранная форма (см. Приложение 2), в которой отображается содержимое справочника в виде таблицы. На форме размещены специальные кнопки для редактирования, добавления и удаления записи. При нажатии на кнопку «Редактировать» открывается окно (см. Приложение 2), в котором содержатся поля для редактирования. Кнопка «Добавить» добавляет строку в таблицу, а кнопка «Удалить» соответственно удаляет запись.
Выбрав на экране, например, справочник «Студенты» (см. Приложение 2), пользователь получает доступ к информации, содержащейся в данном справочнике, т.е. он получает доступ к личным данным студентов: ФИО студента, номер зачетной книжки, группа, в которой обучается студент, а также город, в котором он проживает. Получив доступ к данной информации, пользователь может осуществлять ввод и корректировку данных. Аналогично и с другими справочниками. Выбрав в меню справочник «Предметы», на экранной форме (см. Приложение 3) пользователь может увидеть список дисциплин, код дисциплин и количество часов для каждой дисциплины. Выбрав в меню справочник «Преподаватели» (см. Приложение 3), пользователь на экранной форме получает доступ к личной информации преподавателей: табельному номеру преподавателя, ФИО, ученой степени и на какой кафедре он работает. Выбрав в меню справочник «Кафедры» (см. Приложение 4) пользователь видит список кафедр и их телефоны.
2.2 Генерация отчетов
Поскольку вся информация хранится в виде декомпозиции, постольку для выдачи на печать отчетов необходимо проводить обратное слияние таблиц. Это можно делать либо на логическом уровне, используя динамические связи, либо на физическом уровне.
Практически во всех современных СУБД, где используется современная техника программирования, этот вопрос решается следующим образом. Все СУБД располагают каким - либо подмножеством языка запросов SQL, встроенным в систему. Этот язык предоставляет возможность корректного взаимодействия с сервером, а также создать объединение таблиц любой сложности, в том числе и с вложенными группировками и агрегатированием данных всего лишь в одной команде Select. Кроме гибкости и мощности запросы SQL отличаются еще и высоким быстродействием - по сравнению с запросом на языке навигационного типа выборка выполняется иногда в десятки раз быстрее.
В качестве рабочего алгоритма выбрана следующая последовательность действий :
- С помощью команды Select создается выборка в курсоре SQL.
- Этот курсор устанавливается как текущая рабочая область и из него происходит вывод на печать.
Для вывода отчета пользователь может выбрать в меню вкладку «Печать». При нажатии на «Печать» открывается экранная форма (см. Приложение 4), на которой изображены две кнопки «Вывод отчета №1» и «Вывод отчета №2». При нажатии на одну из этих кнопок выводится отчет (см. Приложение 5).
Глава 3 Программная реализация
Для реализации БД и разработки интерфейса мы используем среду программирования Delphi.
Главное меню программы создаем следующим образом.
Создаем новый проект и на форме (Form1) размещаем следующие компоненты (см. Приложение 6):
1. MainMenu – этот компонент служит для создания меню программы, в свойстве Items мы прописываем наше меню, состоящее из справочников, отчетов, «о программе» и «выход».