
- •Вступ до баз даних. Загальна характеристика основних понять
- •1.1. Розвиток основних понять представлення даних
- •Лекція 6
- •Друга стадія концептуального проектування бд. (Моделі даних субд. Представлення концептуальної моделі засобами моделі даних субд)
- •6.1. Представлення концептуальній моделі засобами моделі даних субд
- •6.2 Типові моделі даних субд і представлення концептуальної моделі
- •6.2.1. Мережева модель даних
- •6.2.2. Ієрархічна модель даних
- •6.2.3. Реляційна модель даних
- •6.2.4. Багатовимірна модель даних
- •6.3. Засоби автоматизованого проектування концептуальної моделі
- •Лекція 6
- •Друга стадія концептуального проектування бд. (Моделі даних субд. Представлення концептуальної моделі засобами моделі даних субд)
- •6.1. Представлення концептуальній моделі засобами моделі даних субд
- •6.2 Типові моделі даних субд і представлення концептуальної моделі
- •6.2.1. Мережева модель даних
- •6.2.2. Ієрархічна модель даних
- •6.2.3. Реляційна модель даних
- •6.2.4. Багатовимірна модель даних
- •6.3. Засоби автоматизованого проектування концептуальної моделі
- •Лекція 7
- •Формалізація реляційної моделі
- •7.1. Формалізований опис відношень і схеми відношень
- •7.2. Маніпулювання даними в реляційній моделі
- •7.3. Операції реляційної алгебри
- •Лекція 8
- •Використання формального апарату для оптимізації схем відношень
- •8.1. Проблема вибору раціональних схем відношень
- •8.2. Функціональні залежності (залежності між атрибутами відношення)
- •8.3. Декомпозиція схеми відношення
- •8.4 .Вибір раціонального набору схем відношень шляхом нормалізації
- •8.5. Приклад нормалізації до 3нф
- •8.6. Цілісна частина реляційної моделі. Реалізація умови цілісності даних в сучасних субд
- •Лекція 9
- •Фізичні моделі даних (внутрішній рівень)
- •9.1. Структура пам'яті еом
- •9.2. Представлення екземпляра логічного запису
- •9.3. Організація обміну між оперативною і зовнішньою пам'яттю
- •9.4. Структури зберігання даних у зовнішній пам'яті еом
- •9.4.1. Послідовне розміщення фізичних записів
- •Пошук запису із заданим значенням ключа
- •9.4.2. Розміщення фізичних записів у вигляді спискової структури
- •Пошук запису із заданим значенням ключа
- •9.4.3. Використання індексів (індексування)
- •Пошук і читання запису із заданим значенням ключа
- •Модифікація (коректування) запису
- •Видалення запису
- •Додавання запису
- •9.4.5. Розміщення записів з використанням хешування
- •Пошук запису із заданим значенням ключа і читання
- •Модифікації запису
- •Видалення запису
- •Додавання запису
- •9.4.6. Комбіновані структури зберігання
- •Лекція 10
- •Структура сучасної субд на прикладі Microsoft sql Server 2008
- •10.1 Загальна структура субд
- •10.2. Архітектура бази даних. Логічний рівень
- •Тип даних hierarchyid
- •Просторові типи даних
- •Індекси
- •Представлення
- •Складки
- •Обмеження
- •Правила
- •Значення за замовчуванням
- •10.3. Архітектура бази даних. Фізичний рівень
- •Файли і файлові групи
- •Сторінки і екстенти
- •Сторінки файлів даних
- •Організація таблиць та індексів
- •Управління роботою з екстентами і вільним місцем
- •Відстежування вільного місця
- •Лекція 11
- •Програмне забезпечення роботи з сучасними базами даних
- •11.1. Основні завдання програмного забезпечення баз даних
- •11.2. Проблеми створення і ведення реляційних баз даних
- •11.3. Поняття мови sql і його основні частини
- •11.3.1. Історія виникнення і стандарти мови sql
- •11.3.2. Переваги мови sql
- •11.3.2. Загальна характеристика sql
- •Термінологія
- •Різновиди sql
- •Лекція 12
- •Основні оператори мови sql. Інтерактивний sql
- •12.1. Загальне уявлення про основні оператори мови sql
- •12.2 Інтерактивний режим роботи з sql (інтерактивна sql)
- •12.3. Використання мови sql для вибору інформації з таблиці
- •12.4. Використання sql для вибору інформації з декількох таблиць
- •12.5. Використання sql для вставки, редагування і видалення даних у таблицях
- •Лекція 13
- •Використання мови sql у прикладних програмах
- •13.1. Програмний (вбудований) sql
- •13.2. Статичний sql
- •13.3. Динамічний sql
- •13.4. Інтерфейси програмування додатків (api). Db‑Library, odbc, oci, jdbc
- •Протокол odbc
- •Протокол jdbc
- •Бібліотека db-Library
- •Лекція 14
- •Напрями розвитку баз даних
- •14.1. Об'єктно-орієнтований підхід до організації баз даних
- •Об'єктно-орієнтоване програмування
- •Об'єктно-орієнтовані бази даних
- •Об'єктно-реляційні субд
- •14.2. Розподілені бази даних
- •14.3. Сховища даних
- •Основи криптології
13.4. Інтерфейси програмування додатків (api). Db‑Library, odbc, oci, jdbc
Як відмічено вище, програмний SQL відрізняється від звичайної, інтерактивної форми наявністю деяких спеціальних інструкцій, а також механізмом трансляції і виконання запитів. Таким чином, для вживання програмної SQL у тексті своїх програм програмістам необхідно ознайомитися з деяким специфічним набором інструкцій. Варто відмітити, що в різних СУБД ці набори інструкцій, взагалі кажучи, можуть дещо відрізнятися один від одного. У результаті виникає деяка проблема, пов'язана з непереносимістю програми.
Разом з описаним вище механізмом існує і активно застосовується ще один підхід, пов'язаний з наявністю спеціальних інтерфейсів, – API (application programming interface – інтерфейс програмування додатків). Ці API є бібліотеками функцій, розроблені для забезпечення зв'язку прикладної програми з СУБД за допомогою виконання SQL-запитів. Прикладна програма викликає спеціальні функції бібліотеки для передачі в СУБД SQL-запитів у текстовому вигляді і для отримання результатів виконання запитів, а також різноманітної службової інформації.
Застосування подібного підходу призводить до того, що програмістам більш не потрібно вивчати спеціальні набори інструкцій SQL, а необхідно лише вивчити спеціальну бібліотеку функцій. З урахуванням того, що механізм використання API є широко використовуваним і стандартним підходом (чого тільки вартий використання потужного апарату Windows API), для фахівців немає нічого нового у вивченні ще однієї бібліотеки, в даному випадку – для спілкування з СУБД.
Окрім цього, програма, що містить виклики деяких функцій спеціалізованої бібліотеки, нічим не відрізняється за схемою компіляції і виконання від звичайної програми. Так, подібна програма не вимагає застосування спеціалізованого препроцесора з механізмом роздільної компіляції. Може здатися, що підхід, зв'язаний з використанням бібліотек API, є найбільш прогресивним, насправді такий висновок навряд чи правильний. Так, на цей момент дуже активно використовуються і динамічний SQL і бібліотеки API. У кожному з цих підходів існують свої переваги, недоліки і кордони розумної застосовності. Як завжди, вибір того, яким з підходів скористатися, лежить на адміністративній групі розробників бази даних, яка приймає рішення залежно від особливостей конкретного завдання і наявних фахівців.
У даному розділі розглядається підхід, заснований на інтерфейсі програмування додатків.
Поглянемо, як працюють прикладні програми, що використовують різні API. Принципи роботи різних бібліотек аналогічні. Схема роботи додатку спільно з SQL API виглядає таким чином [5]:
програма отримує доступ до бази даних шляхом виклику однієї або декількох API-функцій, що підключають програму до СУБД і до конкретної бази даних;
для пересилки інструкцій SQL в СУБД програма формує інструкцію у вигляді текстового рядка і потім передає цей рядок як параметр при виклиці API-функції;
програма викликає виконання API-функції для перевірки стану переданої в СУБД інструкції і обробки помилок;
якщо інструкція SQL є запитом на вибірку, то, викликаючи API-функції, програма записує результати запиту в свої змінні; зазвичай за один виклик повертається один рядок або стовпець даних;
своє звернення до бази даних програма закінчує викликом API-функції, що відключає її від СУБД.
З інтерфейсів API, що є для реалізації SQL-запитів, на цей час виділилося декілька бібліотек, "стандартних" в тому сенсі, що вони активно застосовуються множиною розробників по всьому світу. Ця лекція не є детальним керівництвом по всім цим бібліотекам. Більше того, для їх професійного освоєння необхідне серйозне вивчення відповідної літератури. В межах цього курсу ми лише зробимо огляд цих бібліотек, розглянемо основні закладені в них ідеї. Детально ці SQL API описані, наприклад в [5].