Главная » SQL, Базы данных » СЛИВШИЕСЯ СТОЛБЦЫ TransRelational

0

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

Начнем с примера, в котором применяется только один файл. Рассмотрим  отношение спецификации материалов MMQ, показанное на рис. А. 14 (это — вариант рис. 4.6 из главы 4). Вначале  определим,  что  произойдет  в   этом  примере  без   слившихся  столбцов,  затем рассмотрим,  как  изменится  ситуация  после  перехода  к  использованию  метода  слияния столбцов. Таким образом, на рис. А.15 показан возможный вариант файла, соответствующий отношению на рис. А. 14, на рис. А. 16 приведена соответствующая сжатая таблица значений полей,  а  на  рис.  А.  17—   соответствующая  "предпочтительная" таблица  реконструкции

Рис. А. 14. Отношение спецификации материалов MMQ

записей.

Рис. А.15. Файл для отношения спецификации материалов, показанного на рис. А. 14

Теперь перейдем к изучению способа, в котором применяются слившиеся  столбцы. Снова  вернувшись  к  анализу  отношения  MMQ  (рис.  А.14),  можно  убедиться  в  том,  что атрибуты MAJOR_P# и MINOR_P# относятся к одному и тому  же типу; это означает, что поля MAJOR_P# и MINOR_P# соответствующего файла также относятся к одному и тому же типу.  Поэтому  их  можно  поставить  в  соответствие  одному  и  тому  же  столбцу  таблицы значений полей. На рис.  А.  18  показано, что при  этом происходит. Из  данного описания следует приведенные ниже выводы.

1.      Выполнено слияние столбцов MAJOR_P# и MINOR_P# В ОДИН столбец. Этот столбец содержит все значения полей (т.е. номера деталей), которые прежде находились либо в столбце MAJOR_P#, либо в столбце MINOR_P# той  таблицы, какой она была до слияния. После слияния дубликаты были удалены.

Рис. А. 16. Сжатая таблица значений полей для файла, приведенного на рис. А. 15

Рис. А. 17. Таблица реконструкции записей для файла, приведенного на рис. А. 15

Рис. А.18. Приведенная на рис. А. 16 таблица значений полей после слияния первых двух столбцов

2.             Поэтому каждая ячейка в слившемся столбце содержит единственный номер детали вместе с двумя диапазонами строк. Первый диапазон строк показывает, в каких строках несжатой  таблицы  значений  полей   соответствующий  номер  детали  присутствует  в качестве номера "основной" детали, а второй диапазон показывает, в каких строках этой несжатой  таблицы  значений  полей  соответствующий  номер  детали  присутствует  в качестве  номера "дополнительной" детали.                                                                                Эти диапазоны строк являются по сути теми же, как и в предыдущей версии таблицы значений полей, если не считать того,  что  среди  них  иногда  появляется  специальный  пустой  диапазон  строк  "[ :]" , который используется, если указанный номер детали вообще не присутствует в

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

3.         В этой слившейся таблице слившимся столбцом является столбец 1, а столбец QTY становится столбцом 2 (теперь в конечном итоге эта таблица имеет только два стол-бца, а не три). Столбец 2 (столбец QTY) является таким же, каким он был на рис. А. 16.

4.       Таблица реконструкции записей остается неизменной4. Но теперь столбцы 1 и 2 этой таблицы оба соответствуют столбцу 1 (слившемуся столбцу) таблицы значений полей; столбец 1 относится к первому диапазону строк в этом слившемся столбце, а столбец 2 — ко второму. Столбец 3 таблицы реконструкции записей теперь относится к столбцу 2 таблицы значений полей.

Эта идея слияния столбцов позволяет достичь многих преимуществ; но в данном разделе будет описано только одно из них. Оно касается операций соединения. Предположим, что необходимо соединить отношение MMQ с самим собой, сопоставляя номера дополнительных деталей из "первой копии" (в том виде, какая она есть) данного отношения с номерами основных деталей из "второй копии". В таком случае достаточно выполнить единственный проход по слившейся таблице значений полей, чтобы узнать, какие кортежи с какими соединяются! Например, строка 3 этой таблицы (которая содержит номер детали РЗ) показывает "диапазон строк с номерами дополнительных деталей", равный [ 2 :31, а "с номерами основных деталей " — равный [7:8] . Из этого непосредственно следует, что и второй, и третий кортежи из "первой копии" отношения MMQ оба соединяются к седьмым и восьмым кортежами из "второй копии". И аналогичные замечания относятся ко всем остальным строкам этой слившейся таблицы значений полей. Поэтому фактически соединение по методу сортировки—слияния может быть получено без выполнения5 сортировки (как было указано выше в данном приложении) и даже вообще без слияния!

Примечание. Безусловно, ни в одном отношении нет такого понятия, как "второй" кортеж,  "третий" кортеж или  "i-й" кортеж для  любого значения i;  кортежи в  отношении не  упорядочены. Под  этой сомнительной формулировкой подразумеваются приведенные ниже соглашения.

■      Допустим, что F1 — файл, реконструированный из таблицы значений полей, приведенной на рис. А.18, путем обработки столбца MAJOR_P# таблицы реконструкции записей на рис. А.17 в последовательности сверху вниз. Тогда "первой копией" отношения MMQ является файл Fl, a "i-м кортежем" этой копии — уникальный кортеж отношения  MMQ, который соответствует i-й записи файла F1.

■    Аналогичным образом, допустим, что F2 — это файл, реконструированный из таблицы значений полей, приведенной на рис. А.18, путем обработки столбца MINOR_P# таблицы реконструкции записей на рис. А.17 в последовательности сверху вниз. Тогда "второй копией" отношения MMQ является файл F2, а "i-м кортежем" этой копии является уникальный кортеж отношения MMQ, который соответствует i-й записи файла F2.

В завершение данного раздела еще раз подчеркнем то, что метод слияния столбцов может  применяться не только к одному, но и к нескольким файлам. Например, в случае отношения поставщиков и деталей можно было бы предусмотреть только одну таблицу значений полей (подвергнутую и слиянию, и  сжатию)  для  всей  базы  данных,  и  в  этой  таблице  предусмотреть  один  столбец  для  номеров поставщиков (из переменных отношения S и SP), один для номеров деталей (из переменных отношения SP и Р), один для названий городов (из переменных отношения S и Р) и т.д. В действительности, модель TR  позволяет  включать  в  таблицу  значений  полей  такие  значения,  которые  в  данный  момент фактически не находятся ни в одном из отношений базы данных, поэтому TR может рассматриваться в полном   смысле  этого   слова   как   "доменно-ориентированное"  представление  всей   базы  данных. Дополнительная информация на эту тему приведена в[А.1 ].

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

5  Точнее, эти операции сортировки и слияния не осуществляются на этапе прогона; вместо этого они выполняются заблаговременно, при формировании таблиц значений полей и таблиц реконструкции записей (по сути, на этапе загрузки данных).

Источник: Дейт К. Дж., Введение в системы баз данных, 8-е издание.: Пер. с англ. — М.: Издательский дом «Вильямс», 2005. — 1328 с.: ил. — Парал. тит. англ.

По теме:

  • Комментарии