- •Глава 1. Основи теорії баз даних 14
- •5. Фізичні моделі баз даних 74
- •Глава 2. Мова формування запитів sql 94
- •4. Мова запитів Data Query Language 101
- •5. Оператори маніпулювання даними 119
- •6. Вбудований sql 123
- •Глава 3. Моделювання та проектування баз даних засобами 140
- •Глава 4. Розроблення баз даних в середовищі ms sql Server 177
- •4. Мова бд Transact-sql: призначення та загальна характеристика 194
- •6. Робота з таблицями бази даних 224
- •7. Збережувані процедури в середовищі ms sql Server 234
- •Глава 5. Сучасні напрямки розвитку баз даних. 259
- •Глава 1. Основи теорії баз даних
- •1. Місце та роль баз даних та баз знань в інформаційних системах
- •1.1 Історія розвитку інформаційних технологій
- •1.2. Етапи розвитку баз даних
- •1.3 Архітектура бд
- •1.4. Класифікація баз даних
- •1.5. Бази даних з розподіленим доступом
- •Розподілені бази даних
- •1.6. Локальні бази даних
- •Питання до теми
- •2. Моделювання даних. Три видатні моделі даних
- •2.1. Поняття про моделі даних
- •2.2. Реляційна модель даних
- •2.2.1 Теоретичні основи реляційної бд.
- •2.2.2 Теоретико-множинні операції реляційної алгебри
- •2.2.3 Спеціальні операції реляційної алгебри
- •2.3 Мережева модель даних
- •2.4 Ієрархічна модель даних
- •2.5 Вибір моделі представлення даних у базі даних
- •Питання до теми
- •3. Етапи проектування бази даних
- •3.1. Об‘єктно-орієнтована декомпозиція предметної області
- •3.2. Проектування інфологічної моделі предметної області
- •3.3. Створення концептуальної схеми бази даних
- •3.4. Створення атрибутивної моделі бази даних
- •Послідовність створення бази даних
- •Зовнішня та внутрішня схеми бази даних
- •Питання до теми
- •4. Нормалізація даних
- •4.1.Основні засади нормалізації даних
- •4.2. Перша нормальна форма
- •4.3. Друга нормальна форма
- •4.4. Третя нормальна форма
- •4.5. Четверта нормальна форма
- •4.6. Вимоги до реляційних систем
- •Питання до теми
- •5. Фізичні моделі баз даних
- •5.1. Файлові структури збереження даних
- •5.2. Організація файлів прямого та послідовного доступу
- •5.3. Індексні файли
- •5.3.1 Файли з щільним індексом
- •5.3.2 Файли з нещільним індексом (індексно-послідовні файли)
- •5.3.3. Індексні файли у вигляді в - дерев
- •5.3.4. Інвертовані списки
- •5.3.5.Хешовані файли
- •5.3.6. Кластерізований індекс
- •5.4. Безфайлові моделі фізичної організації даних
- •Питання до теми
- •Глава 2. Мова формування запитів sql
- •1. Історія розвитку sql
- •2. Структура мови sql
- •3. Типи даних у мові sql
- •4. Мова запитів Data Query Language
- •4.1. Оператор вибору select
- •4.2. Предикати оператора select
- •4.3. Сукупні функції sql
- •4.4. Приклади використання оператора select
- •4.5. Внутрішнє та зовнішнє об‘єднання таблиць
- •4.6. Вкладені запити
- •Питання до теми
- •5. Оператори маніпулювання даними
- •Питання до теми
- •6. Вбудований sql
- •6.1. Sql та клієнтські додатки
- •6.2.Особливості вбудованого sql
- •6.3. Оператори пов'язані з багаторядковими запитами
- •Оператор визначения курсора
- •Оператор відкриття курсора
- •Оператор читання чергового рядка курсора
- •Оператор закриття курсора
- •Видалення та оновлення даних з використанням курсора
- •6. 4. Збережувані процедури
- •Питання до теми
- •Глава 3. Моделювання та проектування баз даних засобами case - технології erwin
- •1. Призначення пакету erwin
- •2. Проектування логічної моделі бази даних в erWin
- •2.1. Створення логічної моделі бази даних на рівні визначень
- •Внесення об’єкту до моделі
- •Визначення (Definition) та опис об’єктів
- •2.2. Створення логічної моделі бази даних на рівні атрибутів.
- •Внесення первинного ключа
- •2.3. Встановлення зв’язків в логічній моделі бази даних в erWin
- •Встановлення зв’язків
- •Для створення нового зв’язку слід:
- •Зовнішні ключі
- •Рекурсивний зв‘язок та ім‘я ролі
- •2.4. Встановлення типів залежності об’єктів та їєрархія наслідування.
- •Створення категоріального зв’ язку
- •2.5. Правила збереження цілістності даних
- •Встановлення правил цілістності посилань
- •2.6. Нормалізація даних в erWin
- •Приведення сутності до першої нормальної форми
- •Приведення сутності до другої нормальної форми
- •Приведення сутності до третьої нормальної форми
- •Питання до теми
- •3. Проектування фізичної моделі даних в erWin
- •3.1. Основні визначення та поняття фізичної моделі даних
- •2. Завдання правил валідації, значень по замовчуванню та індексів
- •3.3. Створення представлень, правил валідації та значень по замовчуванню для представлень у фізичній моделі бд
- •3.4. Пряме проектування бази даних
- •4. Збережувані процедури та тригери в erWin
- •4.1. Загальні відомості
- •4.2. Тригери цілісності посилань (ri - тригери)
- •4.3. Правила перевизначення тригерів
- •4.4. Створення та редагування тригерів в erWin.
- •Питання до теми
- •Глава 4. Розроблення баз даних в середовищі ms sql Server
- •1. Архітектура типових моделей зберігання даних та способи їх оброблення
- •1.1. Централізована база даних
- •1.2. Розподілена база даних
- •1.3. Файл-серверна технологія оброблення даних
- •1.4. Клієнт-серверна технологія оброблення даних
- •Питання до теми
- •2. Призначення, основні можливості та структура бази даних ms sql server2000
- •2.1. Призначення та основні можливості бд ms sql server2000
- •2.2. Архітектура бази даних ms sql server 2000
- •2.2.1. Логічний та фізичний рівні представлення бази даних
- •2.2.2. Файли і групи файлів
- •Групи файлів.
- •Питання до теми
- •3. Програмне забезпечення ms sql Server 2000
- •3.1. Програмне забезпечення сервера бд.
- •3.2. Програмне забезпечення клієнта бд
- •3.3. Бібліотеки
- •3.4. Дослідження об'єктів бд за допомогою засобу Enterprise Manager
- •3.5. Виконання запитів до бази даних за допомогою засобу Query Analyzer
- •3.6. "Стеження" за виконуваними базою даних діями за допомогою програми sql Profiler
- •3.7. Імпорт і експорт даних за допомогою Data Transformation Services (dts)
- •3.8. Огляд інших компонентів ms sql Server 2000
- •Питання до теми
- •4. Мова бд Transact-sql: призначення та загальна характеристика
- •4.1. Елементи Transact-sql
- •Коментарі:
- •Алфавіт:
- •Ідентифікатори:
- •Ключові слова.
- •Вирази.
- •Оператори:
- •4.2. Типи даних
- •Нецілочисельні типи даних:
- •Питання до теми
- •Проектування та створення бд ms sql Server 2000
- •5.1. Реєстрація сервера та підготовка його до роботи
- •5.2. Створення бд за допомогою erWin
- •5.3. Створення бд за допомогою sql Server Enterprise Manager
- •5.4. Створення бд за допомогою команд Transact-sql
- •Розглянемо параметри цієї команди:
- •Питання до теми
- •6. Робота з таблицями бази даних
- •6.1. Способи створення та модифікації таблиць
- •6.1.1. Створення таблиці за допомогою Enterprise Manager
- •6.1.2. Створення таблиці за допомогою Transact-sql
- •6.2. Заповнення таблиць даними
- •6.3. Способи модифікації даних
- •6.4. Команда вибору даних select. Використання підзапитів при роботі з бд
- •6.5. Використання кількох таблиць в одному запиті при роботі з базами даних
- •6.6. Знищення таблиць
- •6.7. Модифікація даних з використанням представлень
- •6.8. Управління безпекою даних за допомогою представлень
- •Питання до теми
- •7. Збережувані процедури в середовищі ms sql Server
- •7.1. Призначення та використання процедур, що зберігаються
- •7.2. Створення, модифікація та вилучення процедур, що зберігаються
- •7.3. Виконання збережуваних процедур
- •7.4. Класифікація збережуваних процедур
- •7.4.1. Процедури, що виконують розрахунки
- •7.4.2. Процедури, що повертають набір записів
- •7.4.3. Адміністративні процедури
- •7.5. Знищення збережуваних процедур
- •If object_id('накладна_зведена_інформація') is not null
- •Drop procedure [накладна_зведена_інформація]
- •Знищити збережувану процедуру можна за допомогою контекстного меню у Query Analyzer чи Enterprise Manager, обравши відповідне меню «Delete» цільового обєкта.
- •Питання до теми
- •8. Створення та використання тригерів
- •8.1. Призначення тригерів та особливості їх використання
- •8.2. Створення та вилучення тригерів
- •8.3.Тригери вставки і оновлення
- •8.4. Тригери вилучення
- •8.5. Вкладені тригери
- •8.6. Знищення тригерів
- •Питання до теми
- •9. Створення та використання клієнтських додатків
- •9.1. Використання rad-технологій для розроблення інтерфейсу клієнтської частини бази даних
- •Питання до теми
- •Глава 5. Сучасні напрямки розвитку баз даних.
- •1.Об‘єктно-орієнтовані скбд
- •Стандарти об‘єктних баз даних
- •Взаємодія об‘єктних баз даних з іншими стандартами
- •Сучасні промислові об‘єктно-орієнтовані скбд
- •Дедуктивні бази даних
- •3. Паралельні бази даних
- •4. Бази даних в Інтернеті
- •4.1. Розподілені обчислення – Cloud системи
- •Рівні Cloud системи
- •4.2. Sql Azure Database як інноваційна технологія баз даних
- •5. Засоби інтелектуального аналізу даних
- •Питання до теми
- •Література
- •Предметний вказівник
- •Тест з дисципліни “Організація баз даних та знань” Модуль 1
- •«Моделювання баз даних в середовищі erWin» Тест до модуля 1
- •Тест до модуля 2
- •Додаток 1 приклади предметних областей рекомендованих для дослідження та моделювання
- •Додаток 2
- •Додаток 3 Задачі на формування запитів sql
- •Задачі на оператори маніпулювання даними
- •Завдання до контрольних робіт
Питання до теми
Яке призначення оператора SELECT?
Яким чином задається умова відбору даних в операторі SELECT?
Які предикати умови ви знаєте ?
В яких випадках використовують певний предикат?
Які речення в операторі SELECT забезпечують групування даних?
Які речення в операторі SELECT забезпечують сортування даних?
Що таке агрегативні функції?
Яким чином задається умова відбору даних для групи в операторі SELECT?
З якою частиною даних в базі даних оперують агрегативні функції?
Яким чином відображують у запиті зв‘язок між таблицями?
Як зв‘язок між таблицями реалізовано у стандарті SQL1, SQL2?
Що таке зовнішнє та внутрішнє об‘єднання таблиць?
В яких випадках використовують вкладені запити?
Якими службовими словами розширено використання вкладених запитів?
5. Оператори маніпулювання даними
До операцій маніпулювання даними відносяться три операції: введення нового запису, видалення запису (записів), коригування запису (записів), виконувані операторами INSERT, DELETE та UPDATE, відповідно.
Всі оператори маніпулювання даними дозволяють змінювати дані тільки однієї таблиці.
Оператор введення даних має наступний синтаксис:
INSERT INTO ім‘я_таблиці [(<список стовпців>)] VALUES (<список значень>)
Подібний синтаксис дозволяє ввести значення тільки одного запису. В тому випадку, коли список стовпців не задано введення відбувається у всі стовпці таблиці. Якщо у переліку стовців вказано не всі стовпці таблиці, то значення не вказаних стовпців автоматично встановлюється в NULL.
В набір даних також можуть бути введені функції та вирази. Єдиним обмеженням на ці функції та вирази є те, що вони повинні бути визначені на момент введення даних. Наприклад, до бібліотечного формуляра, заданого таблицею Exemplar (INV, ISBN, YES_NO, NUM_READER, DATE_IN, DATE_OUT) маємо внести дані про інвентарний номер екземпляру книжки, бібліотечний шифр, відмітку про наявність на полиці, номер читача, дату видачі та дату повернення книги [ ]. Причому для введення поточної дати використаємо функцію Get Date(), яка автоматично зчитує системну дату, а для введення дати повернення функцію DateADD (d. GetDate(),14), яка з поточної дати виділяє день та додає до виділеного значення 14 днів і таким чином формує дату повернення книги. Запишемо команду для книги з інвентарним номером 1872 та відповідними значеннями інших даних:
INSERT INTO Exemplar (INV, ISBN, YES_NO, NUM_READER, DATE_IN, DATE_OUT)
VALUES ( 1872, ‘5-88782-290-2’, NO, 344, GetDate(),DateADD (d. GetDate(),14))
Оператор введення даних дозволяє ввести одночасно декілька рядків таблиці, якщо їх можна вибрати з іншої таблиці. Для цього слід використати підзапит, заданий оператором SELECT.
Наприклад, можна внести всіх студентів, як читачів бібліотеки, до таблиці READER одним оператором, вибравши дані про них з таблиці STUDENT:
INSERT INTO READER (NAME_READER, ADRESS, HOME_PHONE, BIRTH_DAY)
SELECT (NAME_STUDENT, ADRESS, HOME_PHONE, BIRTH_DAY)
FROM STUDENT
Оператор видалення даних дозволяє знищити один або декілька рядків таблиці у відповідності з умовами видалення . Синтаксис оператора DELETE наступний:
DELETE FROM ім‘я_таблиці [WHERE <умови_відбору>]
Якщо умови відбору не задано, то з таблиці видаляються всі рядки, хоча сама таблиця залишається. Наприклад, для очищення таблиці продажу продукції за поточний місяць запишемо:
DELETE FROM Продаж_поточний.
Для видалення всіх замовлень від магазину “Фуршет” з таблиці ЗАМОВЛЕННЯ, яку ми розглядали в розділі 6.8, маємо написати вираз:
DELETE FROM ЗАМОВЛЕННЯ WERE [Замовник] =”Фуршет”
В частині WHERE може знаходитись вбудований запит. Наприклад , з бази даних заданої відношенням ЗАМОВНИК (код замовника, назва замовника, адреса, реквізити) та ЗАМОВЛЕННЯ (код замовлення, код замовника, дата замовлення, назва продукції, кількість, ціна, сума) видалити замовників, що замовляли продукцію не пізніше 31.12.2010 р. Текст оператора має наступний вигляд:
DELETE FROM ЗАМОВНИК
WERE [код замовника] IN (SELECT DISTINCT [код замовника]
FROM ЗАМОВНИК RIGHT JOIN ЗАМОВЛЕННЯ ON
ЗАМОВНИК.[ код замовника] = ЗАМОВЛЕННЯ.[код замовника]
WHERE Замовлення.[дата] < 31.12.2010)
В наведеному прикладі умова видалення замовника пов‘язана з терміном замовлення, тому для видалення використовується вкладений запит, який дозволяє вибрати замовлення, що надійшли до початку 2011 року і ,за рахунок зв‘язку між таблицями, визначити код замовника для вилучення. Оскільки замовлень у одного замовника може бути декілька, тобто, код замовника в результаті виконання підзапита може повторюватись декілька разів, використовуємо слово DISTINCT, щоб уникнути повторень. Для відображення зв‘язку між таблицями слугують слова RIGHT JOIN. Це вказує на те, що для кожного замовлення слід знайти відповідний запис у таблиці ЗАМОВНИК.
Для уникнення втрат даних на операцію DELETE можуть накладатися деякі обмеження. Взагалі, всі операції маніпулювання даними проводяться у відповідності з правилами збереження цілісності даних, але особливу увагу приділяють операціям вилучення даних та модифікації. В наведеному вище прикладі ми вилучили замовників з таблиці ЗАМОВНИК не зважаючи на те, що відповідні замовлення в таблиці ЗАМОВЛЕННЯ залишились. Для реальної бази даних така операція не припустима, тому що порушує цілістність даних, тобто логічну узгодженість даних. В такому випадку, в залежності від правила збереження цілісності, система запропонує спочатку вилучити дані з дочірньої таблиці, або автоматично вилучить ЗАМОВЛЕННЯ сама. Про засоби підтримки цілісності даних і правила збереження цілісності даних більш детально буде викладено в розділі 9. А зараз слід пам‘ятати, що не всі операції можуть бути виконані системою, хоча вираз написано правильно.
Операція оновлення використовується тоді коли маємо відкорегувати дані, що зберігаються в таблиці. Операція оновлення має наступний синтаксис:
UPDATE ім‘я_таблиці
SET ім‘я_стовпця = нове_значення
[WHERE умова_відбору ]
Частина WHERE не є обов‘язковою, як і в операторі DELETE. Вона дозволяє вибрати рядки, яких стосується операція модифікування. Якщо умову відбору не задано, то операцію модифікування буде застосовано до всіх рядків таблиці. В операторі UPDATE теж дозволено використання вкладених запитів. Наприклад: В базі даних заданій відношеннями СТУДЕНТ (код_студента, № зал_кн, ПІП, група) та ЗВЕДЕНА ВІДОМІСТЬ (код_екзамену, код_студента, дата, дисципліна, оцінка) замінити оцінку з дисципліни “Моделювання систем” студенту Бойко на “4”.
Оператор оновлення, що відповідає умові задачі, має вигляд:
UPDATE ЗВЕДЕНА ВІДОМІСТЬ
SET [оцінка]= “4”
WHERE [дисципліна] = “Моделювання систем” AND [код_студента] IN (SELECT [код_студента] FROM ЗВЕДЕНА ВІДОМІСТЬ JOIN СТУДЕНТ ON
ЗВЕДЕНА ВІДОМІСТЬ. [код_студента] = СТУДЕНТ.[код_студента]
WHERE СТУДЕНТ.[ПІП] = “Бойко”).
Завдання для контрольної роботи на оператори маніпулювання даними мови SQL знаходяться у додатку 3.