ОНОВЛЕННЯ ДАНИХ У УЯВЛЕННЯХ

Подання – це змінні відносини і тому (як і всі змінні) мають бути оновлюваними за визначенням Але завдання поновлення уявлень завжди розглядалася як дуже складна Проблема поновлення даних в уявленнях може бути сформульована таким чином Нехай дана деяка операція оновлення даних в заданому поданні Які оновлення та в які вихідні базові змінні відносини потрібно внести, щоб реалізувати вихідне оновлення уявлення Формальний опис проблеми виглядає так Нехай D – це база даних, а V – подання, визначене на D (тобто уявлення, визначення якого є функцією X багатьма D), наступним чином (як показано в розділі 103)

V   =   X    (   D   )

Тепер припустимо, що Uо – це операція оновлення в поданні V Так як Uо можна вважати операцією, результат виконання якої полягає у зміні її фактичного параметра, то допустимо представити її в наступному вигляді

UO    (   V   )    =   UO    (   X    (   D   )    )

Тоді проблема виконання оновлення в поданні зводиться до пошуку такої операції оновлення Uо на множині D, для якої істинно наступний вираз

UO    (   X    (   D   )    )    =   X    (   UO     (   D   )    )

Операція подібного виду потрібно з тієї причини, що реально існує тільки безліч D (подання за визначенням віртуальні) і виконувати операції оновлення безпосередньо в уявленнях як таких неможливо

Слід підкреслити, що протягом останніх років проблема оновлення уявлень була предметом низки важливих досліджень, в результаті проведення яких було розроблено безліч різних підходів до вирішення цієї проблеми Детальні відомості про ці дослідження можна знайти, наприклад, в [104], [107] – [1010], [1012] До них належать, зокрема, пропозиції Кодда (Codd) по реляційної моделі RM/V2 [62] У цій главі викладено відносно новий підхід [106], [1011], менш довільний(Характеризується наявністю кращого теоретичного обгрунтування) в порівнянні з застосовувалися раніше підходами Але найважливішим його перевагою є сумісність з найкращими засобами попередніх підходів Крім того, новий підхід дозволяє вважати оновлюваних набагато більш широкий клас уявлень в порівнянні з колишніми підходами При цьому підході фактично всі подання вважаються потенційно оновлюваними, за тієї умови, що не порушуються встановлені обмеження цілісності

Ще раз про золоте правило

Нагадаємо першу (більш просту) версію золотого правила, представлену в попередньому розділі

Ніяка операція оновлення не повинна ні за яких умов привласнювати змінної відносини таке значення, при якому предикат змінної відносини приймає значення FALSE

Інша (трохи менше формальна) версія цього золотого правила наведена нижче

Ні одна змінна відношення ні за яких умов не повинна суперечити своєму власному предикату

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

При визначенні цього правила підкреслювалося, що воно застосовується до всімзмінним відносини, як до базових, так і до похідних Зокрема, було зазначено,

що похідні змінні відносини також мають предикати, як і повинно бути

згідно принципом взаємозамінності Таким чином, ці предикати повинні бути відомі системі, що дозволить їй правильно виконувати поновлення уявлень Що ж собою являє предикат уявлення Очевидно, що нам перш за все необхідний набір правил виводу предиката, такий що якщо відомий предикат (предикати) на вході (входах) будь-якої реляційної операції, то з його допомогою можна визначити предикат на виході цієї операції Якщо буде отриманий такий набір правил, то ми зможемо вивести предикат вистави з предиката базової змінної відносини (або змінних відносини), в термінах якої прямо чи опосередковано було визначено це подання (Безумовно, предикати для всіх базових змінних відносини можна вважати відомими: вони являють собою логічну конюнкцію всіх обмежень, які були оголошені для даної базової змінної відносини)

Насправді, визначити необхідний набір правил дуже легко – вони йдуть безпосередньо з визначень реляційних операторів Наприклад, якщо А і В – дві довільні змінні відносини деякого типу, що мають предикати, відповідно, РА і РМ, а подання З визначено як A INTERSECT В, то очевидно, що предикат PC цього подання буде визначатися виразом (PA) AND (РВ) Доказ цього твердження наведено нижче

■ Кортеж t зявиться в уявленні з лише за тієї умови, що він присутній одночасно і в поданні А, і у поданні до

■ Якщо кортеж t присутній в поданні А, то вираз РА (t) має бути істинним (тут вираз PA (t) застосовується як позначення висловлювання, яке стає результатом конкретизації предиката РА з використанням значень атрибутів t в якості формальних параметрів)

■ Аналогічним чином, якщо кортеж t присутній в поданні В, то має бути істинним вираз РВ (t)

■ Отже, має бути також істинним вираз РА (t) AND РВ (t) це означає, що предикат РС являє собою результат конкатенації предикатів РА і РВ (що й потрібно довести)

Про інші реляційних операторах мова піде нижче в цьому ж розділі

Таким чином, похідні змінні відносини автоматичноуспадковують певні обмеження від тих змінних відносини, на основі яких вони визначені Однак цілком можливо, що деяка похідна мінлива відносини стане обєктом певних додаткових обмежень, що накладаються крім і

понад успадкованих обмежень [33] Тому для похідних змінних відносини бажано мати можливість явно встановлювати необхідні обмеження (наприклад, вводити обмеження потенційного ключа для подання) Мова Tutorial D дійсно підтримує таку можливість Однак для спрощення викладу надалі ми будемо найчастіше ігнорувати цю можливість

Принципи створення механізму оновлення уявлень

Існує ще кілька важливих принципів, які повинні дотримуватися при будь-якому систематичному підході до проблеми оновлення уявлень (Безумовно, золоте правило – Найважливіше з них, але не єдине) Перерахуємо ці принципи

1 Проблема оновлюється ™ уявлень є семантичної, а не синтакси чеський Іншими словами, її рішення не залежить від обраної форми запису оп ределения подання Наприклад, два наведених нижче подання се мантичними еквівалентні

VAR V VIEW

S WHERE STATUS &gt 25 OR CITY = Paris

VAR V VIEW

( S WHERE STATUS &gt 25 ) UNION ( S WHERE CITY = Paris )

Очевидно, ці обидва подання повинні бути одночасно або оновлюваними, або не оновлюваними (насправді вони, безумовно, повинні бути оновлюваними) Однак всупереч цьому утвердженню і в стандарті SQL, і в більшості існуючих на даний момент продуктів SQL, прийнятий абсолютно необгрунтований підхід, що перше з наведених уявлень має бути обновлюваним, а другий – ні (подробиці приведені в розділі 106)

2 Як випливає з наведених вище міркувань, механізм оновлення представ лений повинен діяти правильно і в тих окремих випадках, коли уявлення насправді є базовою змінною відносини, оскільки будь-яка базо вая мінлива відносини в семантично неотличима від подання V, оп ределенного на підставі операції в U NION в, або в I N TE R S EC T В, ІЛ І

У WHERE TRUE, або будь-якого іншого виразу, тотожне еквівалентного змінної відносини в Таким чином, правила оновлення, встановлені, наприклад, для представлення, яке визначено за допомогою операції обєд нання v = в UNION В, повинні давати той же результат, як і у випадку, коли

розглянута операція оновлення застосовується безпосередньо до базової змінної відносини в Інакше кажучи, хоча тема даного розділу і звучить як оновлення уявлень, насправді в загальному випадку тут розглядається оновлення змінних відносини Тому тут розглядається теорія обнов лення, застосовна до всіх змінним відносини, а не тільки до уявлень

3 У застосовуваних правилах поновлення повинна дотримуватися симетричність у всіх випадках, коли вона має сенс Наприклад, правило видалення кортежу з подання, визначеного як перетин V = A INTERSECT В, не повинна допускати довільного видалення кортежу з змінної відносини А, але не з в, навіть у тому випадку, якщо і таке одностороннє видалення кортежу напевно по тягне за собою надалі видалення цього кортежу з розглянутого перед уявлення У подібному випадку має бувальщина передбачено видалення кортежу з обох змінних відносини А і B (Іншими словами, не повинно бути какойлибо неоднозначності Завжди повинен існувати єдиний спосіб реализа ції цього оновлення, який ефективно здійснюється у всіх випадках

Зокрема, не повинно бути ніяких логічних відмінностей між представлення ми, визначеними Какау INTERSECT Bі B INTERSECT А)

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

5 Для спрощення синтаксису бажано розглядати операцію UPDATE як з кращения запис послідовності операцій видалення і вставки (DELETE- INSERT) саме так ми і будемо її розглядати Це скорочення цілком при емлемой при дотриманні наступних умов

■ Не повинно здійснюватися жодних перевірок предикатів змінних відно сини в ході виконання будь-якого необхідного оновлення Під цим мається мевается, що розширена запис операції UPDATE виглядає як DELETEINSERT-перевірка, а не як DELETE-перевірка-INSERT—перевірка При чину цього полягає в тому, що операція DELETE може на час порушити істинність предиката змінної відносини, притому що закінчена опе рація UPDATE її не порушує Наприклад, припустимо, що змінна від носіння R містить рівно 10 кортежів, і розглянемо вплив операції UPDATE на деякий кортеж змінної відносини R, за тієї умови, що згідно предикату цієї змінної відносини R, в ній не може містити ся менше 10 кортежів Очевидно, що перевірка результатів виконання опе рації DELETE завершиться невдачею через порушення умов предиката

■ Тригерні процедури також ніколи не повинні активізуватися в ході виконання будь-якої операції оновлення (Фактично тригерні процедури активізуються після завершення операції, безпосередньо перед перевіркою предиката відношення)

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

6 Всі оновлення даних в уявленнях повинні бути реалізовані як обновле ня того ж типу у вихідних змінних відносини Інакше кажучи, операції вставки (INSERT) відображаються в операції вставки, а операції видалення (DELETE) відображаються в операції видалення (як було сказано вище, операції оновлення UPDATE можна не розглядати) Припустимо зворотне, тобто що існує певний тип уявлень (скажімо, уявлення, що визначаються на основі операції обєднання), для яких операції INSERT відображаються в операції DELETE у вихідних змінних відносини Але тоді операції INSERT для базових змінних відносини також повинні в якихось випадках відображатися в операції DELETE Цей висновок безпосередньо випливає з твердження (як ми вже переконалися в ході міркувань в п 2), що будь-яку базову змінну від носіння В можна представити у вигляді семантично ідентичного подання V = в UNION в Аналогічне міркування можна застосувати і для представле ний інших типів (подань на основі операцій скорочення, проекції, перетину і тд) Однак твердження, що в базових змінних відносини операції вставки даних можуть насправді представлятися операціями видалення, – очевидний абсурд Таким чином, твердження, що операції INSERT і DELETE в уявленнях відображаються у відповідні операції INSERT і DELETE в базових змінних відносини, є істинним

7 У загальному випадку правила оновлення при їх застосуванні до заданого представле нию V визначають операції, які повинні бути застосовані до змінним від носіння, на яких визначено дане подання V Ці правила повинні правильно спрацьовувати навіть у тому випадку, якщо ті змінні відносини, на ос нове яких визначено дане подання, в свою чергу, також є уявленнями Іншим словами, правила повинні допускати можливість ре курсивного застосування Звичайно, якщо спроба оновити вихідну змінну відносини з якихось причин завершиться невдало, то і початкова операція оновлення не буде виконана Іншими словами, поновлення в уявленнях виконуються за принципом все або нічого, точно так само, як і у випадку базових змінних відносини

8 Правила не повинні грунтуватися на припущенні, що база даних добре спроектована, тобто повністю нормалізована (подробиці приведені в гла вах 12 і 13) Проте, виконання встановлених правил може призвести до дещо несподіваних результатів, якщо база даних спроектована действи тельно невдало Це ще раз свідчить на користь необхідності створення добротних проектів бази даних У наступному розділі буде приведено подібний приклад з дещо несподіваними результатами

9 Не повинно існувати ніяких апріорно визнаних вагомими причин того, щоб в будь-якому заданому поданні одні операції оновлення дозволялися, а інші – ні (наприклад, коли дозволена операція DELETE, АЛЕ заборонена опе рація INSERT)

Операції INSERT І DELETE ПОВИННІ бути, наскільки це можливо, взаімообратних

