Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Операции над отношениями реляционных БД

Поиск

 

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

Чаще всего выделяют следующие операции реляционной алгебры:

1) объединение отношений;

2) пересечение отношений;

3) разность отношений;

4) произведение отношений;

5) деление отношений;

6) ограничение отношения;

7) проекция отношения;

8) соединение отношений.

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

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

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

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

3) Разность отношений используется для выделения строк, которые входят в первое отношение-операнд и не входят во второе. Операнды должны иметь одинаковый набор атрибутов.

4) При выполнении произведения двух отношений каждая строка первого отношения-операнда сцепляется (конкатенируется) с каждой строкой второго отношения-операнда. Сцепленные строки образуют отношение-результат. Число строк в отношении-результате равно произведению числа строк в отношениях-операндах. Множества атрибутов отношений-операндов не должны пересекаться.

5) Операция деления «обратна» операции умножения.

6) Операция ограничения (выбора) отношения по некоторому условию позволяет выбрать те строки отношения-операнда, которые этому условию удовлетворяют.

7) Операция проекции позволяет выбрать из отношения-операнда определенные столбцы.

8) Операция соединения - одна из наиболее важных операций реляционной алгебры. Она имеет большое практическое значение. Существует 2 типа операций соединения: операция соединения по условию и операция естественного соединения. При выполнении операции соединения по условию двух отношений происходит конкатенация строк отношений-операндов, затем полученная сцепленная строка проверяется на соответствие заданному условию. Если строка удовлетворяет условию, она включается в отношение-результат. Если отношения-операнды обладают общим атрибутом (возможно, составным), то условие соединения может быть опущено, при этом подразумевается, что сравнение производится на равенство значений общих атрибутов. В этом случае говорят о естественном соединении отношений.

9) Операция переименования изменяет имена атрибутов отношения.

10) Операция присваивания позволяет сохранить результат вычисления реляционного выражения в отношении базы данных.

Строгое определение операций реляционной алгебры можно найти в литературе, посвященной теории баз данных. Пользователи, как правило, имеют дело с этими операциями в виде конструкций языков программирования, например, языка SQL-запросов.

 

Нормализация отношений

 

При проектировании базы данных стараются, чтобы отображение объектов предметной области в структуры модели данных не противоречило семантике предметной области. Оно должно быть эффективным, то есть должно обеспечивать минимальное дублирование данных, удобство их обработки и обновления. Для удовлетворения этих требований необходимо определить, из каких отношений должна состоять БД и какие атрибуты должны входить в эти отношения. Теория реляционных баз данных обладает мощным инструментом, который способен помочь разработчику оптимальным образом спроектировать структуру отношений базы данных. Этот инструмент - метод нормализации отношений.

Нормализация отношений - пошаговый процесс разложения (декомпозиции) исходных отношений БД на более простые. Каждая ступень этого процесса приводит схему отношений БД в последовательные «нормальные формы». Каждая следующая нормальная форма обладает «лучшими» свойствами, чем предыдущая.

В теории реляционных баз данных принято выделять следующую последовательность нормальных форм:

1) первая нормальная форма (1NF);

2) вторая нормальная форма (2NF);

3) третья нормальная форма (3NF);

4) нормальная форма Бойса-Кодда (BCNF);

5) четвертая нормальная форма (4NF);

6) пятая нормальная форма (5NF).

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

Процесс нормализации основан на понятии функциональной зависимости атрибутов. Говорят, что атрибут В функционально зависит от атрибута А, если в любой момент времени каждому значению атрибута А соответствует не более одного значения атрибута В. Термин «функциональная зависимость» соответствует понятию функции в математике. Если неключевой атрибут зависит от всего составного ключа и не зависит от его частей, то говорят о полной функциональной зависимости атрибута от составного ключа. Если атрибут А зависит от атрибута В, а В зависит от атрибута С, но обратная зависимость отсутствует, то говорят, что атрибут С зависит от А транзитивно.

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

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

