Таким образом, после рассмотрения приведенных выше моделей данных для разработанной в пункте 3 схемы «объект-отношение» была выбрана реляционная модель, которая проста и понятна для пользователя и отвечает требованиям изучаемого курса.
4 Программная реализация СУБД
4.1 Описание таблиц
Таблица «Студент» – справочник студентов.
Код студента – код студента, тип счетчик, первичный ключ, содержит уникальное значения без повторений.
ФИО – фамилия, имя и отчество студента, тип текстовый, размер 50 символов, поле обязательное, индексированное, допускаются совпадения.
№ зачетки – содержит номер зачетки, тип текстовый, размер 10 символов, содержит маску ввода: 00\/000, условие на значение:>0, если вводится неправильное значение, выводится сообщение об ошибке ”Некорректный ввод”; поле обязательное, индексированное, совпадения не допускаются.
Дата рождения – содержит дату рождения, тип дата/время, имеет краткий формат даты, маска ввода 00.00.0000;0;_, условие на вводимое значение <Now()-365*16 (т.е. студенту должно быть не меньше 16 лет), если вводится неправильное значение, выводится сообщение об ошибке, обязательное поле, индексированное, допускаются повторения.
Домашний адрес – содержит адрес проживания студента, тип текстовый, размер 50 символов, поле обязательное, индексированное, допускаются совпадения.
Контактный телефон - содержит номер телефона, тип текстовый, размер 20 символов, содержит маску ввода: 0\-000\-000\-00\-00;;_ . Поле необязательное, индексированное, не допускаются совпадения.
Пол - содержит пол студента, тип текстовый, размер-10 символов, обязательное поле, индексированное поле, совпадения допускаются, поле со списком, тип источника строк- список значений, источник строк – мужской; женский.
Форма обучения- содержит информацию о форме обучения студента, тип текстовый, размер- 10 символов, обязательное поле, индексированное поле, совпадения допускается, поле со списком, тип источника строк- список значений, источник строк- очная; заочная.
ФИО матери - фамилия, имя, отчество матери студента, тип текстовый, размер 50 символов, поле обязательное, индексированное, допускаются совпадения.
ФИО отца - фамилия, имя, отчество отца студента, тип текстовый, размер 50 символов, поле обязательное, индексированное, допускаются совпадения.
Контактная информация отца - содержит место работы, должность и контактный телефон, тип текстовый, размер 100 символов, обязательное поле, индексированное поле, совпадения допускаются.
Контактная информация матери - содержит место работы, должность и контактный телефон, тип текстовый, размер 100 символов, обязательное поле, индексированное поле, совпадения допускаются.
Группа- код группы, тип числовой, размер поля - длинное целое, обязательное поле, поле со списком, тип источника - таблица или запрос: SELECT Группа.[Код группы], Группа.[Название группы] FROM Группа ORDER BY [Название группы];.
Таблица «Группа» содержит информацию о группах, в которых учатся студенты.
Код группы - тип счетчик, первичный ключ, содержит уникальные значения без повторений.
Название группы - тип текстовый, размер-10 символов, обязательное и индексированное поле, совпадения не допускаются.
Год набора - тип дата/время, размер 20 символов, маска ввода- 00.00.0000;0;_, обязательное и индексированное поле, совпадения допускаются, условие назначения:>Date()-(5*365). Если вводится неправильное значение, то выводится сообщение об ошибке.
Буква - тип текстовый, размер 5 символов, обязательное и индексированное поле, совпадения допускаются. Если вводится неправильное значение, то выводится сообщение об ошибке. Поле со списком, тип источника строк - список значений, источник строк – а; б; в; г; -;.
Специальность- код специальности, тип числовой, обязательное поле, размер поля - длинное целое. Тип источника строк -таблица или запрос, источник строк-SELECT Специальность.[Код специальности], Специальность.[Краткое название] FROM Специальность ORDER BY [Краткое название].
Таблица «Специальность» справочник специальностей факультетов.
Код специальности - тип счетчик, первичный ключ, содержит уникальные значения без повторений.
Полное название - тип текстовый, размер 50 символов, обязательное и индексированное поле, совпадения не допускаются.
Краткое название - тип текстовый, размер 10 символов, необязательное поле, без повторений.
Шифр - тип текстовый, размер 20 символов, содержит маску ввода: 0000000.0.00;. Обязательное и индексированное поле, без повторений.
Факультет - код факультета, тип числовой, обязательное поле, размер поля - длинное целое. Тип источника строк - таблица или запрос, источник строк-SELECT Факультет.[Код факультета], Факультет.[Краткое название] FROM Факультет ORDER BY [Краткое название];
Таблица «Факультет» содержит информацию о всех факультетах ВУЗа.
Код факультет - тип счетчик, первичный ключ, содержит уникальные значения без повторений.
Полное название - тип текстовый, размер 50 символов, обязательное и индексированное поле, совпадения не допускаются.
Краткое название - тип текстовый, размер 10 символов, необязательное поле, без повторений.
ФИО декана - тип текстовый, размер 50 символов, поле обязательное, индексированное, не допускаются совпадения.
№ телефона деканата - тип текстовый, размер 20 символов, маска ввода:000\-00\-00; поле обязательное, индексированное, совпадения не допускаются.
Таблица «Комната» содержит информацию о комнатах общежития.
Код комнаты - тип счетчик, первичный ключ, содержит уникальные значения без повторений.
Количество мест - тип числовой, размер 5 символов, обязательное и индексированное поле, совпадения допускаются. Значение по умолчанию: 0, условие на значение: >0, если вводится неправильное значение, то выдается ошибка.
Тип - тип текстовый, размер 10 символов, обязательное и индексированное поле, совпадения допускаются. Поле со списком, тип источника строк - список значений, источник строк – мужская; женская; семейная.
№ комнаты - тип числовой, содержит маску ввода: 0”.”000, обязательное поле, индексированное, совпадения допускаются. Значение по умолчанию: 0, условие на значение: >0, если вводится неправильное значение, то выдается ошибка.
Общежитие- код общежитие, тип числовой, обязательное поле, размер поля - длинное целое. Тип источника строк - таблица или запрос, источник строк:SELECT Общежитие.[Код общежития] FROM Общежитие ORDER BY [Код общежития];
Таблица «Общежитие» содержит информацию о общежитиях, которые принадлежат ВУЗу.
Код Общежитие - тип счетчик, первичный ключ, содержит уникальные значения без повторений.
Адрес – тип текстовый, размер 50 символов, поле обязательное, индексированное, не допускаются совпадения.
Телефон - тип текстовый, размер 20 символов, маска ввода:000\-00\-00; поле обязательное, индексированное, совпадения не допускаются.
ФИО Коменданта- тип текстовый, размер 50 символов, поле обязательное, индексированное, не допускаются совпадения.
Таблица «Проживает» - дополнительная таблица, созданная для исключения связи «многие-ко-многим». Таблица содержит информацию о дате заселения (выселения) студентов в (из) общежитие (ия).
Код проживает - тип счетчик, первичный ключ, содержит уникальные значения без повторений.
Студент - код студента, тип числовой, обязательное поле, размер поля- длинное целое. Подстановка из таблицы «Студент», отображается поле «Студент» таблицы «Студент».
Комната - код комнаты, тип числовой, обязательное поле, размер поля- длинное целое. Тип источника строк - таблица или запрос, источник строк:SELECT Комната.[Код комнаты], Комната.[№ комнаты] FROM Комната ORDER BY [№ комнаты];
Дата заселения - тип дата/время, размер 20 символов, маска ввода- 00.00.0000;0;_, обязательное и индексированное поле, совпадения допускаются.
Дата заселения - тип дата/время, размер 20 символов, маска ввода- 00.00.0000;0;_, обязательное и индексированное поле, совпадения допускаются.
4.2 Описание реализованных запросов к БД
В данном КП были реализованы следующие запросы к БД:
Запрос1 является запросом на выборку.
Осуществляется поиск повторений для таблицы «Студент».
Вид в режиме SQL:
SELECT Студент.Группа, Студент.ФИО
FROM Студент
WHERE (((Студент.Группа) In (SELECT [Группа] FROM [Студент] AsTmpGROUPBY [Группа] HAVINGCount(*)>1 )))
ORDER BY Студент.Группа;
Результат выполнения запроса 1 представлен на рисунке 4.2.1
Рис. 4.2.1- Результат выполнения запроса 1
Запрос 2 является запросом на создание таблицы.
Создается новая таблица, куда вносится новая информация.
Вид в режиме SQL:
SELECT Студент.ФИО, Общежитие.[Код общежития] INTO New
FROM Студент INNER JOIN (Общежитие INNER JOIN (Комната INNER JOIN Проживает ON (Комната.[Код комнаты] = Проживает.Комната) AND (Комната.[Код комнаты] = Проживает.Комната)) ON Общежитие.[Код общежития] = Комната.Общежитие) ON Студент.[Код студента] = Проживает.Студент
WHERE (((Общежитие.[Код общежития])=2));
Результат выполнения запроса 2 представлен на рисунке 4.2.2
Рис. 4.2.2- Результат выполнения запроса 2
Запрос 3 является запросом на добавление.
Выполняется заполнение архива.
Вид в режиме SQL:
INSERT INTO Архив ( ФИО, №Зачетки, [Дата рождения], [Домашний адресс], [Контактный телефон], Пол, [Форма обучения], [ФИО матери], [ФИО отца], [Контактная информация отца], [Контактная информация матери], Группа )
SELECT Студент.ФИО, Студент.№Зачетки, Студент.[Дата рождения], Студент.[Домашний адрес], Студент.[Контактный телефон], Студент.Пол, Студент.[Форма обучения], Студент.[ФИО матери], Студент.[ФИО отца], Студент.[Контактная информация отца], Студент.[Контактная информация матери], Студент.Группа