48132 (Построение модели DFD и реализация в СУБД Visual FoxPro), страница 5
Описание файла
Документ из архива "Построение модели DFD и реализация в СУБД Visual FoxPro", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "48132"
Текст 5 страницы из документа "48132"
Функциональная модель представлена при помощи диаграмм потоков данных (DFD).
Контекстная диаграмма приведена на рисунке 2.17.1, а её детализация на рисунке 2.17.2.
Рис. 2.17.1.Контекстная диаграмма
Рис. 2.17.2.Детализированная диаграмма потоков данных
Словарь данных
@ИМЯ = ДАННЫЕ О СТУДЕНТЕ
@ТИП = дискретный поток
@БНФ = Номер зачётки + Название группы + ФИО + Год рождения + Адрес
@ИМЯ = ДАННЫЕ О ГРУППЕ
@ТИП = дискретный поток
@БНФ = Название группы + Название кафедры + Зав. кафедрой
@ИМЯ = ПОИСК СТУДЕНТА
@ТИП = дискретный поток
@БНФ = Номер зачётки
@ИМЯ = СВЕДЕНИЯ О СТУДЕНТЕ И ГРУППЕ
@ТИП = дискретный поток
@БНФ = ДАННЫЕ О СТУДЕНТЕ + ДАННЫЕ О ГРУППЕ
@ИМЯ = ИНФОРМАЦИЯ О СТУДЕНИЕ
@ТИП = внутренний поток
@БНФ = ДАННЫЕ О СТУДЕНТЕ
@ИМЯ = ИНФОРМАЦИЯ О ГРУППЕ
@ТИП = внутренний поток
@БНФ = ДАННЫЕ О ГРУППЕ
@ИМЯ = НАЙТИ ГРУППУ
@ТИП = внутренний поток
@БНФ = Название группы
@ИМЯ = РЕЗУЛЬТАТ ПОИСКА ГРУППЫ
@ТИП = внутренний поток
@БНФ = НАЙТИ ГРУППУ
@ИМЯ = ПОИСК ИНФОРМАЦИИ О СТУДЕНТЕ
@ТИП = внутренний поток
@БНФ = ПОИСК СТУДЕНТА
@ИМЯ = ИНФОРМАЦИЯ О СТУДЕНТАХ И ГРУППАХ
@ТИП = внутренний поток
@БНФ = СВЕДЕНИЯ О СТУДЕНТЕ И ГРУППЕ
Спецификация процессов
Спецификация процесса A0.1
@ВХОД = ДАННЫЕ О СТУДЕНТЕ
@ВХОД = РЕЗУЛЬТАТ ПОИСКА ГРУППЫ
@ВЫХОД = ДАННЫЕ О СТУДЕНТЕ
@ВЫХОД = НАЙТИ ГРУППУ
@СПЕЦПРОЦ A0.1 ПРОВЕРИТЬ НАЛИЧИЕ ГРУППЫ
НАЙТИ ГРУППУ = Название группы из ДАННЫХ О СТУДЕНТЕ
ЕСЛИ РЕЗУЛЬТАТ ПОИСКА ГРУППЫ не равен NULL ТО
ДАННЫЕ О СТУДЕНТЕ = ДАННЫЕ О СТУДЕНТЕ
КОНЕЦ ЕСЛИ
Спецификация процесса A0.2
@ВХОД = ДАННЫЕ О СТУДЕНТЕ
@ВЫХОД = ИНФОРМАЦИЯ О СТУДЕНТЕ
@СПЕЦПРОЦ A0.2 ФОРМИРОВАТЬ ИНФОРМАЦИЮ О СТУДЕНТЕ
ЕСЛИ добавить ИНФОРМАЦИЮ О СТУДЕНТЕ ТО
ИНФОРМАЦИЯ О СТУДЕНТЕ = ДАННЫЕ О СТУДЕНТЕ
КОНЕЦ ЕСЛИ
ЕСЛИ изменить ИНФОРМАЦИЮ О СТУДЕНТЕ ТО
ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЮ О СТУДЕНТЕ
КОНЕЦ ЕСЛИ
ЕСЛИ удалить ИНФОРМАЦИЮ О СТУДЕНТЕ ТО
ВЫПОЛНИТЬ удалить ИНФОРМАЦИЮ О СТУДЕНТЕ
КОНЕЦ ЕСЛИ
Спецификация процесса A0.3
@ВХОД = ДАННЫЕ О ГРУППЕ
@ВЫХОД = ИНФОРМАЦИЯ О ГРУППЕ
@СПЕЦПРОЦ A0.3 ФОРМИРОВАТЬ ИНФОРМАЦИЮ О ГРУППЕ
ЕСЛИ добавить ИНФОРМАЦИЮ О ГРУППЕ ТО
ИНФОРМАЦИЯ О ГРУППЕ = ДАННЫЕ О ГРУППЕ
КОНЕЦ ЕСЛИ
ЕСЛИ изменить ИНФОРМАЦИЮ О ГРУППЕ ТО
ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЮ О ГРУППЕ
КОНЕЦ ЕСЛИ
ЕСЛИ удалить ИНФОРМАЦИЮ О ГРУППЕ ТО
ВЫПОЛНИТЬ удалить ИНФОРМАЦИЮ О ГРУППЕ
КОНЕЦ ЕСЛИ
Спецификация процесса A0.4
@ВХОД = ПОИСК СТУДЕНТА
@ВХОД = ИНФОРМАЦИЯ О СТУДЕНТАХ И ГРУППАХ
@ВЫХОД = ПОИСК ИНФОРМАЦИИ О СТУДЕНТЕ
@ВЫХОД = СВЕДЕНИЯ О СТУДЕНТЕ И ГРУППЕ
@СПЕЦПРОЦ A0.4 ПОИСК СТУДЕНТА
ПОИСК ИНФОРМАЦИИ О СТУДЕНТЕ = ПОИСК СТУДЕНТА
ВЫПОЛНИТЬ ПОИСК ИНФОРМАЦИИ О СТУДЕНТЕ в БД
СВЕДЕНИЯ О СТУДЕНТЕ И ГРУППЕ = найденная в БД ИНФОРМАЦИЯ О СТУДЕНТАХ И ГРУППАХ
Проектирование структуры базы данных
Выделим три сущности: Студент, Кафедра и Группа.
Связь Студент – Группа имеет тип «Многие к одному» так как в одной группе могут учиться несколько студентов, но каждый студент учится только в одной группе. Связь Группа – Кафедра имеет тип «Многие к одному» так как к одной кафедре относится несколько групп и каждая группа относится к одной кафедре.
Рис. 2.17.3.Структура связей между сущностями
Сущность «Студент» имеет атрибуты: «Номер зачётки», «ФИО», «Год рождения», «Адрес», «Название группы».
Сущность «Группа» имеет атрибуты «Название группы», «Название кафедры».
Сущность «Кафедра» имеет атрибуты «Название кафедры», «Зав кафедрой».
Сущности «Студент» и «Группа» связаны по полю «Название группы», значение которого для сущности «Группа» уникально и является её первичным ключом.
Сущности «Группа» и «кафедра» связаны по полю «Название кафедры», значение которого для сущности «Кафедра» уникально и является её первичным ключом.
Рис. 2.17.4.Структура БД
Для каждой сущности все атрибуты функционально и не транзитивно зависят от первичного ключа и не зависят от части ключа, следовательно, структура базы данных находится в третьей нормальной форме. Атрибут функционально зависит от ключа, когда каждому значению ключа соответствует не более одного значения зависимого атрибута. Например, для ключевого поля «Номер зачётки» значение поля «ФИО» единственно, т. е. один и тот же номер зачётки не может быть более чем у одного студента. Атрибут транзитивно зависит от ключа, если он функционально зависит от ключа, а также от другого атрибута, функционально зависящего от ключа. Например, если объединить таблицы «Студент» и «Группа», то значения атрибута «Название кафедры» зависели бы функционально как от значений первичного ключа «Номер зачётки», так и от значений неключевого атрибута «Название группы». Так как студент учится только в одной кафедре и только в одной группе, и притом каждая группа относится только к одной кафедре.
Опишем структуру каждой таблицы.
Таблица «Студент» (student)
Наименование поля | Тип данных | Ограничения |
Номер зачётки (ID_zach) | Целое число | Первичный ключ |
Название группы (name_group) | Строка (15) | NOT NULL Внешний ключ |
ФИО (FIO) | Строка (30) | NOT NULL |
Год рождения (Year_birth) | Дата | |
Адрес (Address) | Строка (30) |
Таблица «Группа» (Groups)
Наименование поля | Тип данных | Ограничения |
Название группы (name_group) | Строка (15) | Первичный ключ |
Название кафедры (name_Pulpit) | Строка (15) | NOT NULL Внешний ключ |
Таблица «Кафедра» (Pulpit)
Наименование поля | Тип данных | Ограничения |
Название кафедры (name_Pulpit) | Строка (15) | Первичный ключ |
Зав кафедрой (Zav_Pulpit) | Строка (30) | NOT NULL |
Реализация спроектированной базы данных при помощи СУБД Visual FoxPro
Создадим проект приложения баз данных. Для чего выберем в главном меню File – New, затем выберем Project и укажем New File – введём имя проекта students и сохраним файл проекта (students.pjx). Далее откроется окно Project Manager (диспетчер проекта) в котором перейдём на вкладку Data (Данные) и выберем пункт Databases и нажмём кнопку New… (Новая). Появится окно, в котором выберем New Database (Новая база данных) и сохраним базу данных как students.dbc. В появившемся окне Database Designer (Построитель базы данных) выберем из контекстного меню New Table… (Новая таблица). Появится окно, в котором выберем New Table (Новая таблица) и сохраним таблицу как Student.dbf. После этого на экране появится диалоговое окно Table Designer (Конструктор таблиц) в котором введём названия всех полей таблицы Студент (Student), укажем их типы данных и ограничения. Создадим индексы для таблицы. Индексы нужны для определения первичного и внешнего ключей в базе данных. Для создания индекса перейдём на вкладку Indexes (Индексы). Сначала создадим индекс первичного ключа таблицы. В поле Name введём имя индекса PK_ Students, а из раскрывающегося списка Type (Тип) выберем тип индекса Primary (Первичный), затем нажмём кнопку справа от поля Expression (Выражение) и введём значение индексного выражения в окне построителя выражений «ID_zach», то есть укажем, что первичным ключом будет поле Номер зачётки. Теперь создадим регулярный индекс для определения внешнего ключа FK_Groups, тип – Regular, выражение – «name_group».
Аналогично создадим две другие таблицы Groups.dbf и Pulpit.dbf. Для таблицы Groups.dbf определим индексы первичного и внешнего ключа и назовём их PK_Groups и FK_Pulpit, а в выражении для первичного ключа проставим название поля первичного ключа name_group, для внешнего ключа – название поля внешнего ключа name_Pulpit. Для таблицы Pulpit.dbf определим индекс для первичного ключа PK_Pulpit, выражение – «name_Pulpit».
Создадим отношения между таблицами. Для этого в окне конструктора базы данных щёлкаем мышью на имени индекса PK_Groups таблицы Groups и переносим к индексу FK_Groups таблицы Student. Также создадим отношение между таблицами Pulpit и Groups, для чего перенесём поле PK_Pulpit из таблицы Pulpit к полю FK_Pulpit таблицы Groups.
Полученная схема базы данных представлена на рисунке 2.17.5.
Рис. 2.17.5. Схема отношений базы данных
Создадим представление, выводящее значения полей всех трёх связанных таблиц. В Диспетчере проекта перейдём на вкладку Data (Данные) – Database затем выберем базу данных studens, в которой выберем пункт Local Views (Локальные Виды) и нажмём на кнопку New, затем выберем New View (Новое представление). В появившемся окне Add Table or View (Добавить таблицу или представление) выберем поочерёдно все три таблицы и нажмем кнопку Add (Добавить). В окне View Designer (Конструктор представления) появятся все три таблицы и автоматически добавятся связи, так как мы их уже задавали при построении схемы базы данных. Выберем в контекстном меню View SQL (Просмотр SQL) и появится окно просмотра SQL запроса для вида, в котором уже будет задана связка таблиц, поэтому добавим только те поля какие мы будем выводить, для чего в разделе SELECT запроса на выборку введём список полей
Student.id_zach, Student.name_group, Student.fio,;
Student.year_birth, Student.address, Pulpit.name_pulpit,;
Pulpit.zav_pulpit;
Перейдём к окну конструктора представления и проверим правильность набранного кода, выбрав из контекстного меню Run Query (Выполнить запрос). Перейдём на вкладку Update General (Обновление) где выберем все поля для изменения, зададим ключевые поля для представления и поставим флажок Send SQL updates для того, чтобы можно было добавлять и редактировать значения полей в таблицах через это представление. Сохраним представление, выбрав File – Save. В появившемся окне View Name (Имя представления) введём Studens_View.
Создание форм
Создадим три формы по одной для каждой таблицы при помощи мастера форм. Для создания формы нужно в окне Диспетчера проектов перейти на вкладку Documents, где выбрать пункт Form и нажать кнопку New. Выберем Form Wizard, затем выберем мастера создания формы с одной таблицы Form Wizard. На первом шаге необходимо выбрать таблицу и поля, которые будут применяться в форме. Укажем таблицу Student базы данных Students и выберем все поля, переместив их в список Selected fields (Выбранные поля).
На втором шаге выберем стиль формы.
На третьем шаге укажем поля, по которым будет происходить упорядочение записи и порядок сортировки записей. Выберем упорядочение по значению поля Номер зачётки (ID_zach), для чего переместим его в список Selected fields (Выбранные поля). Укажем сортировку по возрастанию (Ascending).