Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД_Теория(17 ответ).doc
Скачиваний:
10
Добавлен:
21.09.2019
Размер:
509.95 Кб
Скачать

Вопрос №9

  1. Нормализация баз данных. Нормальные формы: 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. Потенциальная противоречивость. Если при вводе ошиблись с количеством часов для Английского языка, то для исправления нужно найти все строки, где есть сведения об этой дисциплине, и во всех этих строках сделать изменения. Более того, где то можно записать Мат.анализ вместо Математического анализа и это будет уже другой предмет.

Решение этих проблем состоит в разделении данных на таблицы.

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