- •Базы данных Вопросы и ответы к экзамену Дисциплина «Базы данных».
- •Вопрос №1
- •Отличия концептуальной, логической и физической моделей данных.
- •Вопрос №2 Определение, назначение субд.
- •Требования, предъявляемые к субд.
- •Типы субд Сравнительная характеристика различных субд.
- •Вопрос №3
- •Типы связей.
- •Вопрос №4
- •Вопрос №5
- •Вопрос №6
- •Вопрос №7
- •I этап. Постановка задачи.
- •II этап. Анализ объекта.
- •III этап. Синтез модели.
- •IV этап. Выбор способов представления информации и программного инструментария.
- •V этап. Синтез компьютерной модели объекта.
- •VI этап. Работа с созданной базой данных.
- •Вопрос №8
- •Нормализация отношений
- •Вопрос №9
- •Нормализация баз данных. Нормальные формы: 1нф,2нф,3нф
- •Вопрос №10
- •Вопрос №11
- •Методы создания и составные части программного файла. Назначение операторов и команд для написания программ
- •Вопрос №12
- •Вопрос №13
- •Вопрос №14 Понятие, виды и назначение триггеров.
- •Вопрос №15 Создание триггера типа update.
- •Вопрос №16 Понятие запроса. Команда выбор
- •Описание select
- •Вопрос №17
- •Дополнительно: Способы обеспечения непротиворечивости и целостности данных.
Вопрос №9
Нормализация баз данных. Нормальные формы: 1нф,2нф,3нф
Нормализация отношений – это формальный аппарат ограничений на формирование таблиц, который позволяет устранить дублирование, обеспечивает непротиворечивость хранимых в базе данных, уменьшает трудозатраты на ведение(ввод, корректировку) базы данных. Коддом выделены три нормальные формы отношений и предложен механизм, позволяющий любое отношение преобразовать к третьей (самой совершенной) нормальной форме.
Пример
В информационном объекте Студент ключом является атрибут Номер(№личного дела), а описательные реквизиты(поля) все остальные. Если отсутствует реквизит Номер, то для однозначного определения характеристик конкретного студента необходимо использовать составной ключ Фамилия + Имя + Отчество
Номер |
Фамилия |
Имя |
Отчество |
Дата |
Группа |
1649 |
Иванов |
Иван |
Иванович |
01.03.07 |
111 |
Первая нормальная форма
Отношение называется приведенным к 1НФ, если все его атрибуты простые( далее не делимы. Преобразование к 1НФ может привести к увеличению количества реквизитов (полей) отношения и изменению ключа.
Например, отношение Студент = (Номер, Фамилия, Имя, Отчество, Дата, Группа) находится в первой нормальной форме.
ВТОРАЯ нормальная форма
Отношение будет находиться во второй нормальной форме, если оно находится в первой нормальной форме, и каждый неключевой атрибут функционально зависит от составного ключа.
Пример.
Отношение Студент = (Номер, Фамилия, Имя, Отчество, Дата, Группа) находится в первой и во второй нормальной форме одновременно, т.к. реквизиты однозначно определены и функционально зависят от ключа Номер.
Отношение Успеваемость = (Номер, Фамилия, Имя, Отчество, Дисциплина, Оценка) находится в первой нормальной форме и имеет составной ключ Номер + Дисциплина.
Это отношение не находится во второй нормальной форме, так как атрибуты Фамилия, Имя, Отчество не находятся в полной функциональной зависимости с составным ключом отношения.
Третья нормальная форма
Отношение будет находиться в третьей нормальной форме, если оно находится во второй нормальной форме, и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Пример.
Отношение Студент = (Номер, Фамилия, Имя, Отчество, Дата, Группа, Староста)
Фамилия Старосты определяется только номером группы, одна и та же фамилия старосты будет многократно повторяться в разных строчках записей с разными студентами. При назначении нового старосты нужно во всех записях корректировать фамилию старосты. Это неоправданный расход памяти и времени.
Для устранения транзитивной зависимости описательных реквизитов необходимо провести «расщепление» этого отношения на два.
Студент = (Номер, Фамилия, Имя, Отчество, Дата, Группа) и
Группа = (Группа, Староста) , ключ здесь Группа.
Вопрос №10
Проектирование реляционной БД (на примере БД «Сессия»)
Рассмотрим задачу проектирования БД по учету успеваемости студентов факультета. Базу данных необходимо привести к третьей нормальной форме.
БД должна содержать следующие поля:
ФИО, Семестр, Предмет, Преподаватель по предмету, количество часов по предмету, зачет/экзамен, оценка. В созданную БД должно быть введено не менее 10 записей.
Исходные данные для создания БД «Сессия»
0-незачет
1-зачет
ФИО студента |
Семестр |
Дисциплина |
Форма отчетности |
Оценка |
Кол-во часов |
ФИО преподавателя |
Иванов И.И |
1
|
Английский язык |
зачет |
1 |
60 |
Цветкова |
Мат.анализ |
зачет |
1 |
28 |
Рыбин |
||
Мат.анализ |
Экзамен |
5 |
32 |
Раков |
||
Программирование |
зачет |
1 |
36 |
Незабудкина |
||
Программирование |
Экзамен |
5 |
32 |
Зайчиков |
||
Линейная алгебра |
Зачет |
1 |
24 |
Волков |
||
Линейная алгебра |
Экзамен |
4 |
28 |
Волков |
||
История Отечества |
Экзамен |
5 |
24 |
Москвин |
||
Петрова ПП |
1
|
Английский язык |
зачет |
1 |
60 |
Цветкова |
Мат.анализ |
зачет |
1 |
28 |
Рыбин |
||
Мат.анализ |
Экзамен |
3 |
32 |
Раков |
||
Программирование |
зачет |
1 |
36 |
Незабудкина |
||
Программирование |
Экзамен |
4 |
32 |
Зайчиков |
||
Линейная алгебра |
Зачет |
1 |
24 |
Волков |
||
Линейная алгебра |
Экзамен |
4 |
28 |
Волков |
||
История Отечества |
Экзамен |
5 |
24 |
Москвин |
||
Сидоров С. |
3 |
Английский язык |
зачет |
1 |
60 |
Цветкова |
Мат.анализ |
зачет |
1 |
20 |
Карпов |
||
Мат.анализ |
Экзамен |
5 |
28 |
Раков |
||
Алгоритмы |
Экзамен |
5 |
32 |
Зайчиков |
||
Теория вероятностей |
Экзамен |
4 |
32 |
Соболев |
||
Операционные системы |
Зачет |
1 |
36 |
Незабудкина |
||
Операционные системы |
Экзамен |
4 |
32 |
Незабудкина |
||
Экономика |
зачет |
1 |
24 |
Лобов |
Этот вариант не является атомарным, т,к, столбцы 3-7 являются множественными. Простой вставкой ФИО и семестров можно реконструировать таблицу. Такое отношение можно считать 1НФ, но тут есть две проблемы:
Избыточность данных. Значения столбцов таблицы многократно повторяются. Повторяются также и некоторые наборы значений столбцов, например, данные о дисциплине.
Потенциальная противоречивость. Если при вводе ошиблись с количеством часов для Английского языка, то для исправления нужно найти все строки, где есть сведения об этой дисциплине, и во всех этих строках сделать изменения. Более того, где то можно записать Мат.анализ вместо Математического анализа и это будет уже другой предмет.
Решение этих проблем состоит в разделении данных на таблицы.
1НФ –это любое поле атомарное.
2НФ – это все атрибуты полностью зависят от ключа, а не от части его.
3НФ –это ни один из ее неключевых атрибутов не связан функциональной зависимостью с любым другим неключевым атрибутом.
Таблица 1
БД «Учебный план»
№ |
Дисциплина |
Семестр |
Кол-во часов |
Форма Отчетн. |
Препо- даватель |
1 |
Английский язык |
1 |
60 |
зачет |
Цветкова |
2 |
История Отечества |
1 |
24 |
экзамен |
Москвин |
3 |
Линейная алгебра |
1 |
24 |
зачет |
Волков |
4 |
Линейная алгебра |
1 |
28 |
экзамен |
Волков |
5 |
Мат.анализ |
1 |
28 |
зачет |
Рыбин |
6 |
Мат.анализ |
1 |
32 |
экзамен |
Раков |
7 |
Программирование |
1 |
36 |
зачет |
Незабудкина |
8 |
Программирование |
1 |
32 |
экзамен |
Зайчиков |
9 |
Алгоритмы |
3 |
32 |
экзамен |
Зайчиков |
10 |
Английский язык |
3 |
60 |
зачет |
Цветкова |
11 |
Мат.анализ |
3 |
20 |
зачет |
Карпов |
12 |
Мат.анализ |
3 |
28 |
экзамен |
Раков |
13 |
Теория вероятностей |
3 |
32 |
экзамен |
Соболев |
14 |
Операционные системы |
3 |
36 |
зачет |
Незабудкина |
15 |
Операционные системы |
3 |
32 |
экзамен |
Незабудкина |
16 |
Экономика |
3 |
24 |
зачет |
Лобов |
«Результаты сессии»
Студент |
Учебн. план |
Оценка
|
Иванов |
1 |
1 |
Иванов |
2 |
5 |
Иванов |
3 |
1 |
Иванов |
4 |
4 |
Иванов |
5 |
1 |
Иванов |
6 |
5 |
Иванов |
7 |
1 |
Иванов |
8 |
5 |
Петрова |
1 |
1 |
Петрова |
2 |
5 |
Петрова |
3 |
1 |
Петрова |
4 |
4 |
Петрова |
5 |
1 |
Петрова |
6 |
3 |
Петрова |
7 |
1 |
Петрова |
8 |
4 |
Сидоров |
1 |
1 |
Сидоров |
5 |
1 |
Сидоров |
6 |
5 |
Сидоров |
|
|
Сидоров |
|
|
Студенты Преподаватели Дисциплины
№ |
Дисциплина
|
1 2 3 4 5 6 7 8 9 |
Алгоритмы Английский язык История Отечества Линейная алгебра Мат.анализ Операционные системы Программирование Теория вероятностей Экономика |
№ |
ФИО преподават |
|||
1 |
Волков |
|||
2 |
Зайчиков |
|||
3 |
Карпов |
|||
4 |
Лобов |
|||
5 |
Москвин |
|||
6 |
Незабудкина |
|||
7 |
Раков |
|||
8 |
Рыбин |
|||
9 |
Соболев |
|||
10 |
Цветкова |
|||
|
|
|
||
|
|
|||
|
|
|||
|
|
№ |
ФИО студента |
1 |
Иванов |
2 |
Петров |
3 |
Сидоров |
Теперь можно включать строки в таблицы «Студенты» «Преподаватели», «Дисциплины», что значительно расширяет возможности БД. А при изменении названия Мат.анализ на Математический анализ исправляется единственное значение в табл. «Дисциплины».
Учебный план Результаты сессии
№ |
Дисциплина |
Семестр |
Кол-во часов |
Форма Отчетн. |
Препо- даватель |
|
Студент |
Учебн. план |
Оценка
|
1 |
2 |
1 |
60 |
зачет |
10 |
1 |
1 |
1 |
|
2 |
3 |
1 |
24 |
экзамен |
5 |
1 |
2 |
5 |
|
3 |
4 |
1 |
24 |
зачет |
1 |
1 |
3 |
1 |
|
4 |
4 |
1 |
28 |
экзамен |
1 |
1 |
4 |
4 |
|
5 |
5 |
1 |
28 |
зачет |
8 |
1 |
5 |
1 |
|
6 |
5 |
1 |
32 |
экзамен |
7 |
1 |
6 |
5 |
|
7 |
7 |
1 |
36 |
зачет |
6 |
1 |
7 |
1 |
|
8 |
7 |
1 |
32 |
экзамен |
2 |
1 |
8 |
5 |
|
9 |
1 |
3 |
32 |
экзамен |
2 |
2 |
1 |
1 |
|
10 |
2 |
3 |
60 |
зачет |
10 |
2 |
2 |
5 |
|
11 |
5 |
3 |
20 |
зачет |
3 |
2 |
3 |
1 |
|
12 |
5 |
3 |
28 |
экзамен |
7 |
2 |
4 |
4 |
|
13 |
8 |
3 |
32 |
экзамен |
9 |
2 |
5 |
1 |
|
14 |
6 |
3 |
36 |
зачет |
6 |
2 |
6 |
3 |
|
15 |
6 |
3 |
32 |
экзамен |
6 |
2 |
7 |
1 |
|
16 |
9 |
3 |
24 |
зачет |
4 |
2 |
8 |
4 |
Нужно помнить, что в таблице может быть несколько составных ключей. Ключ в таблице «Учебный план» Семестр, Дисциплина и Форма отчетности.
Следующий этап проектирования – определение типов данных (доменов).
Для идентификации отдельного студента нужно ввести дополнительное (ключевое ) свойство – идентификационный номер студента.
Таблица «Студенты»
Имя поля |
Тип данных |
Длина |
ID-студент |
Целое число |
3 |
Фамилия |
Символьная строка |
30 |
Имя |
Символьная строка |
15 |
Отчество |
Символьная строка |
20 |
Номер группы |
Целое число |
4 |
Телефон |
Символьная строка |
8 |
|
|
|
Таблица «Дисциплина»
Имя поля |
Тип данных |
Длина |
ID-Дисциплина |
Целое число |
2 |
Наименование |
Символьная строка |
20 |
Таблица «Преподаватели»
Имя поля |
Тип данных |
Длина |
ID-Преподаватель |
Целое число |
2 |
Фамилия |
Символьная строка |
30 |
Имя |
Символьная строка |
15 |
Отчество |
Символьная строка |
20 |
Должность |
Символьная строка |
20 |
Телефон |
Символьная строка |
8 |
Таблица «Учебный план»
Имя поля |
Тип данных |
Длина |
ID-План |
Целое число |
2 |
ID-Дисциплина |
Целое число |
2 |
Семестр |
Целое число |
1 |
Кол-во часов |
Целое число |
3 |
Форма отчетности |
Символьная строка |
10 |
ID-Преподаватель |
Целое число |
2 |
Таблица «Сводная ведомость»
Имя поля |
Тип данных |
Длина |
ID-студент |
Целое число |
3 |
ID-План |
Целое число |
2 |
Оценка |
Целое число |
1 |