Главная страница
Навигация по странице:

  • Вторая нормальная форма

  • Третья нормальная форма

  • Нормальная форма Бойса-Кодда (НФБК) (частная форма третьей нормальной формы)

  • Бронирование Четвертая нормальная форма

  • Пятая нормальная форма

  • Нормализация таблиц. Лекция 15. Вспомним прошлый урок! Нормализация бд. 1НФ, 2НФ, 3НФ


    Скачать 80.78 Kb.
    НазваниеВспомним прошлый урок! Нормализация бд. 1НФ, 2НФ, 3НФ
    АнкорНормализация таблиц
    Дата16.11.2022
    Размер80.78 Kb.
    Формат файлаpptx
    Имя файлаЛекция 15.pptx
    ТипУрок
    #791797

    Вспомним прошлый урок! Нормализация БД. 1НФ, 2НФ, 3НФ

    • Что такое нормализация БД?
    • Первая нормальная форма
    • Отношение находится в 1НФ, если все его атрибуты являются простыми, все используемые домены должны содержать только скалярные значения. Не должно быть повторений строк в таблице.

    Например, есть таблица «Автомобили»:


    Фирма

    Модели

    BMW

    M5, X5M, M1

    Nissan

    GT-R

    Нарушение нормализации 1НФ происходит в моделях BMW, т.к. в одной ячейке содержится список из 3 элементов: M5, X5M, M1, т.е. он не является атомарным. Преобразуем таблицу к 1НФ:

    Фирма

    Модели

    BMW

    M5

    BMW

    X5M

    BMW

    M1

    Nissan

    GT-R
    • Вторая нормальная форма
    • Отношение находится во 2НФ, если оно находится в 1НФ и каждый не ключевой атрибут неприводимо зависит от Первичного Ключа(ПК). Неприводимость означает, что в составе потенциального ключа отсутствует меньшее подмножество атрибутов, от которого можно также вывести данную функциональную зависимость.

    Например, дана таблица:


    Модель

    Фирма

    Цена

    Скидка

    M5

    BMW

    5500000

    5%

    X5M

    BMW

    6000000

    5%

    M1

    BMW

    2500000

    5%

    GT-R

    Nissan

    5000000

    10%

    апример, дана таблица:
    • Таблица находится в первой нормальной форме, но не во второй. Цена машины зависит от модели и фирмы. Скидка зависят от фирмы, то есть зависимость от первичного ключа неполная. Исправляется это путем декомпозиции на два отношения, в которых не ключевые атрибуты зависят от ПК.

    Модель

    Фирма

    Цена

    M5

    BMW

    5500000

    X5M

    BMW

    6000000

    M1

    BMW

    2500000

    GT-R

    Nissan

    5000000

    Фирма

    Скидка

    BMW

    5%

    Nissan

    10%

    Третья нормальная форма

    • Третья нормальная форма
    • Отношение находится в 3НФ, когда находится во 2НФ и каждый не ключевой атрибут нетранзитивно зависит от первичного ключа. Проще говоря, второе правило требует выносить все не ключевые поля, содержимое которых может относиться к нескольким записям таблицы в отдельные таблицы.

    Модель

    Магазин

    Телефон

    BMW

    Риал-авто

    87-33-98

    Audi

    Риал-авто

    87-33-98

    Nissan

    Некст-Авто

    94-54-12

    Рассмотрим таблицу:

    Таблица находится во 2НФ, но не в 3НФ. В отношении атрибут «Модель» является первичным ключом. Личных телефонов у автомобилей нет, и телефон зависит исключительно от магазина. Таким образом, в отношении существуют следующие функциональные зависимости: Модель → Магазин, Магазин → Телефон, Модель → Телефон. Зависимость Модель → Телефон является транзитивной, следовательно, отношение не находится в 3НФ.

    В результате разделения исходного отношения получаются два отношения, находящиеся в 3НФ:


    Магазин

    Телефон

    Риал-авто

    87-33-98

    Некст-Авто

    94-54-12

    Модель

    Магазин

    BMW

    Риал-авто

    Audi

    Риал-авто

    Nissan

    Некст-Авто
    • Нормализация БД. Нормальная форма Бойса-Кодда 4НФ, 5НФ
    • Нормальная форма Бойса-Кодда (НФБК) (частная форма третьей нормальной формы)
    • Определение 3НФ не совсем подходит для следующих отношений: 1) более потенциальных ключа; 2) два и более потенциальных ключа являютотношение имеет два или ся составными; 3) они пересекаются, т.е. имеют хотя бы один общий атрибут. Для отношений, имеющих один потенциальный ключ (первичный), НФБК является 3НФ.
    • Отношение находится в НФБК, когда каждая нетривиальная и неприводимая слева функциональная зависимость обладает потенциальным ключом в качестве детерминанта. Предположим, рассматривается отношение, представляющее данные о бронировании стоянки на день:

    Номер стоянки

    Время начала

    Время окончания

    Тариф

    1

    09:30

    10:30

    Бережливый

    1

    11:00

    12:00

    Бережливый

    1

    14:00

    15:30

    Стандарт

    2

    10:00

    12:00

    Премиум-В

    2

    12:00

    14:00

    Премиум-В

    2

    15:00

    18:00

    Премиум-А
    • Тариф имеет уникальное название и зависит от выбранной стоянки и наличии льгот, в частности: «Бережливый»: стоянка 1 для льготников «Стандарт»: стоянка 1 для не льготников
    • «Премиум-А»: стоянка 2 для льготников
    • «Премиум-B»: стоянка 2 для не льготников.

    Тарифы


    Тариф

    Номер стоянки

    Имеет льготы

    Бережливый

    1

    Да

    Стандарт

    1

    Нет

    Премиум-А

    2

    Да

    Премиум-В

    2

    Нет

    Тариф

    Время начала

    Время окончания

    Бережливый

    09:30

    10:30

    Бережливый

    11:00

    12:00

    Стандарт

    14:00

    15:30

    Премиум-В

    10:00

    12:00

    Премиум-В

    12:00

    14:00

    Премиум-А

    15:00

    Бронирование
    • Четвертая нормальная форма
    • Отношение находится в 4НФ, если оно находится в НФБК и все нетривиальные многозначные зависимости фактически являются функциональными зависимостями от ее потенциальных ключей. В отношении R (A, B, C) существует многозначная зависимость R.A -> -> R.B в том и только в том случае, если множество значений B, соответствующее паре значений A и C, зависит только от A и не зависит от С.
    • Предположим, что рестораны производят разные виды пиццы, а службы доставки ресторанов работают только в определенных районах города. Составной первичный ключ соответствующей переменной отношения включает три атрибута: {Ресторан, Вид пиццы, Район доставки}. Такая переменная отношения не соответствует 4НФ, так как существует следующая многозначная зависимость: {Ресторан} → {Вид пиццы} {Ресторан} → {Район доставки}
    • Для предотвращения аномалии нужно декомпозировать отношение, разместив независимые факты в разных отношениях. В данном примере следует выполнить декомпозицию на {Ресторан, Вид пиццы} и {Ресторан, Район доставки}. Однако, если к исходной переменной отношения добавить атрибут, функционально зависящий от потенциального ключа, например цену с учётом стоимости доставки ({Ресторан, Вид пиццы, Район доставки} → Цена), то полученное отношение будет находиться в 4НФ и его уже нельзя подвергнуть декомпозиции без потерь.
    • Пятая нормальная форма
    • Отношения находятся в 5НФ, если оно находится в 4НФ и отсутствуют сложные зависимые соединения между атрибутами. Если «Атрибут_1» зависит от «Атрибута_2», а «Атрибут_2» в свою очередь зависит от «Атрибута_3», а «Атрибут_3» зависит от «Атрибута_1», то все три атрибута обязательно входят в один кортеж.
    Например, некоторая таблица содержит три атрибута «Поставщик», «Товар» и «Покупатель». Покупатель_1 приобретает несколько Товаров у Поставщика_1. Покупатель_1 приобрел новый Товар у Поставщика_2. Тогда в силу изложенного выше требования Поставщик_1 обязан поставлять Покупателю_1 тот же самый новый Товар, а Поставщик_2 должен поставлять Покупателю_1, кроме нового Товара, всю номенклатуру Товаров Поставщика_1. Этого на практике не бывает. Покупатель свободен в своем выборе товаров. Поэтому для устранения отмеченного затруднения все три атрибута разносят по разным отношениям (таблицам). После выделения трех новых отношений (Поставщик, Товар и Покупатель) необходимо помнить, что при извлечении информации (например, о покупателях и товарах) необходимо в запросе соединить все три отношения. Любая комбинация соединения двух отношений из трех неминуемо приведет к извлечению неверной (некорректной) информации. Некоторые СУБД снабжены специальными механизмами, устраняющими извлечение недостоверной информации. Тем не менее, следует придерживаться общей рекомендации: структуру базы данных строить таким образом, чтобы избежать применения 4НФ и 5НФ.
    • Например, некоторая таблица содержит три атрибута «Поставщик», «Товар» и «Покупатель». Покупатель_1 приобретает несколько Товаров у Поставщика_1. Покупатель_1 приобрел новый Товар у Поставщика_2. Тогда в силу изложенного выше требования Поставщик_1 обязан поставлять Покупателю_1 тот же самый новый Товар, а Поставщик_2 должен поставлять Покупателю_1, кроме нового Товара, всю номенклатуру Товаров Поставщика_1. Этого на практике не бывает. Покупатель свободен в своем выборе товаров. Поэтому для устранения отмеченного затруднения все три атрибута разносят по разным отношениям (таблицам). После выделения трех новых отношений (Поставщик, Товар и Покупатель) необходимо помнить, что при извлечении информации (например, о покупателях и товарах) необходимо в запросе соединить все три отношения. Любая комбинация соединения двух отношений из трех неминуемо приведет к извлечению неверной (некорректной) информации. Некоторые СУБД снабжены специальными механизмами, устраняющими извлечение недостоверной информации. Тем не менее, следует придерживаться общей рекомендации: структуру базы данных строить таким образом, чтобы избежать применения 4НФ и 5НФ.
    • Пятая нормальная форма ориентирована на работу с зависимыми соединениями. Указанные зависимые соединения между тремя атрибутами встречаются очень редко. Зависимые соединения между четырьмя, пятью и более атрибутами указать практически невозможно.


    написать администратору сайта