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

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

Можно сказать, что здесь мы имеем бинарное отношение, значениями атрибута ОТДЕЛЫ которого являются отношения. Заметим, что исходное отношение СОТРУДНИКИ является нормализованным вариантом отношения ОТДЕЛЫ:

СОТР_НОМЕР СОТР_ИМЯ СОТР_ЗАРП СОТР_ОТД_НОМЕР
  Иванов 112,000  
  Петров 144,000  
  Сидоров 92,000  
  Федоров 110,000  
  Иванова 112,000  

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

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

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

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

1. Отношение имеет имя, которое отличается от имен других отношений.

2. Отношение представляется в виде табличной структуры

3. Так как тело отношения- это математическое множество, которое по определению не содержит одинаковых элементов, то все кортежи различны. Следовательно в отношениях всегда есть первичный ключ (по крайней мере комбинация всех атрибутов будет обладать свойством уникальности).

4. Кортежи не упорядочены.

5. Атрибуты не упорядочены.

Теперь введем понятие нормализации. Единственными отношениями, допустимыми в реляционной модели, являются те, которые удовлетворяют следующему условию:

Каждое значение в отношении, т.е. значение каждого атрибута в каждом кортеже, является атомарным (неделимым).

Иными словами, на пересечение любой строки и любого столбца в таблице должно быть точно одно значение, а не множество значений. (Мы допускаем нулевые значения. Таковым, например, может быть значение атрибута «отработанные часы» для служащего, находящегося в отпуске.) Отношение, удовлетворяющее приведенному выше условию, называется нормализованным.

Очень просто преобразовать ненормализованное отношение к эквивалентной нормализованной форме. Достаточно одного примера, чтобы проиллюстрировать эту процедуру. Отношение BEFORE определено на доменах S# (номер поставщика) и PQ (количество деталей). Элементы PQ сами являются отношениями, определенными на доменах P# (номер детали) и QTY (количество). Таким образом, отношение BEFORE ненормализованно. Отношение AFTER – эквивалентное нормализованное отношение. (Смысл каждого из этих отношений в том, что указанные поставщики поставляют указанные детали в указанных количествах).

BEFORE S# PQ AFTER S# P# QTY
  P# QTY  
  S1 P1     S1 P1  
  P2     S2 P2  

Ключи

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

Не каждое отношение будет иметь первичный ключ в виде единственного атрибута. Однако каждое отношение будет иметь некоторую комбинацию атрибутов, которые, взятые вместе, будут однозначно идентифицировать кортеж в отношении. Комбинация, состоящая из единственного атрибута, является просто специальным случаем. Например, в отношении AFTER этим свойством обладает комбинация (MAJOR-P#, MINOR-P#) в отношении COMPONENT. Существование такой комбинации гарантируется тем, что отношение является уникальным для данного отношения. Следовательно, по крайней мере комбинация всех атрибутов обладает свойством однозначно идентифицировать кортежи в отношении. На практике обычно нет необходимости использовать для этого все атрибуты – как правило, достаточно комбинации некоторой их меньшей части. Таким образом, каждое отношение имеет (возможно, составной) первичный ключ. Мы будем предполагать, что первичный ключ неизбыточен в том смысле, что никакие из составляющих его атрибутов не являются излишними для однозначной идентификации кортежа в отношении. Например, комбинация (Р#, COLOR) не является первичным ключом дл отношения PART.

SUPPLIER S# SNAME STATUS CITY
  S1 Smith   London
  S2 Jones   Paris
  S3 Blake   Paris
  S4 Clark   London
  S5 Adams   Athens

Иногда можно встретить отношения, в которых существует более чем одна комбинация атрибутов, обладающая свойством однозначно идентифицировать кортеж. Следовательно, эти отношения имеют более чем один потенциальный ключ. На рисунке показано отношение SUPPLIER. Здесь ситуация такова, что в течении всего рассматриваемого периода времени каждый поставщик имеет единственный номер и единственное имя. В таком случае мы можем произвольно выбрать один из возможных ключей, скажем, S#, в качестве первичного ключа отношения.

Потенциальные ключи. Потенциальный ключ К для R- это подмножество множества атрибутов R, обладающее свойствами:

1. уникальности (нет двух кортежей R с одинаковыми значениями К).

2. неизбыточности т.е. никакое из подмножеств множества К не обладает свойством уникальности (если из S#, P# удалить атрибут S#, то значения P# будут повторяться)

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

Внешние ключи используются в БД для связывания значений атрибутов из разных переменных отношений и следовательно самих переменных - отношений. Если в БД отношения связаны, ее можно рассматривать, как целостную. Внешний ключ, скажем S в переменной отношения SP представляет собой атрибут, такой что:

1. существует переменная отношения S с потенциальным ключом S.

2. каждое значение внешнего ключа S в SP обязательно совпадает со значением потенциально ключа S некоторого кортежа в текущем значении переменной отношения S. Внешний ключ может быть многоатрибутным.

Пример:

S - потенциальный ключ отношения S.

S - внешний ключ отношения SP.

P - потенциальный ключ отношения P.

P - внешний ключ отношения SP.

(S, P) – первичный ключ отношения SP, он составной.

Составной ключ содержит два и более атрибутов.

Если в отношении SP ввести строку, то эта информация будет системой отвергнута т.к. не могут существовать поставки несуществующих деталей.

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

Суперключ – надмножество потенциального ключа. Например { S, CITY} – суперключ переменной отношения S.

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

Заключение

Мы можем дать следующее определение. Реляционная модель базы данных есть представление пользователем этой базы данных в виде совокупности изменяемых во времени нормализованных отношений различных степеней. «Изменяемые во времени отношения» в этом определении необходимо указывать для того, чтобы учесть операции включения, удаления и обновления кортежей.

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

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

1. каждый «файл» содержит только один тип записи.

2. каждый тип записи имеет фиксированное число типов полей.

3. каждый экземпляр записи имеет уникальный идентификатор.

4. внутри «файла» экземпляры записи либо имеют неизвестный пользователю порядок, либо они упорядочены согласно значениям, содержащимся внутри этих экземпляров.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: