Тема 1.2. Проектирование. 1. Нормализация БД (1)

Содержание

Слайд 2

Основная цель проектирования БД – это сокращение избыточности хранимых данных, а,

Основная цель проектирования БД

– это сокращение избыточности хранимых данных, а, следовательно,

экономия объема используемой памяти, уменьшение затрат на многократные операции обновления избыточных копий и устранение возможности возникновения противоречий из-за хранения в разных местах сведений об одном и том же объекте.
Слайд 3

Слайд 4

Пример неизбыточного дублирования данных

Пример неизбыточного дублирования данных

Слайд 5

Пример избыточного дублирования данных Пример неудачного отношения Возможный способ декомпозиции

Пример избыточного дублирования данных

Пример неудачного отношения

Возможный способ декомпозиции

Слайд 6

Нормализация – это разбиение таблицы на две или более, обладающих лучшими

Нормализация – это разбиение таблицы на две или более, обладающих лучшими свойствами

при включении, изменении и удалении данных. Цель нормализации сводится к получению такого проекта базы данных, в котором каждый факт появляется лишь в одном месте, т.е. исключена избыточность информации.
Слайд 7

Нормализованная таблица в реляционной БД удовлетворяет условию, в соответствии с которым

Нормализованная таблица в реляционной БД удовлетворяет условию, в соответствии с которым

в каждой ячейке таблицы всегда находится единственное атомарное значение, и никогда не может быть множества таких значений.
Слайд 8

Нормальные формы: - первая нормальная форма (1NF); - вторая нормальная форма

Нормальные формы:

-    первая нормальная форма (1NF);
-    вторая нормальная форма (2NF);
-    третья

нормальная форма (3NF);
-    нормальная форма Бойса-Кодда (BCNF);
-    четвертая нормальная форма (4NF);
-    пятая  нормальная форма, или нормальная форма проекции-соединения (5NF).
Слайд 9

Основные свойства нормальных форм Каждая следующая нормальная форма в некотором смысле

Основные свойства нормальных форм

Каждая следующая нормальная форма в некотором смысле лучше

предыдущей нормальной формы;
При переходе к следующей нормальной форме свойства предыдущих нормальных форм сохраняются.
Слайд 10

Функциональная зависимость Поле В таблицы функционально зависит от поля А той

Функциональная зависимость

Поле В таблицы функционально зависит от поля А той же

таблицы в том и только в том случае, когда в любой заданный момент времени для каждого из различных значений поля А обязательно существует только одно из различных значений поля В.
Допускается, что поля А и В могут быть составными.
Слайд 11

Таблица Поставщики поле Страна функционально зависит от составного ключа (Поставщик, Город).

Таблица Поставщики

поле Страна функционально зависит от составного ключа (Поставщик, Город).
Однако

эта зависимость не является функционально полной, так как Страна функционально зависит и от части ключа – поля Город.
Слайд 12

Полная функциональная зависимость Поле В находится в полной функциональной зависимости от

Полная функциональная зависимость

Поле В находится в полной функциональной зависимости от составного

поля А, если оно функционально зависит от А и не зависит функционально от любого подмножества поля А.
Слайд 13

1НФ Таблица находится в первой нормальной форме (1НФ) тогда и только

1НФ

Таблица находится в первой нормальной форме (1НФ) тогда и только тогда, когда
ни

одна из ее строк не содержит в любом своем поле более одного значения
ни одно из ее ключевых полей не пусто.
Слайд 14

2НФ Таблица находится во второй нормальной форме (2НФ), если она удовлетворяет

2НФ

Таблица находится во второй нормальной форме (2НФ), если
она удовлетворяет определению 1НФ
-

все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом.
Слайд 15

Пример 2. Таблица УСПЕВАЕМОСТЬ

Пример 2. Таблица УСПЕВАЕМОСТЬ

Слайд 16

Первичным ключом является совокупность полей № ЗАЧЕТНОЙ КНИЖКИ, КУРС.

Первичным ключом является совокупность полей № ЗАЧЕТНОЙ КНИЖКИ, КУРС.

Слайд 17

Таблица успеваемость не находится в 2НФ. Приведение данной таблицы к 2НФ

Таблица успеваемость не находится в 2НФ.

Приведение данной таблицы к 2НФ заключается

