Атомарность значений атрибутов

Атомарность значений атрибутов

Значения всех атрибутов являются атомарными. Это следует из определения домена как потенциального множества значений простого типа данных, т.е. среди значений домена не могут содержаться множества значений (отношения). Принято говорить, что в реляционных базах данных допускаются только нормализованные отношения или отношения, представленные в первой нормальной форме. Потенциальным примером ненормализованного отношения является следующее:

Можно сказать, что здесь мы имеем бинарное отношение, значениями атрибута Группы которого являются отношения. Заметим, что исходное отношение Студенты является нормализованным вариантом отношения Группы:

Нормализованные отношения составляют основу классического реляционного подхода к организации баз данных.

Они обладают некоторыми ограничениями (не любую информацию удобно представлять в виде плоских таблиц), но существенно упрощают манипулирование данными.

Рассмотрим, например, два идентичных оператора занесения кортежа:

Зачислить Кузнецова (пропуск номер 3000, зарплата 115,000) в группу номер 320 и Зачислить Кузнецова (пропуск номер 3000, зарплата 115,000) в группу номер 310.

Если информация о сотрудниках представлена в виде отношения СОТРУДНИКИ, оба оператора будут выполняться одинаково (вставить кортеж в отношение СОТРУДНИКИ). Если же работать с ненормализованным отношением ОТДЕЛЫ, то первый оператор выразится в занесение кортежа, а второй — в добавление информации о Кузнецове в множественное значение атрибута ОТДЕЛ кортежа с первичным ключом.

Правила Кодда

Двенадцать правил Кодда определяют требования к реляционным СУБД.

1. Явное представление данных. Информация должна быть представлена в виде данных, хранящихся в ячейках,

2. Гарантированный доступ к данным. К каждому элементу данных должен быть обеспечен доступ с помощью комбинации имени таблицы, первичного ключа строки и имени столбца.

3. Полная обработка неопределенных значений. Неопределенные значения Null, отличные от любого определенного значения, должны поддерживаться для всех типов данных при выполнении любых операций.

4. Доступ к описанию базы данных в терминах реляционной модели. Словарь данных активной базы данных должен сохраняться в форме таблицы, и СУБД должна поддерживать доступ к нему при помощи стандартных языковых средств доступа к таблицам.

5. Полнота подмножества языка. Язык управления данными и язык определения данных должны поддерживать все операции доступа к данным и быть единственным средством такого доступа, кроме, возможно, операций низшего уровня (см. правило 12).

6. Возможность обновления представлений. Все представления, подлежащие обновлению должны быть доступны для этого.

7. Наличие высокоуровневых операций управления и данными. Операции вставки, обновления и удаления должны применяться к таблице в целом.

8. Физическая независимость данных. Прикладные программы не должны зависеть от используемых способов хранения данных на носителях и методов обращения к ним.

9. Логическая независимость данных. Прикладные программы не должны зависеть от логических ограничений.

10. Независимость контроля целостности. Всё необходимое для поддержания целостности данных должно храниться в словаре данных.

11. Дистрибутивная независимость. Реляционная база данных должна быть переносимой и способной к распространению.

12. Согласование языковых уровней. Если реляционная СУБД допускает использование низкоуровневого языка доступа (элемент доступа – запись), последний не должен совершать операций, противоречащих требованию правил безопасности и поддержания целостности данных, которые соблюдаются языком более высокого уровня.

Все это Кодд суммировал в правиле 0: для того чтобы систему можно было квалифицировать как реляционную СУБД, она должна использовать для управления базой данных исключительно реляционные функции.

Первая нормальная форма: три простых условия

Похожие статьи:

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector