Повна версія

Головна arrow Інформатика arrow Бази даних: проектування

  • Увеличить шрифт
  • Уменьшить шрифт


<<   ЗМІСТ   >>

Реляційна операція "Перетин"

Операція "Перетин" (рис. 1.21) в математиці передбачає створення безлічі, в яке входять елементи обох перетинаються вихідних множин. Ця особливість дає величезні можливості в базах даних,

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

image22

Мал. 1.21. Операція перетину множин (п)


Реалізуючи операцію "Перетин" в реляційної алгебри, розглядають відносини, які, як і в попередньому випадку (операція "Об'єднання"), повинні мати властивість ідентичності відносин, тобто володіти схожими структурами і типами даних але наявним у відносинах атрибутам [1] (рис. 1.22).

image23

Мал. 1.22. Приклад реалізації операції "Перетин" (п)


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

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

Так само, як і багато дій над множинами в математиці, операція "Перетин" має властивість коммутативности, що виражається у відсутності явної спрямованості виконання дії. Це означає, що, виконавши операції перетинає Б" і перетинає Л", ми отримаємо абсолютно ідентичні результати.

Реляційна операція "Різниця"

На відміну від операцій "Перетин" і "Об'єднання" операція "Різниця" [2] нe має властивість коммутативности і представляється спрямованим дією (рис. 1.23). Таким же властивістю в математиці має дію різниці (наприклад, "2 - 5" і "5 - 2" не є ідентичною операцією, оскільки повертають різні результати). Те ж відноситься до операцій над множинами.

image24

Мал. 1.23. Операція різниці множин ()


Аналогічно операціям "Об'єднання" і "Перетин" розглянута операція вимагає, щоб вихідні відносини володіли ідентичними структурами і типами даних. Оскільки операція передбачає повне порівняння даних з вихідних відносин по всіх атрибутів, то поява будь-якого атрибуту в одному з відносин, які не представленого в іншому відношенні, не дозволить здійснити таке порівняння, а значить, не дозволить отримати результат операції (рис. 1.24).

image25

Мал. 1.24. Приклад реалізації операції "Різниця" ()


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

Процес виконання операції "Різниця" здійснюється наступним чином.

  • 1. Вибираються кортежі першого відносини.
  • 2. Вибираються кортежі другого відносини.
  • 3. У першому відношенні для кожного кортежу перевіряється наявність такого ж кортежу в другому відношенні:
    • а) якщо в другому відношенні шуканий кортеж не представлений, то він видається в результаті;
    • б) якщо в другому відношенні шуканий кортеж існує, то він не включається в результат операції.

В результаті залишаються тільки унікальні кортежі з першого відносини. А що ж відбувається з унікальними кортежами другого відносини? - Нічого. Ці кортежі не беруть участь у виконанні операції "Різниця", що пов'язано з відсутністю властивості коммутативности в операції "Різниця". Кортежі другого відносини для даної операції необхідні лише з метою перевірки існування кортежу, ідентичного щодо першого відносини.

Реляційна операція "Декартово твір"

Операція "Декартово твір" (рис. 1.25) застосовується в базах даних не дуже часто, але буває дуже корисною, коли необхідно отримати всі безліч будь-яких перетинів елементів вихідних множин. В математиці дана операція передбачає отримання нового безлічі, що складається з усіх можливих нар, де перший елемент узятий з першого безлічі, а другий - з другої множини.

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

image26

Мал. 1.25. Приклад реалізації операції "Декартово твір"


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

При формуванні бази даних в правильному поданні у розробників не так часто виникає потреба у виконанні цієї операції. Проте, така потреба може виникнути. Наприклад, є списки учнів (табл. 1.4) певної навчальної групи, які повинні виконати ряд робіт (табл. 1.5), для яких визначається умова, що до моменту їх виконання всім учням по кожній роботі виставляється незадовільна оцінка незалежно від факту виконання роботи. Таким чином, виходить, що до моменту початку виконання робіт в базі даних вже повинні існувати записи, які зв'яжуть кожного учня з кожною роботою.

Таблиця 1.4

Приклад першого відносини "Учень"

ПІБ учня

1

Карапетян Арсен Гуреновіч

2

Малишкіна Аріна Іванівна

3

Нольшов Іван Петрович

Таблиця 1.5


Приклад другого відносини "Роботи"

Вид діяльності

Назва роботи

Контрольна робота

математична логіка

Практикум

обчислення висловлювань

Практикум

Список чес дещо програм і ро ванні



№ ПІБ учня Вид роботи Найменування роботи 1 Карапетян Арсен Гуреновіч 11рактікум Обчислення висловлювань 2 Малятка на Аріна Іванівна I Грактікум Обчислення висловлювань 3 Полин Іван Петрович Практикум Обчислення висловлювань 1 Карапетян Арсен Гуреновіч Практикум Логічне програмування 2 Малмшкіна Аріна Іванівна 11рактікум Логічне програмування 3 Полин Іван Петрович 11рактікум Логічне програмування
Результатом виконання операції "декартовій твір" буде нового ставлення, показане в табл. 1.6.

Таблиця 1.6

Приклад результуючого відносини "Роботи учня"

ПІБ учня

Вид діяльності

Назва роботи

1

Карапетян Арсен Гуреновіч

контрольна

робота

математична логіка

2

Малишкіна Аріна Іванівна

контрольна

робота

математична логіка

3

Полин Іван Петрович

контрольна

робота

математична логіка




  • [1] У мові SQL реляційна операція "Перетин" представляється операцією "Intersect".
  • [2] У мові SQL реляційна операція "Різниця" представляється операціями "Minus" або "Except", в залежності від конкретного мови в СУБД.
 
<<   ЗМІСТ   >>