Необхідно зробити одне важливе нагадування Як було показано в розділі 6, реляційні операції, зокрема реляційні оновлення, завжди виконуються на рівні множин, а безліч, що складається з одного кортежу, просто є одним з окремих випадків Більше того, іноді необхідновиконувати оновлення відразу багатьох кортежів (наприклад, якщо операцію оновлення не можна відтворити за допомогою серії оновлень окремих кортежів) Це твердження в загальному випадку вірно як для базових змінних відносини, так і для вистав Для простоти викладу більшу частину обговорюваних правил поновлення уявлень ми будемо формулювати в термінах операцій оновлення окремих кортежів тим не менш, читач не повинен забувати про те, що подібний підхід – це всього лише данина простоті викладу, в деяких випадках навіть надмірна

Далі ми по черзі розглянемо окремі операції реляційної алгебри (обєднання, перетин і різницю), а потім – всі інші операції У перших трьох випадках, зокрема, мається на увазі, що мова йде про подання, що визначає вираз якого має, відповідно, одну з наступних трьох форм: A UNION в, A INTERSECT в і A MINUS в, де А і в, в свою чергу, є деякими реляційними виразами (тобто не обовязково представляють собою базові змінні відносини) Змінні відносини А і в повинні мати один і той же реляційний тип Відповідними предикатами розглянутих змінних відносини є РА І РВ

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

Операція обєднання

Наведемо правило вставки для представлення виду UNION В

■&nbsp Правило INSERT Знову додається кортеж повинен задовольняти або предикату РА, або предикату РВ, або обом предикатам одночасно Якщо новий кортеж задовольняє предикату РА, то цей кортеж повинен бути вставлений в змінну відносини А (зауважимо, що операція вставки може мати побічний ефект, в результаті якого новий кортеж буде вставлений і в змінну відносини в) Якщо новий кортеж задовольняє предикату РВ, то він вставляється і в змінну відносини в, але лише в тому випадку, якщо він ще не вставлений в цю змінну стосунки внаслідок побічного ефекту від вставки кортежу в змінну відносини А

Пояснення Новий кортеж повинен задовольняти принаймні одному з предикатів, РА або РВ, тому що в противному випадку даний кортеж не буде включено до обєднання A UNION в, оскільки він не буде задовольняти предикату похідної змінної відносини для обєднання A UNION В, а саме – (PA) OR (РВ) (Крім того, ми припускаємо, хоча таке припущення і не є строго обовязковим, що новий кортеж не повинен в даний момент присутні ні в змінної відносини А, ні у змінній відносини в, так як в іншому випадку це означало б спробу вставити вже існуючий кортеж) Якщо припустити, що перераховані умови задовольняються, то новий кортеж буде вставлений в змінну відносини А чи змінну відносини в залежно від того, до якої з них цей кортеж логічно належить (можливо також, що він логічно належить до обох)

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

тільки як педагогічний прийом Не потрібно думати, що СУБД повинна буде виконувати операцію вставки саме в тій послідовності, яка вказана у визначенні правила Насправді, згідно принципом симетрії (принцип 3, наведений у попередньому підрозділі), при вставці кортежу жодна з змінних відносини, А чи в, не має переваг перед іншою Аналогічні поправки ставляться до всіх

правилам, що розглядаються в цьому розділі

Приклади Нехай уявлення uv визначене в такий спосіб

VAR UV VIEW

( S WHERE STATUS &gt 25 ) UNION ( S WHERE CITY = Paris )

Рис 102 Подання UV (приклад значень)

На рис 102 наведені можливі значення даних в цьому поданні, відповідні вживаному в даній книзі наприклад бази даних

■ Нехай кортеж, який необхідно вставити в уявлення UV, має від4 (S6, Smith, 50, Rome) Цей кортеж задовольняє предикату s WHERE STATUS> 25, але не предикату S WHERE CITY = Paris. Отже, новий кортеж вставляється в змінну відносини, що задовольняє предикату s WHERE STATUS> 25 Відповідно до правил вставки кортежів в подання на основі операції скорочення (які є цілком очевидними, як поки зано нижче в цьому розділі), новий кортеж буде вставлений в базову змінну відносини з даними про постачальників, і з цієї причини він також зявиться в поданні, що й потрібно отримати

■ Тепер припустимо, що в уявлення uv потрібно вставити кортеж виду (S 7, Jones, 50, Paris) Цей кортеж задовольняє одночасно двом преди катам – S WHERE STATUS> 25 І S WHERE CITY = Paris. Логічно припустити, що він буде вставлений в обидві змінні відносини, що задовольняють кожному з цих предикатів Проте, слід зауважити, що вставка кортежу в одну з змінних відносини матиме побічний ефект, внаслідок кото рого кортеж виявиться автоматично вставленим і в іншу змінну відно сини Таким чином, другу операцію вставки INSERT ЯВНО виконувати не тре буется

Тепер розглянемо дві різні базові змінні відносини, SA і SB Мінлива відносини SA містить інформацію про постачальників, для яких значення атрибута STATUS перевищує 25, а у змінній відносини SB містяться відомості про постачальників з Парижа (рис 103) Припустимо, що подання uv визначено як обєднання SA UNION SB, і знову розглянемо операцію вставки INSERT двох уже згаданих вище кортежів Вставка кортежу (S6, Smith, 50, Rome) в уявлення UV призведе до вставки кортежу в базову змінну відносини SA, що, мабуть, і потрібно Однак вставка кортежу (S7, Jones, 50, Paris) в уявлення UV призведе до вставки кортежу в обидві змінні відносини SA і SB Отриманий результат логічно коректний, хоча інтуїтивно і не зовсім зрозумілий (саме цей результат в попередньому підрозділі був названий дещо несподіваним) З точки зору автора подібні несподіванки можуть мати місце виключно як наслідок погано спроектованої структури бази даних Зокрема, на його погляд, якщо проект бази даних дозволяє

4 Подібне спрощене позначення для кортежів змінної-відносини використовується у всьому цьому розділі з міркувань наочності

одним і тим же кортежам зявлятися (тобто задовольняти їх предикатам) у різних базових змінних відносини, то це, безумовно, поганий проект Така позиція (можливо, спірна) докладно розглядається в розділі 136 глави 13

Рис 103 Базові змінні відносини SA і SB (приклад значень атрибутів)

Тепер розглянемо правила видалення кортежів з уявлень тіпад UNION в

■&nbsp Правило DELETE Якщо видаляється кортеж належить до змінної відносини А, то він видаляється з неї (зауважте, що дана операція видалення DELETE може мати побічний ефект, внаслідок якого цей же кортеж буде видалений і із змінної відносини в) Якщо після видалення кортежу з змінної відносини А цей кортеж все ще залишається у змінній відносини в, то він буде вилучений і з змінної відносини в

Залишаємо читачеві як вправа підготовку прикладів, що ілюструють дане правило Слід зауважити, що видалення кортежу з змінної відносини А чи в може призвести до каскадному видаленню або до виконання інших активізується дій

І нарешті, розглянемо правило виконання операції оновлення

■&nbsp Правило UPDATE Оновлюваний кортеж повинен бути таким, щоб його оновлена ​​версія задовольняла або предикату РА, або предикату РВ, або обом цим предикатам одночасно Якщо кортеж належить змінної відносини А, то його видаляють з неї без запуску будь-яких активізується дій (каскадного видалення тощо), які можуть бути повязані з виконанням звичайної операції видалення Крім того, не виконується перевірка дотримання умов предиката змінної відносини А Слід зауважити, що ця операція видалення DELETE може мати побічний ефект, внаслідок якого обраний кортеж буде видалений і з змінної відносини в Якщо після видалення із змінної відносини А оновлюваний кортеж все ще зберігається в змінної відносини в, то він видаляється з цієї змінної відносини (знову-таки, без запуску будь-яких активізується дій і перевірки її предиката) Далі, якщо оновлена ​​версія кортежу задовольняє предикату РА, кортеж вставляється в змінну відносини А (ця операція може мати побічний ефект, внаслідок якого нова версія даного кортежу може зявитися і в змінної відносини в) І нарешті, якщо оновлена ​​версія кортежу задовольняє предикату РВ, то кортеж вставляється в змінну відносини в, але тільки в тому випадку, якщо він не був вставлений в дану змінну стосунки внаслідок побічного ефекту від вставки оновленого кортежу в змінну відносини А

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

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

(S5, Adams, 3 0, Athens) у поданні UV з перетворенням в (S5, Adams, 15, Paris) призведе до видалення старого кортежу із змінної відносини SA і його вставці в змінну відносини SB

Операція перетину

Наведемо правила оновлення уявлень виду A INTERSECT В Причому в даному випадку обмежимося просто формулюванням правил без будь-яких додаткових пояснень (вони аналогічні поясненням для правил поновлення обєднань) Єдине, про що слід сказати, – це те, що для вистав виду A INTERSECT в предикат приймає вигляд (PA) AND (PB) Підготовку прикладів застосування наведених нижче правил залишаємо читачеві як вправа

■&nbsp Правило INSERT Новий кортеж повинен задовольняти предикатам РА і РМ одночасно Якщо новий кортеж на поточний момент відсутній у змінній відносини А, то він буде вставлений в цю змінну відносини (зауважте, що операція вставки може мати побічний ефект, внаслідок якого новий кортеж зявиться і у змінній відносини в) Якщо новий кортеж все ще відсутня у змінній відносини в, то він буде вставлений в цю змінну відносини

■&nbsp&nbsp&nbsp&nbsp Правило DELETE Видаляється з уявлення кортеж видаляється з змінної відносини А (зауважте, що ця операція видалення може мати побічний еф фект, в результаті якого видаляється кортеж зникне і з змінної отноше ня в) Якщо видаляється кортеж (все ще) присутній у змінній відносини в, то він буде вилучений і з цієї змінної відносини

■&nbsp&nbsp&nbsp&nbsp Правило UPDATE Оновлюваний кортеж повинен бути таким, щоб його оновлений ная версія задовольняла одночасно обом предикатам, РА і РВ Кортеж уда ляется із змінної відносини А без запуску активізується дій і про перевірки предиката цієї змінної відносини (зауважимо, що дана операція може мати побічний ефект, внаслідок якого кортеж буде видалений і зі змін ної відносини в) Якщо до цього моменту оновлюваний кортеж все ще не був видалений із змінної відносини в, то він буде видалений з неї, знову-таки, без за пуску активізується дій та перевірки предиката Далі, якщо оновлена ​​версія кортежу в даний момент у змінній відносини А відсутній, то вимірюв ненний кортеж буде вставлений в змінну відносини А (зауважте, що операція вставки може також мати побічний ефект, внаслідок якого новий кортеж

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

Операція різниці

Нижче наведені правила оновлення уявлень виду A MINUS в (для уявлень даного виду предикат змінної відносини можна записати як (PA) AND NOT (PB))

■&nbsp&nbsp&nbsp&nbsp Правило INSERT Новий кортеж повинен задовольняти предикату РА і не повинен задовольняти предикату РВ Новий кортеж вставляється в змінну відносини А

■&nbsp&nbsp&nbsp&nbsp Правило DELETE Видаляється з уявлення кортеж видаляється з змінної відносини А

■&nbsp&nbsp&nbsp&nbsp Правило UPDATE Оновлюваний кортеж повинен бути таким, щоб його оновлений ная версія задовольняла предикату РА і не задовольняла предикату РВ Кортеж видаляється з змінної відносини А без виконання активізується дій та перевірки предиката Потім оновлена ​​версія кортежу вставляється в змін ную відносини А

Операція скорочення

Припустимо, що вираз для визначення уявлення V можна задати в наступному вигляді: A WHERE p, а предикатом змінної відносини А є РА Тоді предикат подання v прийме наступний вигляд

(PA)   AND  (p)

Наприклад, предикат для операції скорочення S WHERE CITY = London буде мати вигляд (PS) AND (CITY = London), де PS є предикатом змінної відносини з даними про постачальників Наведемо правила оновлення для вистав виду A WHERE p

■&nbsp&nbsp&nbsp&nbsp Операція INSERT НОВИЙ кортеж повинен задовольняти предикату РА і умові р

Новий кортеж вставляється в змінну відносини А

■&nbsp&nbsp&nbsp&nbsp Операція DELETE Видаляється кортеж видаляється з змінної відносини А

■&nbsp&nbsp&nbsp&nbsp Операція UPDATE Оновлюваний кортеж повинен бути таким, щоб його оновлений ная версія задовольняла і предикату РА, і умові р Кортеж видаляється з змінної відносини А без запуску будь-яких активізується дій і провер ки предиката Потім в змінну відносини А вставляється оновлена ​​версія кортежу

Приклади Нехай уявлення LS визначене в такий спосіб

VAR LS VIEW

S WHERE CITY = London

На рис 104 наведено приклад значень для цього подання

Рис 104 Подання LS (приклад значень)

■ Спроба вставити в уявлення LS кортеж виду (S 6, Green, 20, London) бу дет завершена успішно Новий кортеж буде вставлений в змінну відносини s і, отже, зявиться також у поданні LS

■ Спроба вставити в уявлення LS кортеж виду (S 1, Green, 20, London) закінчиться невдачею, оскільки цей кортеж не задовольняє предикату змін ної відносини S (і, отже, подання LS) Причина помилки в тому, що цей кортеж порушує вимогу унікальності потенційного ключа {S #}

■ Спроба вставити в уявлення LS кортеж виду (Sб, Green, 20, Athens) за вершиться невдало, оскільки цей кортеж порушує умова CITY = London.

■ Спроба видалити з уявлення LS кортеж (S 1, Smith, 20, London) завер шітся успішно Кортеж буде видалений з змінної відносини S і, слідчий але, з уявлення LS

■ Спроба оновити в поданні LS кортеж (S1, Smith, 20, London) з преоб разованием в (S6, Green, 20, London) завершиться успішно Спроби оновити той же кортеж (S 1, Smith, 20, London) з перетворенням в (S1, Smith, 20, London) або в (S1, Smith, 20, Athens) будуть невдалими (у кожному конкурують ном випадку поясніть, чому)

Операція проекції

Цей розділ також починається з розгляду відповідного предиката Нехай атрибути змінної відносини А (з предикатом РА) розділені на дві непересічні групи, припустимо, X і Y Вважаючи, що X і Y представляють собою окремі складові атрибути, розглянемо проекцію А {Х} змінної відносини А по атрибуту х Позначимо один з кортежів цій проекції через (х) Тоді має бути очевидно, що предикатом для цієї проекції, по суті, буде наступний предикат: Для всіх таких х існує таке значення у з домену значень атрибута Y, що кортеж (х, у) задовольняє предикату РА. Наприклад, розглянемо проекцію змінної відносини S за атрибутами S #, SNAME і CITY Для кожного кортежу (s, п, с), який входить в дану проекцію, існує значення статусу t, таке що кортеж (s, n, t, c) задовольняє предикату змінної відносини S

Нижче наведені правила оновлення проекцііА {х}

■&nbsp Правило INSERT Нехай (х) – кортеж, який повинен бути вставлений, і хай у – значення, обиране за замовчуванням з області значень атрибута Y (було б помилкою, якби таке застосовуване за замовчуванням значення не існувало, тобто для атрибута Y застосовувалося б правило значення за замовчуванням заборонені) Тоді кортеж (х, у), який повинен задовольняти предикату РА, буде вставлений в змінну відносини А

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

■&nbsp Правило DELETE З змінної відносини А будуть видалені всі кортежі, у яких значення атрибута х збігається зі значенням атрибута кортежу, що видаляється з уявлення А {X}

Примітка На практиці бажано, щоб безліч атрибутів X включало хоча б один потенційний ключ змінної відносини А, для того щоб кортежу, що видаляє з проекції А {Х}, відповідав єдиний кортеж у змінній відносини А Тим не менше, немає ніяких резонних підстав перетворювати це побажання в жорстку вимогу Аналогічна обмовка відноситься і до операції UPDATE (див нижче)

■&nbsp Правило UPDATE Нехай (х) – це кортеж, який необхідно оновити, а (х

) – Це оновлена ​​версія кортежу (х) Припустимо, що а – це кортеж змінної відносини А, що має ті ж значення атрибутів х, що й кортеж X, а значення атрибутів безлічі Y в кортежі а дорівнюють у Тоді спочатку із змінної відносини А будуть видалені всі кортежі а, відповідають зазначеним вище вимогам, причому без виконання активізується процедур та перевірки предиката відношення Після цього для кожного певного вище значення у в змінну відносини А буде вставлений кортеж (х , у), якщо він задовольняє предикату РА

Примітка Саме в цьому визначенні присутні ті невеликі вдосконалення, що стосуються операції проекції, які згадувалися в правилі 5 оновлення в підрозділі Принципи створення механізму поновлення уявлень (Який знаходиться на початку поточного розділу) Зверніть увагу, що на останньому етапі виконання правила для операції UPDATE (етапі вставки) в кожному вставляється кортежі відновлюються попередні значення атрибутів Y замість звичайної заміни значеннями, використовуваними за замовчуванням, як це має місце при виконанні самостійних операцій INSERT

Приклади Нехай уявлення SC визначено за допомогою наступного виразу

SC  {  S#,  CITY  }

На рис 105 показаний приклад вмісту цього подання

Рис 105 Подання SC (значення, взяті для прикладу)

■ Спроба вставити в уявлення SC кортеж (S 6, Athens) буде успішною

В результаті цієї операції в змінну відносини s буде вставлений кортеж ( S6, n, t,Athens), де л і t є значеннями, які використовуються за замовчуванням для атрибутів SNAME і STATUS, відповідно

■ Спроба вставити в уявлення SC кортеж (S1, Athens) закінчиться невдачею, так як цей кортеж не задовольняє предикату змінної відносини S (а значить, і уявлення SC) Зокрема, вставка цього кортежу порушує вимогу унікальності потенційного ключа {S #}

■ Спроба видалити з уявлення SC кортеж (s1, London) буде успішною

Кортеж постачальника з номером S1 буде видалений з змінної відносини S

■ Спроба оновити кортеж (S 1, London) подання SC з перетворенням в (S 1, Athens) буде успішною Це призведе до оновлення у змінній відно сини S кортежу ( S 1, Smith, 2 0, London) з перетворенням в кортеж (S 1, Smith, 2 0, Athens), але НЕ в кортеж (S1,n, t,Athens), де п і t – соот ветствующие значення за замовчуванням Обовязково зверніть на це увагу

■ Спроба оновити в поданні SC той же кортеж (SI, London) з преобразо ванием в (S 2, London) закінчиться невдачею (поясніть, чому саме)

Залишаємо в якості вправи для читачів аналіз випадку, коли проекція не включає потенційних ключів початкової змінної відносини (такою є, наприклад, проекція змінної відносини s за атрибутами STATUS і CITY)

Операція розширення

Нехай уявлення V створено за допомогою наступного визначального вираження

EXTEND  A ADD   ехр AS   X

Як звичайно, передбачається, що предикатом змінної відносини А є РА

Тоді предикат РЕ подання V матиме такий вигляд, як показано нижче

«РА (а) AND е X = ехр(А)

Тут ті – це кортеж подання V, а а – кортеж, який залишається після видалення компонента X кортежу е (тобто а – це проекція кортежу е по всіх атрибутів змінної відносини А) На трохи формалізованому звичайній мові цю операцію можна описати таким чином

Кожен кортежеу змінній відносини, отриманої в результаті операції розширення, має такі властивості: по-перше, кортежа, створюваний з кортежуедопомогою операції проекції, яка виключає компонент X, задовольняє предикату РА по-друге, значення компонентаX  відповідає результату застосування виразуехрдо кортежу а

Наведемо правила оновлення для вистав, які визначаються з допомогою операції розширення

■&nbsp&nbsp&nbsp&nbsp Правило INSERT Нехай ті – це кортеж, який потрібно вставити в змінну відносини Він повинен задовольняти предикату РЕ У змінну відносини А буде вставлений кортеж а, створений з кортежу е за допомогою операції проекції, виключає компонент х

■&nbsp&nbsp Правило DELETE Нехай ті – це кортеж, який потрібно видалити З змінної відносини А буде видалений кортеж а, створений з кортежу е за допомогою операції проекції, яка виключає компонент х

■&nbsp&nbsp&nbsp&nbsp Правило UPDATE Нехай ті – це кортеж, який потрібно оновити, а е – обнов ленная версія кортежу е, причому кортеж е повинен задовольняти предикату РЕ Спочатку з змінної відносини А без виконання активізується дій та перевірки предиката цієї змінної відносини буде видалений кортеж а, який створений з кортежу е за допомогою операції проекції, яка виключає компонент X Потім в змінну відносини А буде вставлений кортеж а , який створений з кортежу е за допомогою операції проекції, яка виключає компонента

Приклади Нехай уявлення VPX визначено за допомогою наступного виразу

EXTEND P ADD ( WEIGHT * 454 ) AS GMWT

На рис 106 наведено приклад можливих значень цього подання

Рис 106 Подання VPX (ці значення наведені як приклад)

■ Спроба вставити кортеж (Р7, Cog, Red, 12, Paris, 5448) буде завершена ус пешно і призведе до вставки кортежу (Р7, Cog, Red, 12, Paris) в змінну відносини Р

■ Спроба вставити кортеж (Р7, Cog, Red, 12, Paris, 5449) закінчиться невдачею

(Поясніть, чому)

■ Спроба вставити кортеж (P1, Cog, Red, 12, Paris, 5448) закінчиться невдачею

(Поясніть, чому)

■ Спроба видалити кортеж з ключем Р1 буде успішною і призведе до видалення кор тежа з ключем Р1 із змінної відносини Р

■ Спроба оновити кортеж з ключем Р1 шляхом перетворення його у (Pl, Nut, Red, 10, Paris, 4540) буде успішною і приведе до заміни кортежу (P1, Nut, Red, 12, London) у змінній відносини Р кортежем (Pl, Nut, Red, 10, Paris)

■ Закінчиться невдачею спроба оновити той же кортеж допомогою заміни номера деталі номером Р2 (без зміни інших атрибутів) або спроба його приведення до вигляду, в якому значення атрибута GMWT не дорівнює значенню атрибута WEIGHT, помноженому на 454 (у кожному разі вкажіть причину невдачі)

Операція зєднання

У більшості розглядалися раніше трактувань проблеми оновлення уявлень (включаючи трактування, викладені в кількох попередніх виданнях цієї книги і в інших книгах автора) стверджувалося, що здатність (або нездатність) кожного конкретного зєднання до оновлення залежить (принаймні, частково) від того, чи належить зєднання до типу один до одного, один до багатьох або багато до багатьох. Але на відміну від всіх попередніх трактувань проблеми оновлення подібних уявлень, в цій книзі автор стверджує, що результат операції зєднаннязавждиє обновлюваним Більше того, для всіх трьох перерахованих типів зєднань правила ідентичні і, в цілому, цілком очевидні Справедливість цього твердження, на перший погляд удаваного дивним, підкріплюється новим баченням проблеми, що став можливим завдяки прийняттю деякогозолотого правила, що ми і постараємося зараз пояснити

У загальному випадку призначення функції підтримки уявлень завжди полягало в прагненні стерти, наскільки можливо, різницю між уявленнями і базовими змінними відносини Тим не менше:

■ зазвичай передбачалося (неявно), що окремий кортеж базової змінної від носіння завжди можна оновити незалежно від всіх інших кортежів цієї ба зовой змінної відносини

■ в той же час стверджувалося (явно), що оновити окремий кортеж подання незалежно від всіх інших кортежів цього подання нe завжди можливо

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

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

ми вважаємо ці операції допустимими, повністю визнаючи той факт, що оновлення

вихідних змінних відносини може викликати побічні ефекти, які відібються на поданні Однак такі побічні ефекти неминучі і необхідні, тому що в противному випадку виникає небезпека, що подання перестане задовольняти своєму предикату

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

Розглянемо зєднання J = A JOIN В Тут (як і в розділі 74 глави 7) змінні відносини А, в і J, відповідно, мають заголовки {х, Y}, {Y, Z} і

{X, Y, Z} Нехай РА і РВ – це предикати змінних відносини А І В Тоді предикат PJ подання J матиме наступний вигляд

РА (а) AND РВ (Ь)

Тут для кожного заданого кортежу зєднання j кортеж а є відноситься до А частиною кортежу j (тобто а – це кортеж, породжуваний з кортежу j допомогою операції проекції, яка виключає компонент Z), а Комерсант є відноситься до в частиною кортежу j (Тобто кортежем, що породжується з кортежу j  допомогою операції проекції, яка виключає компонент х) Іншими словами, кожен кортеж в зєднанні є таким, що частина його, що відноситься до А, задовольняє предикату РА, а частина, що відноситься до в, задовольняє предикату РВ Наприклад, предикат для зєднання змінних відносини s і SP по атрибуту s # можна сформулювати наступним чином

Кожен кортеж (s, n, t, c, p, q) у зєднанні є таким, що кортеж (s, n, t, c) задовольняє предикату змінної відносини S, а кортеж (s, p, q) задовольняє предикату змінної відносини SP

Наведемо правила оновлення уявлень виду J = A JOIN в

■&nbsp&nbsp Правило INSERT Новий кортеж j повинен задовольняти предикату PJ Якщо відноситься до А часть5 кортежу j не входить в змінну відносини А, то вона вставляється в А Якщо відноситься до в частину кортежу j не присутній у змінній відносини в, то вона вставляється в в

■&nbsp&nbsp&nbsp&nbsp Правило DELETE Що відноситься до А частина видаляється кортежу видаляється з змінної відносини А, а відноситься до в частину видаляється кортежу видаляється з змінної відносини в

■&nbsp&nbsp&nbsp&nbsp Правило UPDATE Оновлюваний кортеж повинен бути таким, щоб його оновлений ная версія задовольняла предикату Р J Стосовна до А частина цього кортежу уда ляется із змінної відносини А без виконання будь-яких активізується дій та перевірки предиката, а що відноситься до в частина кортежу видаляється з пе пасової відносини в, знову ж таки, без виконання яких-небудь активізується дій та перевірки предиката Якщо після цього відноситься до А частина обнов ленного кортежу все ще відсутня в змінної відносини А, то відноситься до А частина вставляється в А Якщо що відноситься до в частина оновленого кортежу від сутствует у змінній відносини в, то вона вставляється в в

. Тепер перевіримо можливість застосування сформульованих правил до всіх трьох існуючих типів зєднань

5 Зазначимо, що операція INSERT може мати побічний ефект, внаслідок якого відноситься до в частину кортежу j буде вставлена ​​в змінну-ставлення в, як у випадку з уявленнями, заснованими на обєднанні, перетині і різниці (див вище) Аналогічне зауваження стосується правил для уявлень, заснованих на операціях DELETE і UPDATE Для стислості ми не будемо докладно розглядати вкаждом случаеетувозможность

Глава 10 Уявлення 417

Випадок 1: сполуки типу один до одного

Насамперед, відзначимо, що в даному випадку термін один до одного можна замінити точнішим терміном (нуль або один) до (нулю або одному). Іншими словами, має місце обмеження цілісності, яке гарантуватиме, що для кожного кортежу змінної відносини А буде існувати не більше одного відповідного кортежу змінної відносини в, і навпаки А це означає, що безліч атрибутів Y, за яким виконується зєднання, повинно бути суперключом для обох змінних відносини, А І В

Приклади

■ Як перший приклад читачеві пропонується розглянути результат примі нения наведених вище правил до зєднання змінної відносини з данни ми про постачальників S з самою собою (тільки) по атрибуту номера поставщікаs #

■ У другому прикладі припустимо, що в базі даних постачальників і деталей зі тримається ще одна змінна відносини, SR, з атрибутами S # і REST, де атрі бут s # ідентифікує постачальника, а атрибут REST містить дані про його люби мом ресторані Припустимо, що у змінній відносини SR представлені не всі постачальники, відомості про яких є в змінної відносини S читать по лю пропонується розглянути результат застосування правил поновлення соедине ня до подання, визначеному як зєднання s JOIN SR Що зміниться, якщо постачальник буде представлений у змінній відносини SR, але не буде перед ставлен у змінній відносини S

Випадок 2: сполуки типу один до багатьох

Тут термін один до багатьох можна замінити точнішим терміном (нуль або один) до (нулю або багатьом). Іншими словами, має місце обмеження цілісності, яке гарантуватиме, що для кожного кортежу з змінної відносини в існує не більше одного відповідного кортежу у змінній відносини А Зазвичай це означає, що безліч атрибутів Y, за яким виконується операція зєднання, повинно містити підмножина (скажімо, к), таке що до є потенційним ключем для змінної відносини А і відповідним зовнішнім ключем для змінної відносини в

Примітка Якщо виконуються сформульовані вище вимоги, то вираз

“Нуль або один можна замінити виразом точно один.

Приклади Нехай уявлення SSP визначено наступним виразом

S  JOIN  SP

(Безумовно, це – зєднання типу зовнішній ключ з відповідним потенційним ключем.) Приклад вмісту цього подання показаний на рис 107

■ Спроба вставити в уявлення SSP кортеж (S4, Clark, 20, London, Рб, 100) буде завершена успішно і приведе до вставки кортежу (S4, Рб, 100) в змін ную відносини SP (в результаті чого новий кортеж зявиться і в уявленні)

■ Спроба вставити в уявлення SSP кортеж (S5, Adams, 3 0, Athens, Рб, 100) буде завершена успішно і приведе до вставки кортежу (S5, Рб, 100) в змін ную відносини SP (отже, новий кортеж додасться і до подання)

■ Спроба вставити в уявлення SSP кортеж (S6, Green, 20, London, Р6, 100) буде завершена успішно і приведе до вставки кортежу (S6, Green, 20, London) в змінну відносини S і до вставки кортежу (S6, Р6, 100) в змінну відносини SP (в результаті чого новий кортеж зявиться і в уявленні) Примітка Приймемо на час таке припущення, що можливе існування кортежів SP без відповідного кортежу s Крім того, припустимо, що змінна відносини SP вже включає деякі кортежі з номером постачальника S6, але до їх числа не входять кортежі з номером постачальника S6 і номером деталі Р1 За таких умов операція INSERT, яка застосовувалася в описаному вище прикладі, буде мати побічний ефект, повязаний зі вставкою в уявлення деяких додаткових кортежів, а саме кортежів, отриманих в результаті зєднання кортежу (S6, Green, 2 0, London) з кожним з тих, що існували раніше кортежів SP, які відносяться до постачальника S6

Рис 107 Подання SSP (значення для прикладу)

■ Спроба вставити в уявлення SSP кортеж (S4, clark, 20, Athens, Рб, 100)

закінчиться невдачею (поясніть, чому)

■ Спроба вставити в уявлення SSP кортеж (SI, Smith, 20, London, PI, 400)

закінчиться невдачею (поясніть, чому)

■ Спроба видалити з уявлення SSP кортеж (S 3, Blake, 30, Paris, P2, 200) завершиться успішно і приведе до видалення кортежу (S3, Blake, 30, Paris) із змінної відносини S і кортежу (S3, Р2, 2 00) із змінної відносини SP

■ Спроба видалити з уявлення SSP кортеж (S1, Smith, 20, London, P1, 300) завершиться успішно (З певними застереженнями см наведене нижче примітка) і призведе до видалення кортежу (S 1, Smith, 2 0, London) з змінної відносини S і кортежу (S l, Pl, 300) із змінною відносини SP

Примітка Насправді, загальний результат наведеної операції видалення залежатиме від встановленого правила видалення зовнішнього ключа, що звязує відносини з даними про постачання і постачальниках Якщо вказана опція NO ACTION або RESTRICT, то дана операція видалення закінчиться невдачею Якщо вказана опція CASCADE, то операція видалення матиме побічний

ефект, який виразиться в додатковому видаленні з змінної відносини SP всіх інших кортежів (а значить, і кортежів подання SSP), що містять дані про постачальника з номером S1

. ■ Спроба оновити в поданні SSP кортеж (S1, Smith, 20, London, P1, 3 00) з перетворенням в (S 1, Smith, 20, London, P1, 400) буде успішно завершена і призведе до оновлення кортежу (S1, P1, 300) в змінній відносини SP з перетворенням в (Sl, Pl, 400)

■ Спроба оновити в поданні SSP кортеж (SI, Smith, 20, London, P1, 300)

з перетворенням в (S1, Smith, 2 0, Athens, PI, 400) буде успішно завершена

і призведе до оновлення кортежу (S1, Smith, 20, London) у змінній відно

шення S з перетворенням в (S 1, Smith, 20, Athens) і кортежу (S l, Pl, 300)

у змінній відносини SP з перетворенням в (S 1, P1, 400)

■ Спроба оновити в поданні SSP кортеж (S 1, Smith, 20, London, P1, 300) з перетворенням в (S6, Smith, 20, London, P1, 300) буде завершена успеш але (З певною застереженням см наведене нижче примітка) і призведе до оновлення кортежу (S1, Smith, 20, London) у змінній відносини S з пре освітою в (S 6, Smith, 20, London) і кортежу (S l, Pl, 3 00) в змінної відносини SPC перетворенням в (S6, Р1, 300)

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

Випадок 3: зєднання типу багато до багатьох

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

Приклади Припустимо, що обговорюване подання визначено за допомогою наступного виразу

S  JOIN  P

Це зєднання змінних відносини S і Р по атрибуту CITY має тип багато до багатьох. Приклад вмісту даного подання показаний на рис 108

■ Вставка в уявлення кортежу (S 7, Bruce, 15, Oslo, P8, Wheel, White, 25) буде успішно завершена і призведе до вставки кортежу (S7, Bruce, 15, Oslo) в змінну відносини S і кортежу (Р 8, Wheel, White, 25, Oslo) в змін ную відносини Р (в результаті вказаний кортеж зявиться в поданні)

■ Вставка в уявлення кортежу (SI, Smith, 20, London, P7, Washer, Red, 5) буде успішно завершена і призведе до вставки кортежу (Р7, Washer, Red, 5, London) в змінну відносини Р (в результаті чого в уявлення потраплять два кортежу – кортеж (S1, Smith, 20, London, P7, Washer, Red, 5), заданий в операції вставки, і кортеж (S4, Clark, 20, London, P7, Washer, Red, 5))

Рис 108 Результат зєднання змінних відносини S і Р по атрибуту CITY

■ Вставка в уявлення кортежу (S6, Green, 20, London, Р7, Washer, Red, 5) буде успішно завершена і призведе до вставки кортежу (S6, Green, 20, London) в змінну відносини S і кортежу (Р7, Washer, Red, 5, London) в змінну відносини р (в результаті в подання буде додано шість нових кортежів)

■ Видалення з уявлення кортежу (SI, Smith, 20, London, PI, Nut, Red, 12) буде успішно завершено і призведе до видалення кортежу (SI, Smith, 20, London) із змінної відносини S і кортежу (PI, Nut, Red, 12, London) із змінної відносини Р (в результаті з уявлення будуть видалені чотири кортежу)

Пропонуємо читачеві підготувати додаткові приклади самостійно як вправи

Інші операції

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

■&nbsp&nbsp&nbsp&nbsp Перейменування Тривіальний випадок

■&nbsp&nbsp&nbsp&nbsp Декартово твір Як вже зазначалося в розділі 74 глави 7, декартово про твір є окремим випадком природного зєднання (операція A JOIN У вироджується в операцію A TIMES В, якщо відносини А і в не мають спільних атрибутів) Тому правила оновлення для операції декартова произве дення (A TIMES в) є окремим випадком правил поновлення для операції зєднання (звичайно, як і правила поновлення для операції перетину A INTERSECT В)

■&nbsp&nbsp&nbsp&nbsp Формування підсумків Операція формування підсумків (SUMMARIZE) теж не яв ляется елементарної і визначається в термінах операції розширення Тому правила оновлення для операції формування підсумків є похідними від правил поновлення для операції розширення

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

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

SUMMARIZE SP BY { S# } ADD SUM ( QTY ) AS TOTQTY

Тоді спроба видалення кортежу, скажімо, для постачальника з номером S1, буде цілком успішною Проте спроба оновити кортеж, скажімо, (S4, 900), з перетворенням в (S4, 800) закінчиться невдачею, оскільки ця спроба порушує обмеження, згідно з яким значення атрибута TOTQTY має бути рівним сумі всіх відповідних окремих значень QTY Спроба вставити кортеж (S5, 0) теж призведе до помилки, але вже з іншої причини (вкажіть, за якою саме)

■&nbsp&nbsp&nbsp&nbsp Групування та розгрупування Всі зауваження, які були зроблені для опе рації формування підсумків, справедливі і для цих операцій [33]

■&nbsp&nbsp&nbsp&nbsp Транзитивне замикання Tclose І в даному випадку справедливі майже такі ж зауваження

Джерело: Дейт К Дж, Введення в системи баз даних, 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>

*

*