в ее разбиении (декомпозиции) на две таблицы, удовлетворяющие соответствующим требованиям нормализации.
Слайд 18

СТУДЕНТЫ УСПЕВАЕМОСТЬ СТУДЕНТОВ

СТУДЕНТЫ УСПЕВАЕМОСТЬ СТУДЕНТОВ

Слайд 19

Добавим в таблицу СТУДЕНТЫ два поля: № ГРУППЫ и ФИО КУРАТОРА:

Добавим в таблицу СТУДЕНТЫ два поля: № ГРУППЫ и ФИО КУРАТОРА:

Первичным

ключом таблицы СТУДЕНТЫ является поле № ЗАЧЕТНОЙ КНИЖКИ. Таблица находится в 2НФ, поскольку отсутствуют зависимости полей от части ключа.
Слайд 20

3НФ Таблица находится в третьей нормальной форме (3НФ), если: она удовлетворяет

3НФ

Таблица находится в третьей нормальной форме (3НФ), если:
она удовлетворяет определению 2НФ
ни одно

из ее неключевых полей не зависит функционально от любого другого неключевого поля.
Слайд 21

СПРАВОЧНИК СТУДЕНТОВ ГРУППЫ УСПЕВАЕМОСТЬ СТУДЕНТОВ

СПРАВОЧНИК СТУДЕНТОВ ГРУППЫ УСПЕВАЕМОСТЬ СТУДЕНТОВ

Слайд 22

НФБК Таблица находится в нормальной форме Бойса-Кодда (НФБК), если и только

НФБК

Таблица находится в нормальной форме Бойса-Кодда (НФБК), если и только любая функциональная зависимость

между его полями сводится к полной функциональной зависимости от возможного ключа.
Слайд 23

Пример. БД Питание и ее приведение к 3НФ

Пример. БД Питание и ее приведение к 3НФ

Слайд 24

1НФ

1НФ

Слайд 25

В таблице есть множество неключевых полей (Вид, Рецепт, Порций, Калорийность и

В таблице есть множество неключевых полей (Вид, Рецепт, Порций, Калорийность и т.д.),

зависящих лишь от той или иной части первичного ключа. Так поля Вид и Рецепт зависят только от поля Блюдо, Калорийность – от поля Продукт и т.п. Следовательно, эти поля не связаны с первичным ключом полной функциональной зависимостью.
Слайд 26

2НФ Для улучшения проекта, нужно определить первичные ключи таблиц и выявить,

2НФ

Для улучшения проекта, нужно определить первичные ключи таблиц и выявить, нет

ли в таблицах полей, зависящих лишь от части этих ключей. Такое поле есть только в одной таблице. Это поле Страна в таблице Поставщики. Выделяя его вместе с ключем Город в таблицу Страны, получим проект:
Слайд 27

Слайд 28

Задание 1 Дано: Сотрудники (№ табельный, Фамилия Имя Отчество, Код должности,

Задание 1

Дано: Сотрудники (№ табельный, Фамилия Имя Отчество, Код должности, Телефоны,

Дата приема или увольнения);
Привести к 1НФ.
Ошибки:
1) атрибут «Фамилия Имя Отчество» является составным, т. е. составленным из разнородных
элементов;
2) атрибут «Телефоны» является многозначным, т. е. его значением является множество значений;
3) атрибут «Дата приема или увольнения» не имеет однозначной семантики, т. е. в последнем случае не понятно, какая именно дата внесена.
Слайд 29

Задание 2 Дано: Аудитории (№ корпуса, № аудитории, Площадь аудитории, №

Задание 2

Дано: Аудитории (№ корпуса, № аудитории, Площадь аудитории, № табельный

коменданта корпуса);
Ключевые поля: № корпуса, № аудитории
Привести к 2НФ
Ошибка: Атрибут «№ табельный коменданта корпуса» функционально зависит не от составного ключа «№ корпуса, № аудитории», а от части этого ключа, т. е. от атрибута «№ корпуса».
Слайд 30

Задание 3 Дано: Сотрудники (№ табельный, Фамилия, Имя, Отчество, Код должности,

Задание 3

Дано: Сотрудники (№ табельный, Фамилия, Имя, Отчество, Код должности, Оклад);
Привести

к 3НФ
Ошибка: неключевой атрибут «Оклад» полностью функционально зависит от атрибута «Код должности», хотя этот атрибут и не является ключевым.