
- •Поняття баз даних.
- •Реляційні бази даних
- •1.3. Первинні ключі та індекси
- •1.4. Реляційні відношення (зв’язки) між таблицям
- •1.4.1. Відношення "один-до-багатьох"
- •1.4.2. Відношення "один-до-одного"
- •1.4.3. Відношення "багато-до-багатьох"
- •1.4.4. Зв’язки між записами однієї таблиці
- •1.5. Цілісність посилань (referencial integrity)
- •Індекси.
- •Поняття транзакцій
- •Локальні та файл-серверні бази даних
- •Загальний огляд засобів для роботи з базами даних
- •Побудова додатків баз даних в архітектурі "клієнт-сервер"
- •Interbase: деякі технічні характеристики
- •Питання з'єднання з видаленим сервером
- •Приклад бд “Облік товарів на складі”
- •Зміна визначення домена – після create domain (крім типу та not null)
- •Первинний ключ
- •Зовнішній ключ та визначення цілісності посилань
- •Використання генераторів та збережених процедур
- •Знищення таблиці
- •Використання підрядків (containing)
- •Додавання, зміна, видалення записів
- •Оператор insert
- •Явне вказання списку значень
- •Вказання значень за допомогою оператора select
- •Оператор delete
Побудова додатків баз даних в архітектурі "клієнт-сервер"
Реалізацію архітектури "клієнт-сервер" будемо розглядати для сервера InterBase. Пояснити такий вибір неважко. По-перше, InterBase - "рідний" сервер для Delphi (тому для доступу до нього не потрібно встановлювати додаткових драйверів. По-друге, в постачання Delphi Enterprise входить сервер InterBase 6.5 (на 5 користувачів).
Локальний InterBase може використовуватися для налагоджувальних цілей. Після того, як додаток відладжений на локальній версії SQL-сервера, відбувається масштабування додатку (upsizing}. БД переноситься на мережевий сервер, а зміни в клієнтських застосуваннях при цьому мінімальні - необхідно змінити псевдонім БД і, можливо, скоректувати деякі параметри з'єднання додатку з сервером.
При перенесенні додатків, раніше розроблених для застосування в архітектурі "файл-сервер", потрібно не тільки частково або повністю переписувати додатки клієнтів, але і перетворювати локальну БД в серверну. Для цього під управлінням серверної СУБД (наприклад, InterBase) створюють БД на сервері, куди потім "перекачують" дані з локальних СУБД, реалізованих, наприклад, за допомогою Paradox. Основна проблема, що постає в цьому випадку, - несумісність деяких форматів даних або їх відсутність. Наприклад, InterBase не підтримує поля типу Boolean (Logical), і їх необхідно реалізовувати за допомогою стовпців типу CHAR(l); InterBase не підтримує автоінкрементні поля Paradox - для забезпечення унікальності значень в числових полях в БД Interbase використовують генератори і так далі При виникненні подібних проблем слід вивчити питання сумісності типів даних локальної СУБД і вибраної серверної СУБД.
SQL-сервер InterBase і його основні компоненти
SQL-сервер Interbase є призначений для зберігання і опрацювання великих об'ємів даних в умовах одночасної роботи з БД безлічі клієнтських додатків. Масштаб інформаційної системи при цьому довільний - від системи рівня робочої групи (під управлінням Novell Netware або Windows на базі IBM РС) до системи рівня великого підприємства (на базі серверів IBM, Hewlett-Packard, SUN)
Розглянемо низку технологій InterBase, використання яких забезпечує максимальне обчислювальне розвантаження клієнтського застосування і гарантує високу безпеку і цілісність інформації.
Для завдання посилальній і зміствоної цілісності в БД визначаються:
• відношення підлеглості між таблицями БД шляхом визначення первинних (PRIMARY) ключів у батьківських і зовнішніх (FOREIGN) ключів у дочірніх таблиць;
• обмеження на значення окремих стовпців (CONSTRAINT); при цьому умови обмежень можуть бути різноманітні - від вимоги попадання значення в певний діапазон або відповідності масці до певного відношення з однією або декількома записами з іншої таблиці (або багатьох таблиць) БД
• тригерів (TRIGGER) - підпрограм, що автоматично виконуються сервером до або (и) після події зміни запису в таблиці БД;
• генератори (GENERATOR) – для створення і використання унікальних значень потрібних полів.
Для прискорення роботи клієнтських застосувань з віддаленою БД можуть бути визначені збережені процедури, (STORED PROCEDURE), які є підпрограмами, що приймають і повертають параметри, і можуть виконувати запити до БД, умовні розгалуження і циклічну обробку. Збережені процедуры пишуться на спеціальній алгоритмічній мові. В них програмуються послідовності запитів до БД, які часто повторюються. Текст процедур зберігається на сервері у відкомпільованому вигляді. Переваги у використанні збережених процедур очевидні:
• відпадає потреба синтаксичної перевірки кожного запита та його компіляції перед виконанням, що прискорює виконання запитів;
• відпадає потреба реалізації в клієнтській програмі запитів, що визначені в тілі збережених процедур;
• збільшується швидкість опрацювання транзакцій, т.як. замість іноді довгого SQL-запита по мережі передається відносно коротке звертання до збереженої процедури.
У складі запису БД можуть визначатися BLOB-поля (Binary Large Object, великий двійковий об’єкт), призначені для зберігання великих об'ємів даних у вигляді послідовності байтів. Таким чином можуть зберігатися текстові і графічні документи, файли мультимедіа, звукові файли і т.д. Інтерпретація BLOB-поля відбувається вдодатку, однак розробник може визначити так звані BLOB-фильтри для автоматичного перетворення вмісту BLOB-поля до іншого вигляду.
InterBase дає можливість використовувати визначені користувачем функції (User Defined Function, UDF), в яких можуть реалізовуватися функціональності, відсутні в стандартних вбудованих функціях InterBase (обчислення максимуму, мінімуму, середнього значення, перетворення типів і приведення букв до заголовних). Наприклад, в UDF можна реалізувати витягання зі значення дати номера дня, роки; визначення довжини символьного значення; усікання пропусків; різні математичні алгоритми і інше. Функція пишеться на будь-якій алгоритмічній мові, що дозволяє розробляти DLL (бібліотеки динамічного виклику), наприклад на Object Pascal.
InterBase може посилати повідомлення клієнтським застосуванням про настання якої-небудь події (EVENT). Одночасно працюючі додатки можуть обмінюватися повідомленнями через сервер БД, викликаючи процедури, що зберігаються, в яких реалізована ініціація потрібної події.
Для забезпечення швидкості виконання запитів і зняття з клієнтського додатка необхідності такі запити видавати в БД можна визначити віртуальні таблиці (або перегляди, VIEW), в яких об'єднуються записи з однієї або більше таблиць, що відповідають деякій умові. Робота з переглядом з клієнтського додатка нічим не відрізняється від роботи із звичайною таблицею. Підтримує перегляд сервер, реагуючи на зміну даних в БД. Перегляди можуть бути змінними і не допускаючими внесення в них змін.
Для доступу до БД використовується утиліта IBConsole. Вона працює з БД безпосередньо через InterBase API, оминаючи BDE. У IBConsole можна писати будь-які запити, будь то створення БД, таблиць, зміна структури даних, витягання даних з БД або їх зміна, а також призначення прав доступу до інформації для окремих користувачів.
Для управління SQL-сервером в цілому і окремими БД зокрема використовується утиліта Interbase Server Manager. Тут можна визначати параметри SQL-сервера, проводити збереження, відновлення БД, збірку "сміття", визначати нових користувачів, їх паролі і т д.
Для проглядання БД, роботи з таблицями, індексами, доменами, обмеженнями і ін. можуть використовуватися утиліти Database Desktop (вельми обмежено) і SQL Explorer.
Для перегляду і аналізу реальних процесів, що відбуваються на сервері при реалізації користувацького запиту, використовується утиліта SQL Monitor.