Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л-8,9.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
101.38 Кб
Скачать

Івано-Франківський фінансово-комерційний

кооперативний коледж ім.С.Граната

Бази даних"

ПЛАН ЗАНЯТТЯ № 8,9

Тема: Тема 3.3. Операції об’єднання

Вид заняття : лекція

Кількість годин 4

Мета заняття: Ознайомити студентів з основними операціями об’єднання таблиць

Міжпредметні зв'язки: СКБД, WEB-програмування

Організаційний момент: вітання, перевірка явки студентів і готовність ау­диторії до заняття

Мотивація: Показати необхідність знань баз даних для спеціаль­ності „Розробка програмного забезпечення"

План:

  1. Внутрішнє з’єднання (INNER JOIN)

  2. З’єднання таблиці з собою

  3. Перехресне з’єднання (CROSS JOIN)

  4. Зовнішні з’єднання.

  5. Ліве та праве з’єднання (LEFT (RIGHT) OUTER JOIN)

  6. Повне з’єднання (FULL JOIN)

  7. Об’єднане з’єднання (UNION JOIN)

Активізація розумових здібностей: співбесіда стосовно основних відношень реляційної алгебри.

Домашнє завдання: Вивчити тему.

Література:

  1. Пасічник В.В. Організація баз даних і знань.- К.:Видавнича група ВНV,2006.-384с.

  2. Дейт К. Введения в системы баз данных.-М.:Вильяме,2005.-1328

  3. Андон Ф. И., Яшунин А. Е., Резниченко В. А. Логические модели интеллектуальных информационных систем. — К.: Наук, думка, 1999. — 396 с.

  4. Атре Ш. Структурный подход к организации баз данных. - М.: Финансы и статистика, 1983. - 320 с.

  5. Берзтисс А. Т. Структуры данных. - М.: Статистика, 1974. - 408 с.

  6. Бойко В. В., Савинков В. М. Проектирование баз данных информационных систем. — М.: Финансы и статистика, 1989. — 351 с.

  7. Брудно В. А., Скворцов Д. П., Финн В. К., Цаленко М. Ш. Базы данных с неполной информацией // Семиотика и информатика. — 1985. — Вып. 25. — С. 5-45.

  8. Дейт К. Введение в системы баз данных. — М.: Вильяме, 2005. — 1328 с.

  9. Пасічник В.В. Організація баз даних та знань. – К.: Видавнича група ВНV, 2006. – 384 с.

Викладач

Боркович І.П.

Тези:

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

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

Існує декілька видів з’єднання, яким відповідають певні ключові слова, які додаються до оператора JOIN.

Внутрішнє з’єднання (inner join)

Розглянемо приклади використання внутрішнього з’єднання. У стандарті ANSI SQL використовують декілька видів внутрішнього з’єднання: природне з’єднання (NATURAL JOIN), умовне з’єднання (JOIN…ON), з’єднання за іменами стовпців (JOIN…USING).

В природному з’єднанні (NATURAL JOIN) перевіряються на рівність усі одноіменні стовпці таблиці, це ще називається з’єднанням за рівністю. Синтаксис буде таким:

SELECT Таблиця1.*, Таблиця2.*

FROM Таблиця1 NATURAL JOIN Таблиця2;

Умовне з’єднання (JOIN…ON) використовується, коли потрібно з’єднати за іншими логічними умовами, не обов’язково за рівністю. Цей вид буде розглядатись пізніше.

З’єднання за іменами стовпців (JOIN…USING) подібне на природне з’єднання. Відмінність полягає в тому, що можна вказати, які саме одноіменні стовпці повинні перевірятись.

Усі ці види внутрішнього з’єднання в повнофункціональних СУБД виконуються за допомогою різних логічних виразів після слова WHERE або за допомогою оператора JOIN…ON або INNER JOIN…ON. Ми зупинимось саме на практичному застосуванні внутрішнього з’єднання в повнофункціональних СУБД

Припустимо, що необхідно кожному продавцю поставити у відповідність замовника з того ж міста. Це можна реалізувати наступною командою:

SELECT Salers.sname, Salers.city, Customers.cname

FROM Salers, Customers

WHERE Salers.city=Customers.city;

Оскільки поле city є в таблиці Salers і в таблиці Customers, то використовують повні імена полів city.

За допомогою оператора JOIN цей запит набуде вигляду:

SELECT sname, Salers.city, cname

FROM Salers INNER JOIN Customers

ON Salers.city=Customers.city;

Таблиці Salers та Customers пов’язані ключем snum. Поле snum є первинним ключем у таблиці Salers і зовнішнім ключем у таблиці Customers. Такий зв’язок називається станом цілісності посилань (пригадайте правило цілісності посилань).

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

SELECT Customers.cname,Salers.sname

FROM Customers,Salers

WHERE Salers.snum=Customers.snum;

Даний приклад демонструє об’єднання, в якому стовпці (snum) використовуються для визначення предиката, але у вивід не включені. Їх використали у якості зв’язків. Тут використовується природне з’єднання.

За допомогою оператора JOIN цей запит набуде вигляду:

SELECT Customers.cname,Salers.sname

FROM Customers JOIN Salers

ON Salers.snum=Customers.snum;

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

SELECT onum,cname,Orders.cnum,Orders.snum

FROM Salers,Customers,Orders

WHERE Customers.city<>Salers.city

AND Orders.cnum=Customers.cnum

AND Orders.snum=Salers.snum;

За допомогою оператора JOIN цей запит набуде вигляду:

SELECT onum,cname,Orders.cnum,Orders.snum

FROM Customers JOIN Orders

ON Customers.cnum=Orders.cnum

JOIN Salers

ON Orders.snum=Salers.snum;

AND Customers.city<>Salers.city