ГРУПУВАННЯ І Розгрупування

Той факт, що можуть існувати відносини з атрибутами, значеннями яких є відносини, в свою чергу призводить до необхідності мати оператори, звані тут GROUP (групування) і UNGROUP (Розгрупування), для прямого і зворотного перетворення відносин, які містять такі атрибути, у відносини, які їх не містять, наприклад, як показано нижче

SP GROUP {Р #, QTY} AS PQ

Якщо розглядаються дані, зазвичай вживані в цій книзі як приклад, то виконання цього виразу призведе до отримання результату, показаного на рис 712

Примітка Рекомендуємо читачеві стежити за даним малюнку за наведеними нижче поясненнями, оскільки вони є досить абстрактними (автор висловлює свої співчуття, але нічого не може зробити)

Почнемо це опис за такого зауваження, що первісне вираження

SP  GROUP   {   P#,   QTY   }   AS   PQ

можна читати як групувати SP по s #, де s # – єдиний атрибут SP, не включений до специфікації GROUP Результатом є ставлення, яке визначене в такий спосіб

По-перше, його заголовок виглядає так, як показано нижче

{   S#   S#,    PQ  RELATION   {   P#   P#,   QTY  QTY   }    }

Іншими словами, він складається з атрибуту PQ зі значенням у вигляді відношення (де значення PQ, в свою чергу, мають атрибути р # і QTY) поряд з усіма іншими атрибутами SP (безумовно, вираз всі інші атрибути SP тут означає просто атрибут s #) По-друге, його тіло містить точно по одному кортежу для кожного окремого значення s # відносно SP (і ніяких інших кортежів) Кожен кортеж в цьому тілі складається з відповідного значення s # (скажімо, s) поряд зі значенням PQ (скажімо, pq), які отримані, як описано нижче

■ Кожен кортеж SP замінюється кортежем (скажімо, х), в якому компоненти Р # і

QTY згорнуті в один компонент із значенням у вигляді кортежу (скажімо, у)

■ Всі компоненти у всіх таких кортежів х, в яких значення S # одно s, групуються в одне відношення, РQ, і тим самим утворюється результуючий кортеж із значенням s #, рівним s, і значенням PQ, рівним pq

Рис 712 Групування відносини SP по атрибуту S #

Тим самим підсумковий результат дійсно стає таким, як показано на рис 712 Слід особливо підкреслити, що цей результат не включає жодного кортежу для постачальника S5 (оскільки такі кортежі в даний час не включає і змінна відносини SP) Відзначимо, що результат виразу R GROUP {А1, А2, , An} AS в має ступінь, рівну nR п + 1, де nR-ступінь відношення R Тепер перейдемо до розгляду операції розгрупування Припустимо, що SPQ – відношення, показане на рис 712 У такому випадку наступний вираз (що цілком природно) дозволяє знову отримати звичайне ставлення SP, що застосовується в даній книзі як приклад

SPQ UNGROUP PQ

А саме, це вираження призводить до отримання відносини, яке визначене в такий спосіб

По-перше, його заголовок виглядає так, як показано нижче

{   S#   S#,   P#   P#,   QTY  QTY   }

Іншими словами, заголовок складається з атрибутів Р # і QTY (похідних від атрибута

PQ), поряд з усіма іншими атрибутами SPQ (тобто в даному прикладі просто поряд

з атрибутом S #) По-друге, тіло містить точно по одному кортежу для кожного поєднання кортежу в SPQ і кортежу у значенні PQ, яке входить в даний кортеж SPQ (і більше ніяких інших кортежів) Кожен кортеж в цьому тілі складається з відповідного значення S # (скажімо, s), поряд зі значеннями Р # і QTY (скажімо, р і q), які отримані, як описано нижче

■ Кожен кортеж SPQ замінюється Разгруппировать безліччю кортежів, в якому є по одному кортежу (скажімо, х) для кожного кортежу у значенні PQ даного кортежу SPQ

■ Кожен такий кортеж х містить компонент S # (скажімо, s), рівний компоненту S # з розглянутого кортежу SPQ, і компонент із значенням у вигляді кортежу (скажімо, у), рівний деякого кортежу з компонента PQ, який входить у розглянутий кортеж SPQ

■ Компоненти у кожного такого кортежу х, в якому значення S # одно s, раз повертаються в окремі компоненти Р # і QTY (скажімо, р і q), що призводить до отримання результуючого кортежу із значенням s #, рівним s, значенням Р #, рівним р, і значенням QTY, рівним q

Тому кінцевим результатом, як і було сказано, стає звичайне ставлення SP, що розглядається в даній книзі як приклад

Слід зазначити, що результат операції R UNGROUP в (де відносини, які є значеннями атрибута в багатозначно у вигляді відношення, мають заголовок {Al, A2, .., An }) Набуває ступінь, рівну nR + n-1, де nR – ступінь R

Цілком очевидно, що операції GROUP і UNGROUP при спільному використанні надають можливості, які прийнято називати реляційними операціями nest (Перетворити звичайну структуру у вкладену) і unnest (Перетворити вкладену структуру в звичайну) Але автор воліє введену тут термінологію (групувати / розгрупувати), оскільки термінологія nest / unnest викликає асоціації з поняттям відносин NF2 [610], а це поняття автор не підтримує

Для повноти опису на завершення цього розділу наведені деякі зауваження, що стосуються оборотності операцій GROUP і UNGROUP (хоча автор визнає, що дані зауваження при першому читанні можуть виявитися не зовсім зрозумілими) Якщо виконується операція групування деякого відношення r певним чином, то завжди існує зворотна операція розгрупування, що дозволяє знову отримати колишнє ставлення r Але якщо какимто чином виконується розгрупування деякого відношення r, то зворотна операція групування, що дозволяє знову отримати ставлення r, може існувати або не існувати Нижче наведений один приклад (заснований на тому прикладі, який можна знайти в [64]) Припустимо, що ми починаємо з відносини TWO (рис 713) і разгруппіровиваем його для отримання відносини THREE Якщо ж тепер буде виконано групування відносини THREE по атрибуту А (і результуючому атрибуту RVX зі значенням у вигляді відношення знову буде присвоєно таке ж імя), то буде отримано ставлення ONE, а не TWO

Якщо після цього буде виконано розгрупування відносини ONE, МИ повернемося до відношення THREE, а як вже було показано, ставлення THREE може бути згруповано для отримання відносини ONE таким чином, операції групування і розгрупування

дійсно є зворотними один одному для даної конкретної пари відносин Слід зазначити, що стосовно ONE атрибут RVX є функціонально залежним від атрибута А (це дійсно так, оскільки відношення ONE має кардинальність один) 8 Взагалі кажучи, фактично можна стверджувати, що якщо відношення r має атрибут RVX зі значенням у вигляді відношення, то розгрупування r стосовно до RVX є оборотним, якщо і тільки якщо одночасно задовольняються такі дві умови:

▪ жоден з кортежів r не має як значення RVX пусте ставлення

атрибут RVX є функціонально залежним від комбінації всіх інших атрибутів r

Рис 713 Приклад, який показує, що операції розгрупування і

(Повторного) групування не завжди є оборотними

710 РЕЗЮМЕ

У даній главі розглядалася реляційна алгебра У початку цієї глави була ще раз підкреслено важливість реляційного властивості замкненості і вкладених реляційних виразів і показано, що для обгрунтованої трактування поняття замкнутості необхідно ввести деякі правила виведення типу ставлення На підставі цих міркувань був передбачений оператор RENAME

Оригінальна алгебра складалася з восьми операцій – традиційних операцій з множинами, таких як обєднання, перетин, різниця і твір (Всі вони були трохи модифіковані з урахуванням того, що їх операндами є саме відносини, а не довільні множини), а також спеціальних реляційних операцій скорочення, проекції, зєднання і поділу (Але в разі поділу було відзначено, що запити, що вимагають застосування цієї операції, можуть бути завжди сформульовані в термінах реляційних операцій порівняння, і багато хто знаходить, що такі формулювання інтуїтивно простіше для розуміння) До цього початкового набору операцій були додані операції RENAME (Як уже було сказано), SEMI JOIN, SEMIMINUS, EXTEND  І

8 Рекомендуємо читачеві звернутися до глави 11 і, зокрема, відзначимо, що в цьому формулюванні йдеться про ту форму функціональної залежності, яка стосується значень відносин (а не про більш звичайній формі, яка стосується змінних відносини)

SUMMARIZE, а також була згадана операція TCLOSE і описані операціїGROUP і UNGROUP Зокрема, слід відзначити надзвичайну важливість описаної в цьому розділі операції EXTEND (В певному сенсі вона є такою ж важливою, як і зєднання)

Потім було відзначено, що не всі алгебраїчні операції є

примітивними (Тобто багато з них можуть бути визначені в термінах інших) на думку автора, така ситуація є виключно сприятливою З цього приводу в [73]

сказано: Процес визначення мови повинен починатися з небагатьох ретельно вибраних примітивних операцій .. Наступне його розвиток повинен в міру можливості здійснюватися шляхом визначення нових операцій в термінах .. операцій, визначених раніше ; іншими словами, розвиток мови відбувається по шляху визначення корисних скорочених форм Якщо розглянуті скорочені форми обрані успішно, вони не тільки дозволяють значно зменшити обсяг роботи з програмування, а й дають можливість перейти фактично на більш високий рівень абстракції, оскільки служать як свого роду наборів концепцій, які природним чином поєднуються один з одним (Крім того, подібні скорочені форми відкривають шлях до більш ефективної реалізації) У цьому звязку слід зазначити, що (як зазначено в розділі 76) в [33] описана свого роду алгебра з скороченим набором

команд , звана алгеброю А, яка спеціально призначена для підтримки процесу систематичного визначення все більш потужних операцій в термінах дуже невеликого набору примітивів фактично в цій роботі показано, що всі функціональні можливості описаної в цьому розділі оригінальної алгебри, поряд з операціями RENAME, EXTEND, SUMMARIZE, GROUP, І UNGROUP, можуть бути досягнуті З ДОПОМОГОЮ всього лише двох примітивів, званих remove і nor

Повернемося до нашого резюме Далі в цій главі було показано, як можна обєднувати операції алгебри у вирази, які служать для багатьох цілей, в тому числі для вибірки, відновлення та деяких інших Крім того, дуже коротко була описана ідея перетворення таких виразів у цілях оптимізації (Але ця ідея розглядається набагато більш докладно в главі 18)

Крім того, було показано, що використання конструкції WITH дозволяє спростити процес складання складних виразів ця конструкція, по суті, дає можливість вводити імена для подвираженій і тим самим формулювати складні вирази поетапно, не порушуючи при цьому фундаментального властивості Непроцедурного розглянутої тут алгебри

У цій главі було також зазначено, що деякі операції є асоціативними і комутативними, і наведені деякі формули еквівалентності (Наприклад, було показано, що будь-яке відношення R еквівалентно деякого скорочення R і деякої проекції R) Крім того, було розглянуто питання про те, що означає виконання операцій зєднання, обєднання і перетину тільки на одному відношенні і взагалі ні на одному відношенні

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

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*