Нормальная форма Бойса – Кодда (НФБК или усиленная 3 НФ)
Информационные модели
Под информационной моделью понимается модель в терминах информационных данных. Основными понятиями являются понятия информационных элементов и отношений между ними. К основным информационным моделям относятся:
1. Модели в терминах свойство – связь.
2. Реляционная модель.
3. Многомерная модель данных.
4. Объектная и объектно – реляционная модель данных.
Наиболее простой, с которой и началась история БД, является модель свойство – связь.
1.1.Модель свойство-связь
Основными понятиями данной мод ели являются понятия информационного элемента и отношений между этими элементами.
Информационным элементом называется единая неделимая единица информации, которая характеризуется именем, типом, размером и экземпляром. Под именем понимается идентификатор, позволяющий однозначно определить данный элемент. Под типом информационного элемента будем понимать вещественный тип (E), целый (I), текстовый (T), дату (D) и Булев (B). Размером информационного элемента называется сколько места он занимает в памяти в байтах. Экземпляром информационного элемента называется одно из возможных значений, которые он может принимать. Например, информационный элемент «Ф.И.О. студента» можно задать следующим образом:
· Имя элемента - FIOS.
· Тип элемента – T.
· Размер элемента – 30 байт.
· Экземпляр элемента – Иванов С.Ю.
Основными отношениями, используемыми в данной модели данных, являются:
· Одно-однозначное отношение (1:1). Отношение между элементами A и B называется одно-однозначным, если одному экземпляру A соответствует один экземпляр B, и наоборот. Это отношение обозначается A(1:1)B и изображается в виде:
Примером такого отношения может служить ИНН и номер пенсионного страхования.
· Одно – многозначное отношение (1:n). Отношение между элементами A, B называется одно – многозначным, если одному экземпляру A соответствует несколько экземпляров B, но одному экземпляру B соответствует один экземпляр. Такое отношение обозначается A(1:n)B и изображается:
Примером такого отношения может служить № группы и № зачетки.
· Много – многозначное отношение (m:n). Элементы A, B находятся в много – многозначном отношении, если одному экземпляру A соответствует много экземпляров B и наоборот.
Если это особо не оговорено, то на графе связь не изображается. В противном случае изображается следующим образом:
Примером такого отношения может служить № зачетки студента и ИНН преподавателя.
Таким образом, модель свойство-связь можно представить в виде графа. Для построения этого графа используется графический метод проектирования.
1.1.1. Графический метод проектирования
Графический метод проектирования состоит из следующих этапов:
1. Выделение информационных элементов и связей между ними.
2. Агрегирование элементов.
3. Удаление транзитивных зависимостей.
4. Введение фиктивных элементов.
Выделение информационных элементов можно проводить с помощью двух подходов: функционального и объектного. В первом случае анализируются задачи, которые предполагается решать с использованием данного приложения базы данных. Например, если в ходе эксплуатации приложения предполагается необходимость ответа на запрос:
| | |
Здесь «В какой группе» является целевой частью запроса, в которой можно рассматривать № группы,как информационный элемент, а «обучается студент» - квалифицирующая часть, где Иванов М. М. – экземпляр информационного элемента Ф. И. О. студента.Недостатком данного подхода является то, что при изменении запросов, в БД может не оказаться требуемая информация. При объектном подходе анализируется объект, для которого строится база, и в нее вносятся все возможные элементы, выявляемые в ходе анализа. Недостатком данного подхода является то, что база может оказаться избыточной, и в нее могут быть включены элементы, к которым не будет проводиться обращение. Поэтому на практике используют комбинацию подходов. Пусть в ходе выделения информационных элементов был выделены следующие элементы:
№
| Имя
| Тип
| Размер
| Экземпляр
|
| Факультет
| Текстовый
|
| ФИТ
|
| № группы
| Текстовый
|
| АП51
|
| № зачетки
| Текстовый
|
| АП03\5
|
| № пропуска
| Текстовый
|
| АП03\5
|
| Ф.И.О. студента
| Текстовый
|
| Иванов М.М.
|
| Кафедра
| Текстовый
|
| ИТАС
|
| Ф.И.О. преподавателя
| Текстовый
|
| Попов С.Н.
|
Для установления связей анализируется каждая пара информационных элементов. Получаем:
Здесь предполагается, что среди студентов и преподавателей могут быть однофамильцы.
На следующем шаге агрегируются (объединяются) информационные элементы, находящиеся в одно-однозначном соответствии. Такими элементами являются № зачетки и № пропуска. Получаем новый граф:
На следующем шаге удаляются транзитивные связи. Транзитивные связи имеют на графе следующий вид:
Здесь можно удалить перечеркнутую связь. Фактически задача сводится к оставлению в графе путей наибольшей длины, связывающих вершины. В нашем случае получим:
Недостаток этого графа заключается в том, что он не является связанным. Для того чтобы устранить этот недостаток вводится фиктивный информационный элемент, который находился бы в одно-многозначном соответствии с какими-либо элементами несвязанных подграфов. Для нашего примера таким элементом является ИНН преподавателя.Получаем:
Такой граф принято изображать следующим образом. На верхнем уровне изображаются корневые вершины, а на нижнем – вершины листья.
В зависимости от получаемого графа различают три структуры данных: строка, дерево, сеть.
Граф, полученный в примере, соответствует сети.
Строка – это такая структура данных, в которой в вершину входит не более одной дуги, и выходит из нее также не более одной дуги (плоские БД).
В структуре данных дерево в вершину входит не более одной дуги, а исходит из нее сколь угодно много (иерархические БД – IMS).
В сети в вершину может входить сколь угодно много дуг и из вершины также выходит сколь угодно много дуг (сетевые БД – IDMS).
2.Реляционная модель данных
Реляционная модель данных базируется на более сложном понятии отношения, чем модель свойство-связь.
Введем следующие понятия:
Отношение – это плоская таблица, состоящая из столбцов и строк.
Атрибут – это поименованный столбец отношения.
Домен – это набор допустимых значений для одного или нескольких атрибутов.
Кортеж – это строка отношения.
Степень отношения определяется количеством атрибутов, которое оно содержит.
Кардинальность – это количество кортежей, которое содержит отношение.
Реляционная база данных (РБД) – набор нормализованных отношений.
.Математическое определение
Пусть имеется n множеств Декартово произведение для этих множеств можно определить следующим образом:
Подмножество этого множества и будет называться отношением.
Схема отношения – это имя отношения, за которым заключенное в скобки следует множество пар имен доменов и атрибутов.
Отношение обладает следующими свойствами:
· Отношение имеет имя, которое отличается от имен других отношений.
· Каждая ячейка отношения содержит атомарное (неделимое) значение.
· Каждый атрибут имеет уникальное присущее только ему имя.
· Значения атрибутов берутся из одного и того же домена.
· Порядок кортежей не важен.
· Каждый кортеж уникален, то есть дублирование значений кортежей не допускается.
· Порядок атрибутов важен и определяется следованием доменов в операции декартового произведения (Не верьте утверждению некоторых учебников, что он не важен. Это справедливо для табличных БД, одной таблице соответствует количество отношений равное числу сочетаний комбинаций столбцов отношений).
Эти утверждения являются результатом свойств определения понятий множеств и кортежей.
Вероятный или потенциальный ключ – атрибут или множество атрибутов, которое единственным образом определяет кортеж данного отношения.
Первичный или основной ключ – это потенциальный ключ, который выбран для уникальной идентификации кортежей отношения.
.Реляционная целостность
Определитель NULL указывает, что значение атрибута в настоящий момент неизвестно или неприемлемо для данного кортежа.
В отношении ни один атрибут первичного ключа не может содержать значение NULL.
.Нормализация
Нормализация – метод создания набора отношений с заданными свойствами на основе требований к данным, установленном в некотором приложении. Необходимость нормализации вызвана избыточностью данных и аномалиями обновления.
.Избыточность данных и аномалии обновления
Одна из целей проектирования РБД заключается в группировании атрибутов в отношениях так, чтобы минимизировать избыточность данных и таким образом повысить эффективность БД.
Рассмотрим отношения:
Исходное: Работник_отдела(ИНН, ФИО, АдресС, Должность, Ставка, № отдела, АдресО, Телефон)
Преобразованные:
Служащий(ИНН, ФИО, АдресС, Должность, Ставка, № отдела)
Отдел(№ отдела, АдресО, Телефон)
Здесь подчеркнуты ключи отношений.
В отношении Работник_отделасодержатся избыточные данные, если рассмотреть экземпляры отношений, так как сведения об отделах повторяются.
Работник_отдела
ИНН
| ФИО
| АдресС
| Должн
| Ставка
| № отд
| АдресО
| Тел
|
| Антон
| Москва
| Н.с.
|
| В3
| М, 1
|
|
| Боря
| Москва
| инж
|
| В3
| М, 1
|
|
| Витя
| Тула
| Ст.инж
|
| В3
| М, 1
|
|
| Гриша
| Реутов
| С.н.с
|
| В5
| К, 3
|
|
| Дима
| Москва
| инж
|
| В7
| М, 2
|
|
| Женя
| Вязьма
| инж
|
| В7
| М, 2
|
|
Служащий
ИНН
| ФИО
| АдресС
| Ставка
| № отд
|
| Антон
| Н.с
|
| В3
|
| Боря
| Инж
|
| В3
|
| Витя
| Ст..инж
|
| В3
|
| Гриша
| С.н.с
|
| В5
|
| Дима
| Инж
|
| В7
|
| Женя
| инж
|
| В7
|
Отдел
№ отдела
| АдресО
| Тел
| В3
| М, 1
|
| В5
| К, 3
|
| В7
| М, 2
|
|
Аномалии вставки. Существует два типа аномалий вставки:
1. При вставке новых служащих в отношение Работник_отделанеобходимо указать все сведения об отделе, в котором он работает.
2. Для вставки сведений о новом отделе, который еще не имеет сотрудников, потребуется присвоить значение Null всем атрибутам описания служащего, в том числе ИНН. Поскольку ИНН первичный ключ, такая попытка вызовет нарушение целостности и будет отвергнута.
Аномалии удаления. При удалении из отношения Работник_отдела, например, четвертой строки, сведения об отделе В5 теряются.
Аномалии обновления. При попытке обновления значения одного из атрибутов для некоторого из отделов в отношении Работник_отдела(например, телефона отдела В3) необходимо обновить соответствующие значения во всех записях с этим отделом. В противном случае БД будет содержать противоречивые сведения.
.Функциональные зависимости
Функциональная зависимость задает связь между атрибутами. Формально функциональные зависимости вводятся с помощью бинарных отношений, представляемых в следующем виде. Это ассоциация между двумя категориями объектов, которые характеризуются двумя функциями доступа, введенными для перехода от одной категории к другой. Каждая такая функция доступа характеризуется своим именем и двумя параметрами, характеризующими максимальное и минимальное число элементов, которые могут исходить из объекта категории.
R1=rel(Учебная группа, Студент, Студент из группы = afn[1, 1], Группа студентов = afn[5, 10]).
Это означает, что студент может учиться максимум и минимум в одной группе. С другой стороны, группа может состоять минимум из пяти и максимум из тридцати студентов.
Особый класс отношений с параметрами доступа [1, 1] и [0, 1] называют функциональными отношениями и обозначают как E ® F, где в отношении
Концепция функционального отношения аналогична понятию ключа.
E – вероятностный или потенциальный ключ отношения R(A), если:
1. (Единственность идентификатора) E®A.
2. (Не избыточность) Не существует атрибута в E, который мог бы быть удален без разрушения свойства 1.
3. Каждый атрибут из R функционально зависит от E.
4. Набор атрибутов из R в E максимально независимое множество, то есть каждое подмножество E и никакие другие атрибуты из R не могут быть добавлены к E без разрушения этой функциональной независимости.
Итак, функциональная зависимость задает связь между атрибутами отношения. Например, если в отношении R содержатся атрибуты A, B, атрибут B функционально зависит от A (A®B), то каждое значение атрибута A связано только с одним значением B (Причем каждый атрибут A, B могут состоять из одного или нескольких атрибутов). Если нам известно значение атрибута A, то при рассмотрении отношения с такой зависимостью, в любой момент времени во всех строках этого отношения, содержащих указанное значение А, мы найдем одно и то же значение B, то есть, если две строки имеют одно и то же значение атрибута A, то они имеют одно и то же значение атрибута B. Однако, для заданного значения атрибута B может существовать несколько различных значений A. Детерминантом функциональной зависимости называется атрибут или группа атрибут, расположенных слева от символа стрелки (Экциндентные вершины на диаграмме функциональных зависимостей). A®B (A – детерминанта).
Рассмотрим функциональные зависимости отношения Работник_отдела.
ИНН ® ФИО
ИНН ® АдресС
ИНН ® Должность
ИНН ® Ставка
ИНН ® № отдела
ИНН ® АдресО
ИНН ® Телефон
№ отдела ® АдресО
№ отдела ® Телефон
АдресО ® № отдела
АдресО ® Телефон
Телефон ® АдресО
Телефон ® № отдела
Итого 13 функциональных зависимостей, в которых ИНН, № отдела, АдресО, Телефон играют роль детерминантов. Обобщенно можно записать:
ИНН ® ФИО, АдресС, Должность, Ставка, № отдела, АдресО, Телефон
№ отдела ® АдресО, Телефон
АдресО ® № отдела, Телефон
Телефон ® № отдела, АдресО
(Нарисовать диаграмму функциональных зависимостей)
Для выявления потенциальных ключей необходимо найти атрибут или группу атрибутов, которые уникальным образом идентифицируют каждую строку отношения.
Если отношение обладает несколькими потенциальными ключами, то среди них надо выбрать первичный ключ. Все атрибуты, которые не являются частью первичного ключа, должны функционально зависеть от него.
Единственный потенциальный ключ в примере ИНН, так как все атрибуты зависят от него. Хотя атрибуты № отдела, АдресО и Телефон детерминанты, они не являются потенциальными ключами.
Процесс нормализации
Нормализация – это формальный метод анализа отношений на основе их первичного ключа или потенциальных ключей и существующих функциональных зависимостей. Он включает ряд правил, которые могут использоваться для проверки отдельных отношений, таким образом, чтобы вся БД могла быть нормализована до желаемой степени нормализации. Если некоторые требования не удовлетворяются, то нарушающее данное требование отношение, должно быть разбито на отношения, каждое из которых удовлетворяет требованиям нормализации.
НФ
Первая нормальная форма – отношение, в котором на пересечении каждого столбца и строки содержится только одно значение (отсутствуют сложные домены).
Существует два подхода исключения повторяющихся групп из ненормализованных отношений.
1. Повторяющиеся группы исключаются путем ввода соответствующих данных в пустые столбцы строк с повторяющимися данными, то есть пустые места заполняются дубликатами повторяющихся данных. Этот подход называется выравниванием таблицы.
2. Атрибут или группа атрибутов назначаются ключом ненормализованной таблицы, а затем повторяющиеся группы изымаются и помещаются в отдельные таблицы вместе с копиями ключей исходного отношения.
Оба подхода корректны. Однако, при втором подходе, полученные отношения находятся в 1НФ и обладают меньшей избыточностью. Первый подход будет показан ниже. Здесь приведем пример второго похода.
Пусть задано отношение:
Учебная группа (№ группы, Занятия, Студент)
Причем домены Занятияи Студентявляются непростыми доменами.
Занятия(Календарный план, Предмет, Код предмета, Преподаватель)
Студент(№ зачетки, ФИОС)
Календарный план(Дата, Аудитория)
Преподаватель(ИНН, ФИОП)
Нормализация проводится следующим образом. Начиная с отношения в корне дерева, возьмем основной ключ и включим его во все подчиненные отношения, получив их расширения. Основной ключ расширенного отношения содержит свой собственный ключ, а также ключ из вышестоящего отношения. Удалим вершину дерева и применим процедуру для каждого оставшегося отношения. Если в удаляемой вершине содержится не ключевой атрибут, перенесем его в любую подчиненн1 вершину. Применим процедуру для оставшихся поддеревьев. Для примера:
1 шаг:
Занятия(№ группы, Календарный план, Предмет, Код предмета, Преподаватель)
Студент(№ группы, № зачетки, ФИОС)
2 шаг.
Календарный план(№ группы, Предмет, Код предмета, Дата, Аудитория)
Преподаватель(№группы, Код предмета, ИНН, ФИОП)
Студент(№ группы, № зачетки, ФИОС)
Такая форма процедуры нормализации применима при следующих условиях:
1. Граф связи непростых доменов имеет вид дерева.
2. Основной ключ не содержит в качестве своей составляющей непростой домен.
НФ
В некотором отношении атрибут B называется полностью зависимым от атрибута A, если атрибут B функционально зависит от полного значения атрибута A и не зависит ни от какого подмножества полного значения атрибута A.
Функциональная зависимость A®B является полной функциональной зависимостью, если удаление какого-либо атрибута из A приводит к утрате этой зависимости.
Отношение, которое находится в первой нормальной форме и каждый атрибут которого, не входящий в состав первичного ключа, характеризуется полной функциональной зависимостью от этого первичного ключа, находится во второй нормальной форме.
Переход от 1 НФ к 2 НФ состоит в замене отношения его проекциями.
Дано отношение R(A, B, C, D).
R(A, B, C, D) заменяется на отношения R1(A, B, C,) и R2( B, D).
НФ
Если для атрибутов A, B, C некоторого отношения существуют зависимости A ® B, B ® C, при условии, что атрибут A не зависит ни от B, ни от C, то говорят, что атрибут C транзитивно зависит от A через атрибут B.
Третья нормальная форма – отношение, которое находится во второй нормальной форме и не имеет не входящих в первичный ключ атрибутов, которые находились бы в транзитивной функциональной зависимости от этого первичного ключа.
Переход от 2 НФ к 3 НФ состоит в замене отношения его проекциями.
R(A, B, C), в котором A ® B, B ® C, заменяется на отношения R1(A, B,) и R2( B, C).
Нормальная форма Бойса – Кодда (НФБК или усиленная 3 НФ)
НФБК учитывает функциональные зависимости, в которых участвуют потенциальные ключи, а не только первичный ключ. Отношение находится в НФБК тогда и только тогда, когда каждый его детерминант является потенциальным ключом.
Для отношения с единственным потенциальным ключом его 3 НФ и НФБК являются эквивалентными. Для проверки принадлежности отношения к НФБК надо найти все его детерминанты и убедится в том, что они являются потенциальными ключами. Если это не так выполнить нормализацию, приняв потенциальный ключ за основной.
Пример.
Пусть задан следующий отчет:
Страница 1 Отчет о проверке проведения работ 01.02.03
на объекте
| Объект: PG4
| Адрес: Коломна
| Дата проверки
| Время проверки
| Комментарий
| Шифр проверяющего
| Ф.И.О.
| Транспорт
| 05.01.03
| 10:00
| Замечаний нет
| SG37
| Петров
| М251
| 21.01.03
| 9:00
| Замечаний нет
| SG14
| Сидоров
| М523
| 22.01.03
| 12:00
| Отставание от графика
| SG14
| Сидоров
| М721
| | | | | | | | | | | |
Страница 2 Отчет о проверке проведения работ 01.02.03
на объекте
| Объект: PG16
| Адрес: Ногинск
| Дата проверки
| Время проверки
| Комментарий
| Шифр проверяющего
| Ф.И.О.
| Транспорт
| 08.01.03
| 11:00
| Замечаний нет
| SG37
| Петров
| М251
| 20.01.03
| 14:00
| Заменить трубы
| SG14
| Сидоров
| М523
|
На основе этого отчета можем построить ненормализованную таблицу «Проверка»:
№ объекта
| Адрес
| ПДата
| ПВремя
| Коммент.
| № Сл.
| ФИО
| Транс.
| PG4
| Коломна
| 05.01.03
| 10:00
| Замечаний нет
| SG37
| Петров
| М251
|
|
| 21.01.03
| 9:00
| Замечаний нет
| SG14
| Сидоров
| М523
|
|
| 22.01.03
| 12:00
| Отставание от графика
| SG14
| Сидоров
| М721
| PG16
| Ногинск
| 08.01.03
| 11:00
| Замечаний нет
| SG37
| Петров
| М251
|
|
| 20.01.03
| 14:00
| Заменить трубы
| SG14
| Сидоров
| М523
|
Для получения первой нормальной формы воспользуемся выравниванием таблицы.
№ объекта
| Адрес
| ПДата
| ПВремя
| Коммент.
| № Сл.
| ФИО
| Транс.
| PG4
| Коломна
| 05.01.03
| 10:00
| Замечаний нет
| SG37
| Петров
| М251
| PG4
| Коломна
| 21.01.03
| 9:00
| Замечаний нет
| SG14
| Сидоров
| М523
| PG4
| Коломна
| 22.01.03
| 12:00
| Отставание от графика
| SG14
| Сидоров
| М721
| PG16
| Ногинск
| 08.01.03
| 11:00
| Замечаний нет
| SG37
| Петров
| М251
| PG16
| Ногинск
| 20.01.03
| 14:00
| Заменить трубы
| SG14
| Сидоров
| М523
|
Отношение «Проверка» имеет три потенциальных ключа (№ объекта, ПДата), (№ Сл., ПДата, ПВремя), (Транс., Пдата, Пвремя). В качестве первичного ключа выберем (№ объекта, Пдата). Отношение «Проверка» определим следующим образом:
Проверка(№ объекта, Пдата, Пвремя, Адрес, Коммент, № Сл., ФИО, Транс).
Построим функциональные зависимости:
Fd1: № объекта, Пдата ® Пвремя, Адрес, Коммент, № Сл., ФИО, Транс (Первичный ключ).
Fd2: № объекта ® Адрес (Частичная зависимость).
Fd3: № сл ® ФИО (Транзитивная зависимость)
Fd4: № сл, Пдата ® Транс
Fd5: Транс, Пдата, Пвремя ® № объекта, Адрес, Коммент, № Сл, ФИО (Потенциальный ключ).
Fd6: № сл, Пдата, Пвремя ® № объекта, Адрес, Коммент, ФИО (Потенциальный ключ)
Это же можно представить в виде диаграммы:
Отношение «Проверка» может быть преобразовано во вторую НФ путем удаления частичной зависимости из этого отношения путем создания двух новых отношений «Объект» и «Проверка1».
Объект(№ объекта, Адрес)
Проверка1(№ объекта, Пдата, Пвремя, Коммент, № Сл., ФИО, Транс).
Теперь проанализируем полученные отношения.
Отношение «Объект»:
№ объекта ® Адрес
Отношение «Проверка1»:
Fd1*: № объекта, Пдата ® Пвремя, Коммент, № Сл., ФИО, Транс
Fd3: № сл ® ФИО
Fd4: № сл, Пдата ® Транс
Fd5*: Транс, Пдата, Пвремя ® № объекта, Коммент, № Сл, ФИО
Fd6*: № сл, Пдата, Пвремя ® № объекта, Коммент, ФИО
Отношение «Объект» не содержит транзитивных зависимостей, следовательно, находится в третьей нормальной форме.
В отношении «Проверка1» есть транзитивная зависимость:
№ объекта, Пдата ® № Сл ® ФИО.
Транзитивная зависимость удаляется преобразованием отношения «Проверка1» в два отношения «Служащий» и «Проверка2».
Служащий(№ Сл, ФИО)
Проверка2(№ объекта, Пдата, Пвремя, Коммент, № Сл, Транс)
Проанализируем отношение «Проверка2».
Fd1**: № объекта, Пдата ® Пвремя, Коммент, № Сл., Транс
Fd4: № сл, Пдата ® Транс
Fd5**: Транс, Пдата, Пвремя ® № объекта, Коммент, № Сл
Fd6*: № сл, Пдата, Пвремя ® № объекта, Коммент
В отношении содержится детерминант № Сл, Пдата, который не является потенциальным ключом. Поэтому это отношение может страдать от аномалии обновления. Отношение «Проверка2» не находится в НФБК. Для его преобразования его в НФБК его надо разбить на два новых отношения:
Транспорт_для_сотрудника(№сл, Пдата, Транс)
Инспекция(№ объекта, Пдата, Пвремя, Коммент, № Сл).
Схема декомпозиции будет выглядеть:
Результирующие отношения имеют вид:
Объект(№ объекта, Адрес)
Служащий(№ Сл, ФИО)
Транспорт_для_сотрудника(№ сл, Пдата, Транс)
Инспекция(№ объекта, Пдата, Пвремя, Коммент, № Сл).
НФ
НФБК позволяют устранить аномалии, вызываемые функциональными зависимостями. Однако, проблемы, связанные с избыточностью данных, могут вызывать многозначные зависимости. Рассмотрим отношение Подразделение_Служащий_Клиент,в котором содержатся имена сотрудников, взаимодействующие с клиентами некоторого отдела.
Отдел
| Служащий
| Клиент
| Библиотека
| Петров
| Николаев
| Библиотека
| Сидоров
| Николаев
| Библиотека
| Петров
| Викторов
| Библиотека
| Сидоров
| Викторов
|
В этом примере в библиотеке два сотрудника, которые обслуживают двух клиентов. Поскольку между сотрудниками и клиентами нет связи, необходимо создать строку для каждой комбинации. В данном примере существует многозначная зависимость, так как в нем содержится две независимые связи 1 : n.
В случае многозначной зависимости, существующей между атрибутами A, B, C некоторого отношения, для каждого значения A имеется набор значений атрибута B и набор значений атрибута C. Однако, входящие в этот набор значения атрибутов B, C не зависят друг от друга. .
Многозначная зависимость A®B некоторого отношения R определяется как тривиальная, если атрибут B является подмножеством атрибута A или В противном случае зависимость нетривиальная.
Многозначная зависимость в примере нетривиальная. Несмотря, что это отношение находится в НФБК, оно недостаточно хорошо структурировано из-за наличия повторяющихся строк. Поэтому его целесообразно разбить на два отношения в 4 НФ.
4 НФ – это отношение в НФБК, которое не содержит нетривиальных многозначных зависимостей.
НФ
Свойство декомпозиции, которое вызывает генерацию ложных строк при обратном соединении декомпозированных отношений с помощью операции естественного соединения.
5 НФ – отношение без зависимостей соединения.
Языки запросов
Фактически языки запросов предназначены для решения следующих задач:
1. Добавления.
2. Удаления.
3. Обновления.
4. Поиска данных.
Обычно различают следующие языки запросов:
1. Языки отображений. Ориентированы на пользователя, являющегося программистом – профессионалом. Запрос формулируется в виде программного кода. Манипулируют отдельными элементами отношений.
2. Реляционная алгебра. Эти языки ориентированы на пользователя - математика. Запросы формулируются в терминах РА, предложенной Коддом.
3. Реляционное исчисление (РИ). Также ориентировано на пользователя – математика. Запросы формулируются в терминах логики предикатов первого порядка.
4. Языки спецификаций. Эти языки ориентированы на пользователей, представляющих структуру БД. Запросы формулируются в виде спецификаций заданного формата.
5. Ограниченные естественные языки. Ориентированы на пользователя специалиста предметной области и формулируются в ее терминах.
3.1.Языки отображений.
Рассмотрим языки отображений на примере VBA Access, содержащим все характерные черты присущие данному классу языков.
. В Access 2000 по умолчанию установлена модель данных ADO (ActiveX Data Objects). Для установки MSDE, что соответствует модели данных DAO, используемой в Access 97, необходимо использовать другой файл установки. Необходимо вставить установочный компакт диск и дважды щелкнуть на имени файла SETUPSQL.EXE в папке \Sql\x86\Setup.
Иерархия ADO проще иерархии объектов модели
Объекты ADO предназначены для организации доступа к источникам данных, их редактирования и обновления. Модель ADO включает в себя объекты, необходимые для выполнения следующих задач:
1. Соединение с источником данных.
2. Создание объекта, реализующего команды SQL
3. Указание столбцов, таблиц и значений в качестве переменных параметров в команде SQL.
4. Выполнение команды SQL.
5. Сохранение результатов выполнения в хеше.
6. Создание виртуального представления в хеше, чтобы пользователь мог сортировать, фильтровать данные в БД и перемещаться по ней.
7. Редактирование данных.
8. Обновление источника данных в соответствии со всеми изменениями сделанными в хеше.
9. Фиксация или отмена изменений, внесенных в ходе транзакции, и последующее закрытие транзакции.
К классам объектов в модели ADO относятся:
· Connection – представляет среду, в которой будет выполняться обмен данными с источником данных. Соединение должно быть установлено до начала выполнения любых других операций.
· Command – способ управления источником данных. Можно удалять, добавлять, обновлять и считывать данные из источника.
· Parameter – представляет переменные компоненты объекта Command. В командах часто необходимо указывать вспомогательные параметры, уточняющие способ выполнения команд. Параметры являются изменяемыми, так что перед выполнением команд их можно модифицировать
· Recordset – служит локальным хешем данных, считанных из источника данных.
· Field – представляет столбец таблицы Recordset. Поле содержит свойства определяющие поле. Пример таких свойств – Type, Value.
· Error – возвращает результат всякий раз, когда в приложении возникает ошибка. Каждый объект Connection имеет отдельное семейство объектов Error.
· Property – определяет объекты Connection, Command, Field, Recordset. Каждый объект ADO обладает набором свойств, задающим объект и управляющим его поведением.
· Collection – служит для объединения сходных объектов в группы.
Обращение к объектам ADO выглядит так:
ADODB.имя_объекта.
При создании нового проекта, Access 2000 загружает только библиотеку объектов ADO. Если необходимо работать с DAO, добавляется библиотека объектов DAO в диалоге Preferences редактора VB. Для открытия VB Editor надо нажать Alt + F11. Диалог Preferences открывается командой меню Tools>References. В этом диалоге надо выбрать DAO 3.6 Object Library.
Для того чтобы связать объект Recordset в модели ADO с данными необходимо:
Dim rst As New ADODB.Recordset
rst.Open SQLVar,CurrentProject.Connection
Здесь SQLVar символьная переменная, в которой определяется набор данных либо как выражение SQL, либо как имя таблицы. Например, если необходимо открыть таблицу с именем Student, вторая строка будет выглядеть:
rst.Open “Student”, CurrentProject.Connection
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|