
- •Поняття баз даних.
- •Реляційні бази даних
- •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
Поняття транзакцій
Під транзакцією розуміють вплив на БД, який переводить її з одного цілосного стану в інший. Вплив виражається у зміні даних в таблицях бази.
Якщо одна зі змін, що вноситься в БД в рамках транзакції, завершується неуспішно, потрібно виконати відкат до стану бази даних, який мав місто до початку транзакції. Отже, всі зміни, що вносяться в БД в рамках транзакції, або одночасно підтверджуються всі, або не підтверджується жодне.
Розглянемо приклад. Нехай існує БД, що містить відомості про продаж товарів зі складу, що складається з таблиць:
Товари (Товар, Од. Виміру, Ціна за од.))
Покупці(Покупець, Місто, Адреса))
Накладні(Номер накладної, Дата, Покупець)
Продаж товарів(Товар, Номер накладної, Кількість)
Статистика по товару (Товар, Всього продано) – відомості про сумарний продаж кожного товару зі складу з початку року
Статистика по покупцю (Покупець, Всього продано) – відомості про сумарний продаж товарів кожному покупцеві з початку року
Тоді транзакція по додаванню в БД відомостей про продаж товару зі складу буде складатись з наступних операцій:
• додавання запису в таблицю "Продаж товарів";
• пошук запису по даному товару в таблиці "Статистика по товару" і збільшення значения поля "Всього продано" на значення "Кількість"; якщо запис по такому товару в таблиці "Статистика по товару" відсутній, його потрібно додати;
• пошук запису по даному товару в таблиці "Статистика по покупцю", обчислення вартості проданого товару і збільшення на це значения поля "Всього продано"; якщо запис по покупцю в таблиці "Статистика по покупцю" відсутній, його потрібно додати.
Якщо в рамках транзакції відбувся збій при виконанні однієї з цих операцій, необхідно скасувати результати виконання усіх інших операцій, інакше інформація в БД будет недостовірною (відкат транзакції).
Раніше ми розглянули цілісність посилань таблиць БД і такі механізми її здійснення, як правильні каскадні дії на записи в дочерніх таблицях при зміні або вилученні запису в батьківській таблиці. Цей приклад показує нам інший різновид цілісності - змістовну (семантичну) цілісність БД. Вимого змістовної цілісності визначає, що дані в БД повинні змінюватися таким чином, щоб не порушувались змістовні зв’язки, що склались між ними. Справді, якщо у випадку продажу товарів інформація про кожен продаж не буде врахована у відповідному запису таблиці "Статистика по товару", але при цьому буде врахована у відповідному запису таблиці "Статистика по покупцю", відбудеться порушення достовірності даних, хоча цілісність посилань БД не буде порушена. Порушення достовірності даних в цьому випадку легко перевірити: сума кількостей продажів всіх товарів з таблиці "Статистика по товару", помножених на відповідні ціни за одиницю товару, повинна збігатись із сумою продажу для всіх покупців з таблиці "Статистика по покупцю."
БД, які підтримуються в Delphi
Є чотири різновиди архітектури баз даних:
• локальні бази даних;
• архітектура "файл-сервер";
• архітектура "клієнт-сервер";
• багаторівнева (трирівнева N-tier або multi-tier) архітектура.