Отношение находится в третьей нормальной форме (3NF), если выполняются ограничения второй нормальной формы (2NF), и если все неключевые атрибуты отношения взаимно независимы и полностью зависят от первичного ключа. Можно дать и другое определение. Отношение находится в третьей нормальной форме (3NF), если выполняются ограничения второй нормальной формы (2NF), и в нем отсутствуют транзитивные зависимости неключевых атрибутов от ключа. В большинстве случаев третья нормальная форма служит компромиссом между полной нормализацией и функциональностью в совокупности с легкостью реализации. Как было отмечено выше, существуют нормальные формы, выше третьей (3NF), но на практике они затрудняют разработку структур данных и снижают их функциональность.

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

1) дату заказа;

2) номер заказа;

3) артикул (уникальный номер единицы товара);

4) наименование товара;

5) цену заказанного товара.

Нам необходимо нормализовать приведенную ниже таблицу. Заметим, что она уже находится в 1NF, так как все ее атрибуты атомарны. В СУБД дата - неделимый тип данных, поэтому, хотя дата заказа и состоит из 3 чисел, это - атомарный атрибут.

 

Дата Номер заказа Артикул Наименование Цена
01.09.98     Процессор Pentium 233 MMX  
01.09.98     M/B SOYO SY-5EAS ETEQ-6618  
01.09.98     DIMM 32 Mb  
01.09.98     SVGA PCI 1Mb S3 TRIO 64+  
01.09.98     Процессор Pentium 233 MMX  
01.09.98     DIMM 32 Mb  
02.09.98     SVGA PCI 1Mb S3 TRIO 64+  
02.09.98     Процессор Pentium II 333  
02.09.98     DIMM 32 Mb  
02.09.98     SVGA AGP S3 86C357  

 

В одном заказе может оказаться несколько одинаковых наименований товара, например, можно заказать два одинаковых процессора, поэтому составной атрибут «Дата-НомерЗаказа-Артикул» не может быть первичным ключом. Для того чтобы выполнить требования второй нормальной формы, надо добавить к таблице атрибут, который бы однозначно идентифицировал каждую единицу товара, входящую в заказ. Назовем такой атрибут «ID». Вот приведенное выше отношение в 2NF.

 

ID Дата Номер заказа Арти-кул Наименование Цена
  01.09.98     Процессор Pentium 233 MMX  
  01.09.98     M/B SOYO SY-5EAS ETEQ-6618  
  01.09.98     DIMM 32 Mb  
  01.09.98     SVGA PCI 1Mb S3 TRIO 64+  
  01.09.98     Процессор Pentium 233 MMX  
  01.09.98     DIMM 32 Mb  
  02.09.98     SVGA PCI 1Mb S3 TRIO 64+  
  02.09.98     Процессор Pentium II 333  
  02.09.98     DIMM 32 Mb  
  02.09.98     SVGA AGP S3 86C357  

 

В этой таблице все атрибуты зависят от атрибута ID, но, кроме того, есть зависимость «Наименования» и «Цены» от «Артикула». Требование независимости атрибутов отношения не выполняются (3NF). Для приведения отношения в третью нормальную форму таблицу требуется разбить на три отношения.

Нормализация отношений – не пустая трата времени. Пусть в приведенном примере требуется изменить «Наименование» с «DIMM 32 Mb» на «DIMM 32 Mb SDRAM». В ненормализованном отношении пришлось бы искать и редактировать все строки, содержащие это наименование, а в нормализованной БД изменяется только одна строка одного отношения.

Подробнее с процессом нормализации и с требованиями нормальных форм старше третьей (3NF) можно ознакомиться в литературе по теории реляционных БД.

ID Дата Номер заказа Артикул
  01.09.98    
  01.09.98    
  01.09.98    
  01.09.98    
  01.09.98    
  01.09.98    
  02.09.98    
  02.09.98    
  02.09.98    
  02.09.98    

 

Артикул Наименование
  Процессор Pentium 233 MMX
  M/B SOYO SY-5EAS ETEQ-6618
  DIMM 32 Mb
  SVGA PCI 1Mb S3 TRIO 64+
  Процессор Pentium II 333
  SVGA AGP S3 86C357

 

Артикул Цена
   
   
   
   
   
   


Поделиться:


Последнее изменение этой страницы: 2016-08-10; просмотров: 1057; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.22.79.165 (0.012 с.)