НФБК позволяют устранить аномалии, вызываемые функциональными зависимостями. Однако, проблемы, связанные с избыточностью данных, могут вызывать многозначные зависимости. Рассмотрим отношение Подразделение_Служащий_Клиент,в котором содержатся имена сотрудников, взаимодействующие с клиентами некоторого отдела.
Отдел
Служащий
Клиент
Библиотека
Петров
Николаев
Библиотека
Сидоров
Николаев
Библиотека
Петров
Викторов
Библиотека
Сидоров
Викторов
В этом примере в библиотеке два сотрудника, которые обслуживают двух клиентов. Поскольку между сотрудниками и клиентами нет связи, необходимо создать строку для каждой комбинации. В данном примере существует многозначная зависимость, так как в нем содержится две независимые связи 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. Ограниченные естественные языки. Ориентированы на пользователя специалиста предметной области и формулируются в ее терминах.