- •Поняття інформаційної системи. Поняття інформаційних технологій. Міжнародні інформаційні системи та технології
- •Життєвий цикл інформаційних систем
- •Поняття бази даних (бд). Місце бд в інформаційних системах
- •Розвиток основних понять представлення даних. Приклад щодо нарахування заробітної плати
- •Розвиток основних понять представлення даних. Приклад щодо обліку кадрового складу
- •Системи управління базами даних (субд). Головні поняття. Основні функції субд
- •Різні архітектурні рішення, які використовуються при реалізації багато користувальницьких субд. Централізована архітектура
- •Різні архітектурні рішення, які використовуються при реалізації багато користувальницьких субд. Технологія з мережею та файловим сервером
- •Різні архітектурні рішення, які використовуються при реалізації багато користувальницьких субд. Технологія «клієнт-сервер»
- •Різні архітектурні рішення, які використовуються при реалізації багато користувальницьких субд. Триланкова архітектура «клієнт-сервер»
- •Огляд субд. Настільні субд. Серверні субд. Ms sql Server. Oracle. Серверні бази даних компанії івм
- •Різні уявлення про дані в базах даних
- •Основні етапи проектування бази даних
- •Перша стадія концептуального проектування бази даних. Опис інформаційного представлення предметної області. Er-діаграма
- •Перша стадія концептуального проектування бази даних. Атрибут. Зв’язки. Максимальні кардинальні числа
- •Побудова концептуальної моделі у вигляді er-діаграми. Головні етапи побудови Побудова концептуальної моделі у вигляді er-діаграми Перший етап
- •Другий етап
- •Третій етап
- •Побудова концептуальної моделі у вигляді er-діаграми. Моделювання локальних представлень
- •Побудова концептуальної моделі у вигляді er-діаграми. Об’єднання локальних представлень
- •Побудова концептуальної моделі у вигляді er-діаграми. Обмеження цілісності
- •Друга стадія концептуального проектування бд. Представлення концептуальної моделі засобами моделі даних субд
- •Друга стадія концептуального проектування бд. Типові моделі даних субд і представлення концептуальної моделі. Мережева модель даних
- •Друга стадія концептуального проектування бд. Типові моделі даних субд і представлення концептуальної моделі. Ієрархічна модель даних
- •Друга стадія концептуального проектування бд. Типові моделі даних субд і представлення концептуальної моделі. Реляційна модель даних
- •Друга стадія концептуального проектування бд. Типові моделі даних субд і представлення концептуальної моделі. Багатовимірна модель даних
- •Засоби автоматизованого проектування концептуальної моделі
- •Використання формального апарату для оптимізації схем відношень. Проблема вибору раціональних схем відношень
- •Використання формального апарату для оптимізації схем відношень
- •Функціональні залежності між атрибутами відношень
- •Використання формального апарату для оптимізації схем відношень. Декомпозиція схеми відношення
- •Вибір раціонального набору схеми відношень шляхом нормалізації. Нормальні форми
- •Приклади нормалізації до 3нф
- •Фізичні моделі даних (внутрішній рівень). Структура пам’яті комп’ютера
- •Представлення екземпляра логічного запису
- •Організація обміну між оперативною і зовнішньою пам’яттю
- •Структура зберігання даних у зовнішній пам’яті комп’ютера. Послідовне розміщення фізичних записів
- •Пошук запису із заданим значенням ключа
- •Структура зберігання даних у зовнішній пам’яті комп’ютера. Розміщення фізичних записів у вигляді спискової структури
- •Пошук запису із заданим значенням ключа
- •Структура зберігання даних у зовнішній пам’яті комп’ютера. Використання індексів. В-дерева
- •Пошук і читання запису із заданим значенням ключа
- •Модифікація (коректування) запису
- •Видалення запису
- •Додавання запису
- •Структура зберігання даних у зовнішній пам’яті комп’ютера. Розміщення записів з використанням хешування
- •Пошук запису із заданим значенням ключа і читання
- •Модифікації запису
- •Видалення запису
- •Додавання запису
- •Загальна структура сучасної субд (на прикладі ms sql Server)
- •Архітектура бд. Логічний рівень
- •Тип даних hierarchyid
- •Просторові типи даних
- •Індекси
- •Представлення
- •Складки
- •Обмеження
- •Правила
- •Значення за замовчуванням
- •Архітектура бд. Фізичний рівень
- •Файли і файлові групи
- •Сторінки і екстенти
- •Сторінки файлів даних
- •Організація таблиць та індексів
- •Управління роботою з екстентами і вільним місцем
- •Відстежування вільного місця
- •Програмне забезпечення роботи з сучасними бд. Основні завдання пз бд
- •Програмне забезпечення роботи з сучасними бд. Проблеми створення і ведення реляційних бд
- •Поняття мови sql і його основні частини. Історія виникнення і стандарти мови sql
- •Поняття мови sql і його основні частини. Переваги мови sql. Загальна характеристика sql
- •Напрями розвитку бд. Об’єкто-орієнтований підхід до організації бд
- •Об'єктно-орієнтоване програмування
- •Об'єктно-орієнтовані бази даних
- •Напрями розвитку бд. Об’єктно-реляційні субд
- •Напрями розвитку бд.. Розподілені бд. Сховища даних
- •Сховища даних
Програмне забезпечення роботи з сучасними бд. Проблеми створення і ведення реляційних бд
При створенні бази даних і організації роботи з нею виникають три основні проблеми:
власне створення бази даних (створення таблиць, індексів, обмежень цілісності);
забезпечення безпеки і розмежування доступу;
організація доступу до елементів таблиці (вибірка, редагування, видалення, додавання).
Перша проблема може бути вирішена за допомогою створення в кожній конкретній СУБД деякої утиліти, що дозволяє користувачеві в певний момент здійснювати всі необхідні дії із створення бази даних. Проте це не повністю вирішує проблему. Така утиліта не дозволяє створити таблицю динамічно під час роботи прикладної програми, не дозволяє, наприклад, додати в таблицю сформований стовпець під час роботи призначеної для користувача програми. Необхідні засоби, що дають можливість формування під час роботи прикладної програми запити на зміну структури і вмісту бази даних. Те ж саме можна сказати і про вирішення другої проблеми.
Детальніше розглянемо можливий шлях вирішення третьої проблеми. Організація доступу до бази даних є найважливішою функцією інформаційної системи. Користувачі постійно працюють з даними. Розглянемо простий приклад. Нехай у нас є таблиця СТУДЕНТ, що зберігає інформацію наступного типу:
СТУДЕНТ (Код студента, Прізвище, Ім'я, По батькові, Дата вступу).
Тепер ми хочемо виконати деякий запит до бази даних, результатом якого повинні стати ті рядки таблиці СТУДЕНТ, для яких дата вступу виявиться більше 01.06.2006. Розглянемо послідовність дій для реалізації цього запиту.
Отримуємо доступ до таблиці СТУДЕНТ і встановлюємо покажчик поточного рядка на перший рядок таблиці.
Аналізуємо поле "Дата вступу" у поточному рядку.
Якщо значення "Дата вступу" > "01.06.2006", роздруковуємо на екрані дані про абітурієнта.
Якщо таблиця не закінчилася, переміщаємо покажчик поточного рядка на наступний рядок і переходимо до кроку 2, інакше закінчуємо роботу.
Будь-яка людина, знайома з програмуванням, легко уявить собі реалізацію подібного алгоритму будь-якою мовою програмування високого рівня. Ось, зокрема, приклад реалізації на Object Pascal:
Table.First;
while (not Table.Eof) do
begin
if FieldByName("Дата вступу").Value >
"01.06.2006"
then List.Add(FieldByName("Прізвище").AsString);
Table.Next;
end;
У цьому випадку розробник застосування сам організовує роботу по вибірці даних, програмуючи кожен рух по таблиці (здійснює навігацію по таблиці). Такий підхід до обробки даних, орієнтований на послідовну роботу з окремими записами, називається навігаційним. Тут конкретною мовою програмування ми описуємо процедуру – послідовність дій, необхідних для здобуття результату. Мови, в яких використовується такий підхід, називаються процедурними. Вочевидь, що із зростанням складності запиту істотно зростає складність процедури і, відповідно, об'єм тексту програми.
При роботі з інформаційною системою користувач реалізує свої запити до бази даних за допомогою розроблених програмістами прикладних програм. При навігаційному підході мають бути запрограмовані всі можливі запити. Вочевидь, що заздалегідь передбачити і запрограмувати всі запити, потреба в яких може виникнути неможливо. З урахуванням того, що переважна більшість користувачів не володіють навиками програмування, це означає, що об'єм їх дій буде обмежений межами написаних програм, а саме, тими запитами, реалізація яких передбачена заздалегідь.
Крім того, повинен враховуватися механізм взаємодії в межах архітектури "клієнт – сервер". Призначена для користувача програма виконується на комп'ютері – клієнт. Запит до бази даних реалізується комп'ютером – сервером. Необхідний механізм формування в призначеній для користувача програмі клієнта запиту до бази даних сервера. У цьому випадку навігаційний підхід неприйнятний. У зв'язку з цим, для роботи з базами даних розроблений і використовується інший підхід, заснований на використанні так званих мов запитів, які задають не послідовність необхідних дій, а умови, яким повинен задовольняти результат (при додаванні стовпця, вибірці запису, додаванні запису і т. п.). Такий підхід вирішує усі три вищеперелічені проблеми.
З цією метою розроблений і активно використовується у всіх базах даних – спеціальна мова запитів SQL. Особливо відзначимо, що основою мови є операції реляційної алгебри.
Мова SQL (Structured Query Language – структурована мова запитів) застосовується для спілкування користувача з реляційною базою даних і складається з трьох частин [23]:
DDL (Data Definition Language) – мова визначення даних. Призначена для створення бази даних (таблиць, індексів і т.д.) та редагування її схеми.
DCL (Data Control Language) – мова управління даними. Містить оператори для розмежування доступу користувачів до об'єктів бази даних.
DML (Data Manipulation Language) – мова обробки даних. Містить оператори для внесення змін до вмісту таблиць бази даних.
Як видно з написаного вище, SQL вирішує всі розглянуті раніше питання, надаючи користувачеві досить простий і зрозумілий механізм доступу до даних, не пов'язаний з конструюванням алгоритму і його описом мовою програмування високого рівня. Так, замість вказівки того, як необхідно діяти, користувач за допомогою операторів SQL пояснює СУБД, що йому потрібно зробити. Далі СУБД сама аналізує текст запиту і визначає, як саме його виконувати.
У архітектурі "клієнт – сервер" мова SQL займає дуже важливе місце. Саме вона використовується як мова спілкування клієнтського програмного забезпечення з серверною СУБД, розташованою на віддаленому комп'ютері. Так, клієнт посилає серверу запит мовою SQL, а сервер розбирає його, інтерпретує, вибирає план виконання, виконує запит і посилає клієнтові результат.
Поглянемо, як виглядає запит мовою SQL, що вирішує завдання про вибірку студентів по даті вступу.
SELECT Прізвище
FROM Студент
WHERE Дата вступу > "01.06.2006"
Може скластися помилкове враження, що поява мови SQL є альтернативою мов програмування високого рівня. Це не відповідає дійсності. Виконання запиту засобами SQL все одно зводиться до роботи з окремими записами, і від цього нікуди не дітися. Важливо розуміти, що поява мови SQL дала, принаймні, дві нові можливості.
З'явився новий рівень абстракції між користувачем і СУБД. Цей рівень знаходиться ближче до користувача, чим рівень програмування мовою високого рівня, що знижує вимоги до кваліфікації користувачів.
Багато типових завдань, що виникають при роботі з базами даних, і раніше вирішувалися кожним програмістом по-своєму (частенько дублюючи дії іншого програміста) вирішені реалізацією мови SQL. Таким чином, відпала необхідність самостійного вирішення багатьох проблем, вирішених у СУБД відповідним чином. Мова SQL надає засоби для доступу до цих типових можливостей СУБД. При створенні бази даних і організації роботи з нею виникають три основні проблеми:
