Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы_данных.docx
Скачиваний:
101
Добавлен:
15.06.2014
Размер:
719.51 Кб
Скачать

Раздел 2.3. Преобразование сетевых моделей к иерархическому виду.

Правило преобразования

Если какой-либо тип записей имеет более 1го предка (установлено несколько типов входящий связей 1:М), тогда каждому предку приписывается свой дублированный экземпляр потомка, причем все дубли кроме одного содержат только ключевые атрибуты.

Схема преобразования

После преобразования

Дублирование потомков

Такое преобразование используется в 2х уровневых иерархических СУБД.

Данное преобразование является основой построения иерархии измерений для многомерных моделей представления данных.

Раздел 3. Реляционная модель данных.

Предложена Коддом.

Представление данных, основой которой являются таблицы, называется реляционным, если:

  1. в таблице отсутствуют дублированные строки (картежи)

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

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

  4. все таблицы в описании имеют уникальное наименование

  5. каждый элемент таблицы является элементом данных либо адресатом.

  6. связи между таблицами устанавливают за счет одноименных атрибутов (между одноименными атрибутами, т.е. связи типизированы)

Название от relation – отношение.

Перечисленные в требованиях к представлению является 1 НОРМАЛЬНОЙ ФОРМОЙ (1НФ).

Раздел 3.3. Реляционная алгебра.

Теоретической основой языков запросов к реляционным БД является реляционная алгебра. Операндами в реляционной алгебре являются отношения Ri и их реализации – таблицы ri, ki – арность отношения Ri (количество столбцов); ni – количество строк в Ri.

Базисный набор операций:

1. Объединение: R=R1 R2. Результат операции R содержит кортежи из R1 и R2. Ограничения на операнды: а) k1=k2; б) схемы R1 и R2 также должны совпадать; в) дублирующие кортежи в результат включаются только один раз. Пример:

SQL: R1 UNION R2;

2. Разность: R=R1 \ R2. Результат операции R включает в себя кортежи из R1, которых нет в R2. Ограничения на операнды: а) k1=k2; б) схемы R1 и R2 также должны совпадать. Пример:

SQL: к сожалению в стандарте SQL нет соответствующего оператора, например, как в ORACLE: R1 MINUS R2;, поэтому можно воспользоваться другими конструкциями, например: DELETE * FROM R1 WHERE ID IN (SELECT ID FROM R2);, где ID – одиночное значение некоторого выражения, например первичного ключа в R1 и R2.

3. Декартово произведение. R=R1 R2. Результат операции R: каждый кортеж из R1 дополняется кортежем из R2; арность результата – k = k1+k2; n = n1*n2. Результат декартова произведения не может содержать дублирующие кортежи.

Пример: пусть

тогда

SQL: SELECT * FROM R1, R2;

4. Селекция: R = F(Ri), где F - логическая формула над атрибутами из Ri. Результатом операции является таблица R, содержащая те же столбцы, что и Ri и строки из Ri, подстановка которых в F дает значение "истина". Пример: R = C=c1 (R1):

Результат имеет ту же схему, что и аргумент операции (тот же набор столбцов). Кортеж аргумента попадает в результирующее отношение, если при подстановке в формулу F он дает значение «истина».

SQL: SELECT * FROM Ri WHERE F;

  1. Проекция: R = X(Ri), где X - подмножество атрибутов из отношения Ri. Результирующее отношение имеет схему, совпадающую с множеством X, и содержит кортежи отношения Ri, из которых «вырезаны» значения, соответствующие атрибутам X. Дублирующие кортежи из результата удаляются. Вырезка по столбцам. Пример: R = BC(R1)

SQL: SELECT DISTINCTROW FROM R1;

Дополнительный набор операций:

  1. Пересечение:

Те же ограничения, что у второй базисной операции. Результат содержит кортежи, принадлежащие к и к.

  1. Соединение: , где

  1. Эквисоединение: Частный случай соединения, когда есть знак =

  2. Естественное соединение:

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

Выражение через базисный набор: R=X(F(R1R2)), где F=i=1,…,k(R1.Ai=R2.Ai)– конъюнкция по всем одноименным атрибутам, X= R1R2 – объединение атрибутов из R1 и R2.

R1 = поставщик ([А1] , [А2] наименование поставщика, [А3] адрес поставщика)

R2 = потребители ([А4] номер потребителя, [А5] наименование потребителя, [А6] адрес потребителя)

R3 =детали ([А7] номер детали, [А8] наименование детали)

R4 = поставка ([А1] номер поставщика, [А4] номер потребителя, [А7] номер детали, [А9] цена детали, [А10] дата поставки)

ФОРМУЛИРУЕМ ЗАПРОС: получить список деталей, которые были поставлены поставщиком , потребителемв период с 20.09.10 по 21.10.10

Для формализации запроса воспользуемся так называемым универсальным реляционным запросом:

Проекция

Свойства операции:

  1. Коммутативность:

Любая операция соединения, в том числе и естественного.

  1. Ассоциативность:

- определена на атрибутах и

- определена на атрибутах и

  1. Свойство проекции:

  1. Свойство селекции:

- определена на атрибутах из

- определена на атрибутах из

Правила формальной оптимизации запроса:

  1. Операция селекции должна выполняться раньше, чем декартово произведение и соединения (см. св-во 4).

  2. Операция проекции должна выполняться раньше, чем декартово произведение и соединение (см. св-во 3).

  3. Операция селекции и проекции должны выполняться совместно.

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

Пример: