47908 (665942), страница 2
Текст из файла (страница 2)
Оскільки відношення є множинами кортежів, в них не повинні зустрічатися однакові кортежі і порядок кортежів у відношенні є несуттєвим.
Схема відношення - це іменована множина пар ім’я атрибута, ім’я домена (або типу, якщо поняття домена не підтримується). Ступінь, або "арність" схеми відношення - потужність цієї множини. Якщо всі атрибути одного відношення визначені на різних доменах, доцільно використовувати для іменування атрибутів імена відповідних доменів (пам’ятаючи при цьому, що це є лише зручним засобом іменування і не усуває різниці між поняттями домена і атрибута).
Схема БД (в структурному розумінні) - це набір іменованих схем відношень. Сукупність схем відношень називається схемою (реляционною) БД, а поточні значення відповідних відношень - (реляційною) БД.
6. Властивості відношень
Відношення мають певні властивості, причому всі вони дуже важливі і випливають з визначення відношення. Спочатку перерахуємо ці властивості:
-
у відношеннях немає однакових кортежів;
-
кортежі відношення не мають впорядкованості у напрямку знизу вверх;
-
атрибути в кортежах не впорядковані зліва направо;
-
кожен кортеж містить одне значення для кожного атрибуту.
Властивість 1. Відсутність однакових кортежів.
Дана властивість випливає з того факту, що тіло відношення – це математична МНОЖИНА (кортежів), а в математиці множини за визначенням не містять однакових елементів. Дійсно, поняття „однакові кортежі” немає змісту. Припустимо, що в деякому відношенні є кортеж, який відображає той істинний факт, що постачальник з номером С1 знаходиться в місті Лондон. Далі, якщо у відношенні є другий такий кортеж, він також відображатиме цей самий істинний факт. Проте, якщо істинний факт повторюється двічі, більш істинним він від цього не стане.
Властивість 2. Відсутність впорядкованих кортежів (зверху вниз).
Дана властивість так само випливає з того, що тіло відношення - це математична множина, а прості математичні множини у математиці не впорядковані. Наприклад, кортежі могли б розташовуватися у протилежному порядку, проте відношення залишилося тим самим. Тому у відношенні немає 5-, 97-, або 1-го кортежу, тобто немає поняття позиціонованої адресації.
Властивість 3. Відсутність впорядкування атрибутів (зліва направо).
Дана властивість випливає з того факту, що заголовок відношення також визначено як множина (атрибутів). Наприклад, атрибути відношення С могли би бути представлені, в іншому порядку. Це було б таке саме відношення, принаймні з точки зору реляційної моделі. Тому не існує першого або останнього атрибуту, не існує останнього атрибуту. Іншими словами, атрибут завжди визначається за іменем, а не за розташуванням.
Властивість 4 Кожен кортеж містить рівно одне значення для кожного атрибуту.
Остання властивість випливає безпосередньо з визначення кортежу: кортеж є множиною n впорядкованих пар виду Ai:I (i=1,2,…n). Відношення, що задовольняє цій властивості називається нормалізованим або представленим у першій нормальній формі (1НФ).
Модель даних описує деякий набір родових понять і ознак, якими повинні володіти всі конкретні СКБД і БД, що ними керуються якщо вони базуються на цій моделі. Наявність моделі даних дозволяє порівнювати конкретні реалізації, використовуючи одну спільну мову.
Згідно з найбільш поширеною трактовкою, реляційна модель даних складається з трьох частин, які описують різні аспекти реляційного підходу: структурної частин, маніпуляційної частини і цілісної частини.
7. Цілісність бази даних. Первинний та зовнішній ключ
Значення кортежу t на атрибуті А називають t (А) або, іншими словами, А - значення кортежу t . Серед атрибутів схеми відношення можна вибрати таку підмножину атрибутів К R, що для будь-якого ti (K) буде виконуватися
ti (K) tj (K),
при ij. Якщо К - мінімальна підмножина атрибутів з R , то К - ключ відношення. Відношення може мати не єдиний ключ. Ці ключі називають можливими ключами. Множина ключів, обраних з усіх можливих ключів і певним визначеним способом перерахованих, називають виділеними ключами. Один з виділених ключів відношення обирають в якості первинного.
Кінцеві відносини можуть мати різні ключі залежно від значень і кількості кортежів у відношенні, але при цьому схема відносини не міняється. Поняття ключа задається для схеми відносини, але це необхідно робити з обліком всіх можливих станів відносин з даною схемою. Маніпулювання зв'язками й сутностями може бути реалізоване за допомогою реляційної алгебри, що задає операції над відносинами.
У цілісній частині реляційної моделі даних фіксуються дві базових вимоги цілісності, які повинні підтримуватися в будь-який реляційній СУБД. Перша вимога називається вимогою цілісності сутностей. Об'єкту або сутності реального миру в реляційних БД відповідають кортежі відносин. Конкретна вимога полягає в тому, що будь-який кортеж будь-якого відношення повинен бути відрізнимо від будь-якого іншого кортежу цього відношення, тобто інакше кажучи, будь-яке відношення повинне мати первинний ключ. Друга вимога називається вимогою цілісності по посиланнях і є трохи більше складним. Очевидно, що при дотриманні нормалізованості відносин складні сутності реального миру представляються в реляційної БД у вигляді декількох кортежів декількох відносин. Обмеження цілісності сутності й по посиланнях повинні підтримуватися СУБД. Для дотримання цілісності сутності досить гарантувати відсутність у будь-якім відношенні кортежів з тим самим значенням первинного ключа. Із цілісністю по посиланнях справи йдуть трохи більш складно. Зрозуміло, що при відновленні відношення, що посилається (вставці нових кортежів або модифікації значення зовнішнього ключа в існуючих кортежах) досить стежити за тим, щоб не з'являлися некоректні значення зовнішнього ключа.
8. SQL – мова структурованих запитів сучасних СКБД
У сучасних СУБД звичайно підтримується єдина інтегрована мова, що містить всі необхідні засоби для роботи із БД, починаючи від її створення й користувальницький інтерфейс, що забезпечує базовий, з базами даних. Стандартною мовою найпоширеніших у цей час реляційних СУБД є мова SQL (Structured Query Language).
SQL є стандартною мовою для роботи з реляційними БД і в даний час підтримується всіма продуктами представленими на ринку. Її було розроблено в компанії ІВМ на початку 70-х років. Поточний стандарт цієї мови, на який ми будемо посилатися, має назву SQL/92.
Створення будь-якої таблиці передбачає визначення типу даних. Тип даних стовпчика визначає тип інформації, яка в ньому зберігається. Для того щоб визначити тип стовпчика необхідно після імені стовпчика вказати одне з ключових слів, яким позначається тип. Назви типів є регістрово незалежними. Після визначення тип стовпчика буде зберігатися як його характеристика, яку змінити неможна.
Насамперед мова SQL сполучить засобу SDL і DML, тобто дозволяє визначати схему реляційної БД і маніпулювати даними. При цьому іменування об'єктів БД (для реляційної БД - іменування таблиць і їхніх стовпців) підтримується на язиковому рівні в тому розумінні, що компілятор мови SQL робить перетворення імен об'єктів у їхні внутрішні ідентифікатори на підставі спеціально підтримуваних службових таблиць-каталогів. Внутрішня частина СУБД (ядро) взагалі не працює з іменами таблиць і їхніх стовпців.
Мова SQL містить спеціальні засоби визначення обмежень цілісності БД. Знову ж обмеження цілісності зберігаються в спеціальних таблицях-каталогах, і забезпечення контролю цілісності БД виробляється на язиковому рівні, тобто при компіляції операторів модифікації БД компілятор SQL на підставі наявних у БД обмежень цілісності генерує відповідний програмний код.
Спеціальні оператори мови SQL дозволяють визначати так звані подання БД, що фактично є збереженими в БД запитами (результатом будь-якого запиту до реляційної БД є таблиця) з іменованими стовпцями. Для користувача подання є такою ж таблицею, як будь-яка базова таблиця, збережена в БД, але за допомогою подань можна обмежити або навпаки розширити видимість БД для конкретного користувача. Підтримка подань виробляється також на язиковому рівні.
Нарешті, авторизація доступу до об'єктів БД виробляється на основі спеціального набору операторів SQL. Ідея полягає в тому, що для виконання операторів SQL різного виду користувач повинен мати різні повноваження. Користувач, що створив таблицю БД, має повний набір повноважень для роботи із цією таблицею. У їхнє число входить повноваження на передачу всіх або частини повноважень іншим користувачам, включаючи повноваження на передачу повноважень. Повноваження користувачів описуються в спеціальних таблицях-каталогах, контроль повноважень підтримується на мовному рівні.
9. Створення запиту. Поняття вибірки. Оператор SELECT та приклади його використання
Назва мови запитів SQL є англійською абревіатурою слів, що перекладаються як Структурована Мова Запитів. Ця назву вона одержала не дарма, адже Запити — ймовірно найбільш часто використовуваний аспект SQL. Найбільша частина користувачів SQL найчастіше використовують цю мову саме для створення запитів. Тому сьогодні розглянемо SQL з точки зору запиту і того як він виконується в цій мові.
Запит — команда яку користувач віддає своїй СКБД, і яка повідомляє їй, яку інформацію потрібно вивести з таблиць у пам’ять. Ця інформація звичайно надсилається безпосередньо на екран комп’ютера, хоча в більшості випадків, її можна також передати принтеру, зберегти у файлі (як об’єкт у пам’яті комп’ютера), або надати як вихідну інформацію для іншої команди або процесу.
Всі запити в SQL складаються з одиночної команди, структура якої оманливо проста, тому що її потрібно розширяти таким чином щоб виконати складні оцінки і обробки даних. Ця команда називається — SELECT (ВИБІР).
У найпростішій формі, команда SELECT просто дає інструкції базі даних щоб вибрати інформацію з таблиці. Наприклад, можна було б вивести повний вміст таблиці STUDENTS надрукувавши наступне:
SELECTsnum, sname, syear, sgrup
FROMStudents;
Якщо ВИ хочете бачити кожен стовпець таблиці, існує необов’язкове скорочення. Зірочка (*), яке може використовуватися для виведення повного списку стовпців наступним чином:
SELECT * FROM Students;
В загальному випадку, команда SELECT починається з ключового слова SELECT, за яким стоїть пропуск. Після цього повинен стояти список імен стовпців, які потрібно вибрати, відокремлених комами. Ключове слово FROM, що йде далі, супроводжується пропуском і іменем таблиці, до якої робиться запит. В кінці ставиться крапка з комою (;).
Таблиці мають тенденцію ставати дуже великими, оскільки з часом до них додається все більше і більше рядків, з яких користувача цікавлять лише деякі. SQL дає можливість встановлювати критерії для визначення рядків, що будуть обрані для виведення.
WHERE — пропозиція команди SELECT, яка дозволяє установлювати логічні функції (предикати), умова яких може бути істинним або хибним для будь-якої таблиці. Команда вибирає лише ті рядки, для яких таке твердження вірне.
SELECT *
FROM Students
WHERE syear=1984;
Синтаксис директиви WHERЕ дозволяє вказувати після імені стовпчика оператор порівняння, а потім вказувати значення. У наведеному вище прикладі використовується лише рівність. Але можна застосовувати також інші оператори порівняння після WHERE:
!= ,<> не рівно
,= менше, більше, менше рівне, більше рівне
LIKE-рівне фрагментові тексту.
10. Реляційна алгебра і реляційне числення. Основні операції реляційної алгебри
В маніпуляційній складовій реляційної моделі даних визначаються два базові механізми маніпулювання реляційними даними: основана на теорії множин реляційна алгебра і реляційне числення, що базується на математичній логіці (вірніше, на численні предикатів першого порядку). Всі ці механізми володіють однією важливою властивістю: вони замкнені відносно поняття відношення. Це означає, що вирази реляційної алгебри і формули реляційного числення визначаються над відношеннями реляційні БД і результатами обчислень також є відношення. Як наслідок, будь-який вираз або формула можуть інтерпретуватися як відношення, що дозволяє використовувати їх в інших виразах або формулах. Основна ідея реляційної алгебри полягає в тому, що оскільки відношення є множинами, засоби маніпулювання відношеннями можуть базуватися на традиційних теоретико-множинних операціях, додатково до деяких спеціальних операцій, специфічних для баз даних. Набір основних алгебраїчних операцій, запропонований Коддом, складається з восьми операцій, які діляться на два класи, - теоретико-множинні операції і спеціальні реляційні операції. До складу теоретико-множинних операцій входять операції:
-
обєднання відношень;
-
перетин відношень;
-
взяття різниці відношень;
-
Декартовий добуток відношень.
Спеціальні реляційні операції включають:
-
обмеження відношення;
-
проекція відношення;
-
зєднання відношень;
-
ділення відношень.
Крім того, до складу алгебри входить операція присвоювання, що дозволяє зберігати в базі даних результати обрахунку алгебраїчних виразів, і операція перейменування атрибутів, яка дає можливість коректно сформувати заголовок (схему) результуючого відношення. При виконанні операції обєднання двох відношень одержується відношення, щ містять всі кортежі, що входять хоча б в одне з відношень-операндів. Операція перетину двох відношень дозволяє одержати відношення, що включає всі кортежі, які входять до обох відношень-операндів. Відношення, що є різницею двох відношень, включає всі кортежі, що входять у відношення - перший операнд; такі, що жоден з них не входить у відношення, яке є другим операндом. Результат операцій: відношення. При виконанні цієї операції необхідно памятати про сумісність відношень по об’єднанню: два відношення сумісні по об’єднанню в тому і лише в тому випадку, коли володіють однаковими заголовками. Вибірка (обмеження). Результатом обмеження відношення за деякою умовою є відношення, що містить кортежі відношення-операнда, яке задовольняє цій умові.