Реферат: Запити, фільтри, використання та функціональне призначення



Тепер легко вирахувати значення будь-якого логічного вираження в трьохзначній логіці. Розглянемо для прикладу ті ж вирахування NOT (Х OR Y) і NOT X OR Y, які обговорювалися для двозначної логіки :

Х

Y

Х OR Y

NOT

(Х OR Y)

NOT Х

NOT X

OR Y

Істина

Істина

Істина

Неправда

Неправда

Істина

Істина

Невизначено

Істина

Неправда

Неправда

Невизначено

Істина

Неправда

Істина

Неправда

Неправда

Неправда

Невизначено

Істина

Істина

Неправда

Невизначено

Істина

Невизначено

Невизначено

Невизначено

Невизначено

Невизначено

Невизначено

Невизначено

Неправда

Невизначено

Невизначено

Невизначено

Невизначено

Неправда

Істина

Істина

Неправда

Істина

Істина

Неправда

Невизначено

Невизначено

Невизначено

Істина

Істина

Неправда

Неправда

Неправда

Істина

Істина

Істина

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

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

Нехай нам дане деяке відношення (тобто таблиця) з атрибутами a1, a2, … , ak... Нехай далі X — логічне вираження, не утримуючих інших атрибутів, крім a1, a2, … , ak (але, бути можуть, не всі ці атрибути). Візьмемо довільний рядок з даного нам відносини. Це значить, що кожен атрибут одержав відповідне значення. Підставимо в X ці значення атрибутів. Тоді наше логічне вираження також одержить деяке значення. Тим самим логічне вираження X може розглядатися як функція, що кожному рядку відносини однозначно зіставляє логічне значення (одне з двох чи більш, у залежності від того, скільки значна логіка використовується).

На час ми можемо навіть забути, що функція задається логічним вираженням, і дати наступне визначення.

Визначення 3. Результатом фільтрації даного відношення з атрибутами a1, a2, … , ak щодо заданої логічної функції f (a1, a2, … , ak) називається відношення, що складається з тих і тільки тих рядків вихідного відношення, для яких функція f приймає значення Істина.

Але є одна принципова проблема: чи вірно, що будь-яка логічна функція може бути задана придатним логічним вираженням? Відповідь математиками на це питання отриманий досить давно (задовго до винаходу баз даних) і звучить дивно: для двозначної логіки це вірно, а для тризначної немає.

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

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

Що таке запит

У звичайній мові термін “запит” вживається в різних змістах. По-перше, ця вимога офіційного роз'яснення по якій-небудь справі (запит депутата міністру); по-друге, призначення надмірної ціни за що-небудь; по-третє, потреби, інтереси (ну і запити в цих нових росіян). Ми привели роз'яснення терміна “запит” по словнику С.І.Ожогова. Нас цей термін цікавить, можна сказати, у “канцелярському” змісті — як вираження інформаційної потреби користувача на деякій мові.

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

Відзначимо, до речі, що потреба користувача може бути і невимовна даною мовою. Уявіть собі, що ви намагаєтеся пояснити давньослов'янською мовою, що вам потрібний комп'ютер.

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

Довідка (Help) визначає запит так: “Вимога на добір даних, що зберігаються в таблицях, чи вимога на виконання визначених дій з даними. Запит дозволяє створити загальний набір записів з даних, що знаходяться в різних таблицях, і використовувати цей набір як джерело даних для чи форми звіту. У Microsoft Access користувач має можливість створювати і виконувати запити наступних типів:

· Запити на вибірку (включаючи запити з параметрами і підсумкові запити)

· Запити на зміну

· Перехресні запити

· Специфічні запити SQL.”

Запит на вибірку визначається в Help так: “Запит, у якому формулюються умови добору даних, що зберігаються в чи формі в об'єкті в режимі таблиці, і повертається набір записів, що задовольняє зазначеним умовам, без зміни даних, що повертається. Після висновку результатів запиту на екран стає можливим їхній перегляд, а в деяких випадках зміна даних у базових таблицях. На відміну від цього, у запитах на зміну виробляється зміна даних.”

Так що ж таке запит (і, зокрема, запит-вибірка): “спеціальна структура”, “вимога на добір даних”, “питання про даний”, “таблиця”, чи що-небудь інше?

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

Обмеження цілісності - це правила (можна сказати, аксіоми), що із усіх станів виділяють “розумні”. Наприклад, якщо в деякій базисній таблиці є атрибути “дата_народження” і “дата_смерті”, те природно ввести таке обмеження цілісності: дата_народження £ дата_смерті.

Визначимо стан БД як набір базисних відносин. (Більш точно було б визначити стан як алгебраїчну систему, але це ускладнило б формалізацію.) У класі всіх станів виділяється підклас припустимих станів. Це ті стани, що задовольняють обмеженням цілісності. Тоді запит можна трактувати як функцію Z, що зіставляє кожному припустимому стану ST деяке відношення Z(ST), що ми і називаємо відповіддю на запит. При цьому сам запит записується вираженням на відповідному формальній мові, що, як було вище сказане, називається мовою запитів. Це вираження ми будемо називати формулою запиту.

Пояснимо сказане на прикладі. Нехай мається два базисних відношення:

Розмови

номер

дата

місто

тривалість

11-22-33

01.01.00

Москва

7

11-22-33

01.02.00

Париж

9

22-33-44

01.01.00

Женева

20

22-33-44

02.01.00

Цюрих

17



  • Сторінка:
  • 1
  • 2
  • 3
  • 4
  • 5