- •1 Теория и практическая реализация систем управления базами данных
- •2 Разработка базы данных
- •2.2 Процедура нормализации
- •2.3 Разработка логической модели данных
- •2.4 Разработка физической модели данных
- •2.5 Разработка программы автогенерации
- •3 Разработка программного приложения
- •3.2 Разработка форм
- •3.4 Разработка меню
- •3.5 Обеспечение многопользовательской работы
- •3.3 Разработка отчетов
- •3.6 Результаты тестирования приложения
2.3 Разработка логической модели данных
Логическая модель данных (ЛМД) имеет следующий вид (рисунок 2.1).
Рисунок 2.1 – Логическая модель данных
2.4 Разработка физической модели данных
В соответствии с логической моделью данных, разработана программа на языке VFP с использованием синтаксиса SQL по созданию базы данных, включающая создание всех необходимых таблиц (Приложение А).
Схема данных приведена на рисунке 2.2.
Рисунок 2.2 – Схема данных
2.5 Разработка программы автогенерации
Для полноценного тестирования и отладки работы разрабатываемого приложения, необходим значительный объем данных в БД. Количество и качество данных должно быть сопоставимо с реальными данными при практической эксплуатации приложения. Для решения этой задачи разработана программа на языке VFP с использованием синтаксиса SQL по генерации тестовых данных (Приложение Б).
Автогенерация данных выполняется с использованием функции, генерирующей случайное число. Для генерации используется набор шаблонных значений, по которым формируются отдельные записи в таблицах. Информация о количестве сгенерированных данных приведена в таблице 2.11.
Таблица 2.11 – Баллы ЕГЭ
№ |
Название таблицы |
Количество записей |
1 |
Факультеты |
4 |
2 |
Специальности |
8 |
3 |
Предприятия |
100 |
4 |
Приняли документы |
20 |
5 |
Предметы |
11 |
6 |
Основания для зачисления |
4 |
7 |
Абитуриенты |
2000 |
8 |
Студенты |
1221 (в случае повторной генерации может отличаться) |
9 |
Баллы ЕГЭ |
14135 (в случае повторной генерации может отличаться) |
3 Разработка программного приложения
3.1 Разработка представлений
Для организации удобного интерфейса пользователя необходимо предоставлять информацию не точно в том виде, в котором эта информация хранится в БД. Необходимо группировать данные из нескольких таблиц, скрывать отдельные поля, отбирать необходимые данные. Visual FoxPro предлагает удобный инструмент для решения такого рода задач – представления (Local View). При разработке представлений может быть использован язык SQL.
Для решения задачи представления информации об абитуриентах с использованием SQL разработано представление vEnrollee (рисунок 3.1).
SELECT e.Id, e.PersonId, e.Name, e.DayDate, e.Picture, e.Address, e.Phone, e.Birth, e.School, e.Money, e.Passport, e.PassportDate, e.Region, e.Attestat, e.Middle, e.SpecialityId, sp.Name AS SpecialityName, sp.FacultyId, f.Name AS FacultyName, e.RegistrarId, r.Name AS RegistrarName, e.Talk, e.Result, e.Contract, e.EnterpriseId, ent.Name AS EnterpriseName, e.ContractId, e.ContractAbout, e.Payment, e.EGE, ege.Score, s.YesID, s.TypeId, t.Name AS TypeName, t.Form, s.Id AS StudentId
FROM Enrollee AS e
LEFT JOIN Student AS s ON s.EnrolleeId = e.Id
LEFT JOIN Types AS t ON t.Id = s.TypeId
LEFT JOIN
( SELECT eg.EnrolleeId AS EnrolleeId, SUM(eg.Score) AS Score FROM EnrolleeEGE AS eg GROUP BY eg.EnrolleeId) AS ege ON ege.EnrolleeId = e.Id
LEFT JOIN Speciality AS sp ON sp.Id = e.SpecialityId
LEFT JOIN Faculty AS f ON f.Id = sp.FacultyId
LEFT JOIN Registrar AS r ON r.Id = e.RegistrarId
LEFT JOIN Enterprise AS ent ON ent.Id = e.EnterpriseId
Рисунок 3.1 – Представление vEnrollee
Для решения задачи представления информации о сдаче абитуриентами ЕГЭ с использованием SQL разработано представление vEnrolleeEGE (рисунок 3.2).
select l.Id , l.Name , e.Id as EnrolleeEGEId , e.Score from Lesson as l left join EnrolleeEGE as e on e.LessonId = l.Id and e.EnrolleeId = vEnrollee.Id
Рисунок 3.2 – Представление vEnrolleeEGE
Для решения задачи представления информации о специальностях с использованием SQL разработано представление vSpeciality (рисунок 3.3).
SELECT s.id, s.facultyid, s.name FROM Speciality AS s WHERE s.FacultyId = Faculty.Id
Рисунок 3.3 – Представление vSpeciality
