Атомарность значений атрибутов, первая нормальная форма отношения

 

Значения всех атрибутов являются атомарными (вернее, скалярными). Это следует из определения домена как потенциального множества значений скалярного типа данных, т.е. среди значений домена не могут содержаться значения с видимой структурой, в том числе, множества значений (отношения). Заметим, что это не противоречит тому, что говорилось в разд. 2.1 о потенциальной возможности использования при определении атрибутов типов данных, определяемых пользователями. Например, можно было бы добавить в схему отношения СЛУЖАЩИЕатрибут СЛУ_ФОТО, определенный на домене (или типе данных) ФОТОГРАФИИ.Главное в атомарности значений атрибутов состоит в том, что реляционная СУБД не должна обеспечивать пользователям явной видимости внутренней структуры значения. Со всеми значениями можно обращаться только с помощью операций, определенных в соответствующем типе данных.

 

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

 

Пример ненормализованного отношения показан на рис. 2.2. Можно сказать, что здесь мы имеем бинарное отношение, в котором значениями атрибута ОТДЕЛЫ являются отношения. Заметим, что исходное отношение СЛУЖАЩИЕ является нормализованным вариантом отношения ОТДЕЛЫ-СЛУЖАЩИЕ. Нормализованный вариант показан на рис. 2.3.

 

 
 

 

 


       
 
   
 

 

 


Рис. 2.2. Ненормализованное отношение ОТДЕЛЫ-СЛУЖАЩИЕ

 

 

СЛУ_НОМЕР СЛУ_ИМЯ СЛУ_ЗАРП СЛУ_ОТД_НОМЕР
Иванов 22000.00
Петров 30000.00
Сидоров 18000.00
Федоров 20000.00
Иванова 22000.00

 

Рис. 3.3. Отношение СЛУЖАЩИЕ: нормализованный вариант

отношения ОТДЕЛЫ-СЛУЖАЩИЕ

 

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

 

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

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

 

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

 

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