Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
m_DBSQL_mu.docx
Скачиваний:
28
Добавлен:
17.03.2016
Размер:
373.51 Кб
Скачать

Квантор загальності. Ділення

Другий тип квантора - квантор загальності введений для побудови запитів, що вимагають операції ділення відносин.

Квантор загальності (FORALL) - вираз РЧ, що позначає, що деяка умова застосовується до кожного кортежу певного типу.

Запит. Перерахувати ідентифікаційні номери студентів, які здали всі предмети хоча б за один семестр.

Рішення. Побудову запиту виконаємо поетапно.

• Оскільки потрібні ідентифікаційні номери студентів, то необхідно шукати записи у відношенні СТУДЕНТ. Тому цільовий список повинен містити атрибут ID_Stud з цього відношення, а визначальний вираз оператор приналежності IN до Студент, наприклад, так:

{r.ID_Stud: r IN СТУДЕНТ ...}.

• Оскільки нас цікавлять студенти, котрі складали хоча б один раз КОЖЕН курс, то до відношення КУРС слід застосувати квантор загальності:

{r.ID_Stud: r IN СТУДЕНТ AND FORALL s IN КУРС (...)}.

• І нарешті, оскільки нас цікавлять СТУДЕНТИ, які здавали кожен курс, то відповідні кортежі повинні існувати в відношенні УСПІШНІСТЬ

{R.ID_ Stud: r IN СТУДЕНТ AND FORALL s IN КУРС (EXISTS t IN

УСПІШНІСТЬ (t.ID_Subj = s.ID_Subj AND t.ID_Stud = r.ID_ Stud))}.

Еквівалентність РА і РЧ

Насправді, вводячи поняття РЧ, ми одночасно показували його аналогічність РА. Для наочної ілюстрації еквівалентності підходів зведемо всі операції в таблицю (див. табл.1).

Операція

Опис

Синтаксис РА

Синтаксис РЧ

Проекція

На вході – одне відношення Т1. Вибір з відношення окремих атрибутів

[Т1.поле 1, Т2.поле2, ...]

{r.поле1, r.поле2, ... : r IN Т1}

Вибірка

На вході - одне відношення Т1. Вибір з відношення окремих кортежів, які задовольняють умову відбору

SELECT (T1 :

[умова ви­бору])

{r.поле1, r.поле2 ... :

r IN Т1 AND [умова вибору]}

Об’єднання

На вході – два об’єднувально-сумістних відношення Т1 та Т2.

Включення в результуюче відношення (РВ) всіх кортежів, які входять у хоча б одне відношення.

Т1 U Т2

{r.поле1, r.поле2, ... :

r IN Т1 OR r IN Т2}

Перетин

На вході – два об’єднувально-сумістних відношення Т1 та Т2.

Включення в результуюче відношення (РВ) всіх кортежів, які в обидва відношення одночасно.

T1 л T2

{r.поле1, r.поле2, ... :

r IN Т1 AND r IN Т2}

Різниця

На вході – два об’єднувально-сумістних відношення Т1 та Т2.

Включення в результуюче відношення (РВ) всіх кортежів, які входять в Т1 і не входять в Т2

Т1-Т2

{r.поле1, r.поле2, ... :

r IN Т1 AND r NOT

IN Т2}

Множення

На вході – два об’єднувально-сумістних відношення Т1 та Т2.

РВ складається з всіх кортежів Т1, к кожному з яких приєднані всі кортежі з Т2

Т1 * Т2

{r.поле1, r.поле2, ... , s.поле1, s.поле2, r IN Т1 AND s IN Т2}

Об’єднання

На вході два відношення Т1 та Т2, які мають атрибути зв’язку Т1.п1 та Т2.п2. Можливий збіг Т1 та Т2, але не полей зв’язку. РВ містить відповідні дані з обох відношень

1. Природнє О.: JOIN

(Т1, Т2).

2. Тета-О.: JOIN (T1, T2 :

Т1.п1 <опера­тор порівняння> Т2.п2 ).

3.Зовнішнє О.:

OUTERJOIN (T1, T2).

1,2 {m5 : r IN Т1

AND EXISTS s IN

Т2 (s.п1<оператор порівняння> s.^) }. 3. {m5 : (r IN Т1 AND EXISTS s IN Т2 (s.п1 <оператор порівняння> s.п2 ))

OR (r IN Т1 AND NOT EXISTS s IN

Т2 (s.п1 <оператор порівняння> s.п2 ))}.

Ділення

На вході два відношення Т1 та Т2, причому ат­рибути Т2 мають складати підмножину атрибутів Т1. РВ Т1 / Т2 містить ті кортежі, що входять в Т1 з кожним кортежем з Т2

Т1 / Т2

{r. поле1 : r IN Т1

AND FORALL s IN

Т2 (EXISTS t IN Т1 (t.n1=s.n2) AND (r.n1=t.n1)) }

SQL–СТРУКТУРОВАНА МОВА ЗАПИТІВ

У попередніх параграфах розглядалися теоретичні аспекти процесу обробки інформації в РБД. Перейдемо до огляду однієї потужної і загальноприйнятоїреалізації цього підходу -структурованої мови запитів (SQL).

SQLбув розробленийIBMв кінці 1970-х рр.. З тих пір в мову, звичайно, вносилися зміни і удосконалення, однакїїпринципи залишилисяпочатковими. Перш за все,SQL- непроцедурнамова високого рівня. Прикладна програма не повідомляє Машині БД, як виконати завдання, а формулює, що повинно міститися в результатах (декларативний підхід). Перший стандарт мови був прийнятий в 1989 р. Всі відомі комерційні продукти в даний час підтримують, принаймні, цей стандарт. Проте вже в 1992 р. був прийнятий новий стандартSQL, в якому, зокрема, були реалізовані безпосередньо теоретико-множинні операції РА (до цього їх можна було моделювати на основі аналогії РА з РЧ, а РЧзSQL). Тим не менш,SQLзалишається непроцедурного мовою. Третій стандартSQL, спрямований на зближення мови з об'єктно-орієнтовним підходом, був прийнятий у 1998 р. Різні виробники БД вносять в синтаксисSQLневеликі зміни. Однак як правило, стандартний запитSQLбез складнощівпереноситься на різні платформи.

За допомогою SQL можна не тільки обробляти інформацію запитами, але і керувати даними (вставка, модифікація, видалення записів, сортування), а також здійснювати супровід БД (опис типів даних і структури таблиць, видалення, зміна таблиць, індексування, управління правами доступу до даних ).

Є два SQL: Інтерактивний і Вкладений. Здебільшого обидві форми працюють однаково, але використовуються по-різному.

Інтерактивний SQL використовується для функціонування безпосередньо в базі даних. У цій формі SQL введена вами команда одразу виконується, і результат (якщо він існує) негайно відображається.

Вкладений SQL складається з команд мови, поміщених усередині програм, які зазвичай написані на деякій іншій мові (як C + +,Паскаль або ж PHP, Perl та ін., часто СУБД надає своє процедурне розширення - мова Transact SQL від MS SQL Server або PL / SQL від ORACL). Це робить програми більш потужними і ефективними. Однак допускаючи інші мови, доводиться мати справу зі структурою SQL і стилем управління даними, який вимагає деяких розширень до інтерактивного SQL.

У даному посібнику мова піде про інтерактивну форму SQL. Однак все, що ви дізнаєтесь щодо інтерактивного SQL, можна застосувати і до вкладеної форми.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]