Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Нормализация реляционных таблиц (отношений)
Существует понятие функциональной зависимости между атрибутами (полями) реляционной таблицы. Считается, что один атрибут в таблице функционально определяет другой, если каждому значению первого атрибута соответствует единственное значение второго. Иными словами, второй атрибут функционально зависит от первого. Пример: таблица «Должность» (значение поля “ФИО” уникально). Каждому сотруднику соответствует одна должность, но одна и та же должность может быть у нескольких сотрудников. В этом случае считается, что поле “должность” функционально зависит от поля “ФИО”.
Некоторые виды функциональной зависимости могут приводить к избыточности данных в базе. Для устранения (минимизации) избыточности используется нормализация, т.е. процесс преобразования данных от одной нормальной формы к другой, более высокой. Существуют 3 нормальные формы: 1НФ, 2НФ, 3НФ. Чем выше форма, тем более жесткие ограничения должны соблюдаться в соответствующей реляционной таблице. Все реляционные таблицы удовлетворяют требованиям 1НФ (первой нормальной формы). Реляционная таблица удовлетворяет 2НФ, если она соответствует 1НФ и не содержит неполных функциональных зависимостей. Неполная функциональная зависимость – это, фактически, две зависимости: 1) ключ реляционной таблицы функционально определяет некоторый ключевой атрибут (ключ является составным); 2) часть составного ключа функционально определяет тот же самый неключевой атрибут. Другими словами, в 2НФ не должно быть атрибутов, зависящих только от части составного ключа, а не от него целиком. Пример: таблица «Булочная». Соответствует 2НФ. Поле “цена” и “количество” целиком определяются составным ключом «“хлеб завод” & “продукт”».
Если же булочная будет назначать одну и ту же цену на определенный вид продукции любого завода (например: любой нарезной батон будет стоить 12-70, а дарницкий 14-10), то поле “цена” будет функционально зависеть как от ключа целиком, так и от его части – поля “продукт”. Такая зависимость является неполной. Для устранения неполной зависимости необходимо разбить таблицу «Булочная» на две таблицы.
Реляционная таблица удовлетворяет 3НФ, если она находится во 2НФ и среди ее атрибутов отсутствуют транзитивные функциональные зависимости. Транзитивная зависимость – это две зависимости: 1) ключ таблицы функционально определяет неключевой атрибут; 2) этот неключевой атрибут функционально определяет другой неключевой атрибут. Другими словами, при транзитивной зависимости один из атрибутов может зависеть от ключа через другой неключевой атрибут (транзитивно), что приводит к избыточности данных. Пример: таблица «Должность». В таблице существует транзитивная зависимость: “должность” зависит от “ФИО”, а “оклад” зависит от “ФИО” через “должность”.
Для приведения таблицы к 3НФ необходимо разделить ее на две таблицы:
Нормализация является алгоритмически определенным процессом. 5. Обеспечение целостности данных в реляционных таблицах В таблице должны выполняться правила: 1. для любой таблицы первичный ключ должен быть уникальным и непустым (иметь значение). 2. для связанных таблиц все связи должны быть реальными, т.е. каждый вторичный ключ подчиненной таблицы должен ссылаться на действующий первичный ключ главной таблицы. Пример: таблицы «Группа»–«Студент». Если есть студенты из группы 4078/4, то запись об этой группе обязательно должна быть в главной таблице «Группа». 3. для связанных таблиц вводятся правила ссылочной целостности, которые предусматривают действия, выполняемые каждый раз при вставке, удалении или обновлении записи в одной из таблиц. Пример: правило «каскад» требует при удалении (обновлении) какой-либо записи в главной таблице удаления (обновления) всех соответствующих записей в подчиненных таблицах (установлено в Access): если в таблице «Клиент» удаляется запись с кодом клиента 1578, то в связанной таблице «Заказ» удаляются все записи с кодом 1578.
Правило ссылочной целостности выбирается разработчиком из установленных, либо создаются самим разработчиком при проектировании базы данных. Понятие об индексах Как правило, записи в таблицах Б.Д. вносятся последовательно, т.е. размещаются в конце таблицы. Физически таблица может быть фрагментирована, и поиск необходимой записи по значению ключевого поля может занять много времени. Для ускорения поиска создается индекс, в который выносятся упорядоченные значения ключа и номера записи исходной таблицы, соответствующие этим значениям. Индексы позволяют при поиске записи осуществлять поиск первоначально в самом индексе, быстро локализовать номер нужной записи и только после этого указатель записей устанавливается на искомую запись в исходной таблице. Для ускорения алгоритма поиска используется не последовательный, а скачкообразный алгоритм. Самый простой вид такого алгоритма: метод деления пополам (двоичный поиск). Преимущество двоичного поиска: в самой неблагоприятной ситуации (искомая запись – последняя из N) при последовательном поиске нужно сделать N шагов, а при двоичном – log2N.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-01-27; просмотров: 408; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.218.184.214 (0.005 с.) |