Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 3 Реляційні БД.doc
Скачиваний:
24
Добавлен:
19.11.2019
Размер:
2.52 Mб
Скачать

Проекція

П атр1, атр2,…атр3 (R)

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

Приклад 3.2 Операція проекції

Створіть відомість зарплати всіх співробітників із вказівкою атрибутів Sno, Fname, Lname, Salary.

П Sno, Fname, Lname, Salary (Staff)

У цьому прикладі операція проекцій визначає нове відношення, що буде містити только атрибути Sno, Fname, Lname, Salary відношення Staff розміщені в зазначеному порядку. Результат виконання цієї операції показаний у табл. 3.10.

Декартовий добуток

R x S

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

О ператори вибірки і проекції витягають інформацію тільки з одного відношення. Очевидно, можливе виникнення таких ситуацій, коли потрібна деяка комбінація даних з декількох відношень. Оператор декартового добутку множить двоє відношень, що в результаті приводить до створення іншого відношення, що складається з усіх можливих пар кортежів обох відношень. Отже, якщо одне відношення має I кортежів і N атрибутів, а інше — J кортежів і М атрибутів, то відношення з їх декартовим добутком буде містити (I x J) кортежів і (N x M) атрибутів. Вихідні відношення можуть містити атрибути з однаковими іменами. У такому випадку імена атрибутів будуть містити назви відношень у виді префіксів для забезпечення унікальності імен атрибутів у відношенні, отриманому як результат виконання операції декартового добутку.

Приклад 3.3 Операція декартового добутку

Створіть список всіх орендарів, що оглядали об'єкти нерухомості з указівкою зроблених ними коментарів.

Rno, Fname, Lname (Renter)) x (П Rno, Pno, Comment (Viewing))

Результат виконання цієї операції показаний у табл. 3.11.

У такому виді це відношення містить більше інформації, чим необхідно. Наприклад, перший кортеж цього відношення містить різні значення атрибута Rno. Для одержання шуканого списку необхідно для цього відношення зробити oперацію вибірки з витягом тих кортежів, для яких виконується рівність Renter.Rno=Viewing.Rno. Цілком ця операція виглядає так, як показано нижче.

σRenter.Rno = Viewing.Rno((П Rno, Fname, Lname (Renter)) x (П Rno, Pno, Comment (Viewing))

Р езультат виконання цієї операції показаний у табл. 3.12.

Як ми незабаром побачимо, комбінація декартового добутку і вибірки може бути зведена до одній операції з'єднання.

Об'єднання

R U S

Об'єднання відношень R і S з кортежами I і J відповідно можна одержати в результаті їх конкатенації з утворенням одного відношення з максимальною кількістю кортежів (I + J), якщо кортежі дублікати виключені. При цьому відношення R і S повинні бути сумісні по об'єднанню.

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

Приклад 3.4 Операція об'єднання

Створіть список усіх районів, у яких мається відділення компанійки чи об'єкт нерухомості.

П Area (Branch) U П Area (Property_for_Rent)

Д ля створення сумісних по об'єднанню відношень спочатку варто застосувати операцію проекції, щоб виділити з відношень Branch і Property_for_Rent стовпці з атрибутами Area, крім у разі потреби дублікатів. Потім для комбінування отриманих проміжних відношень варто використовувати операцію об'єднання. Результат виконання всіх цих дій приведений у табл.3.13