- •Глава 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
- •Задачі на оператори маніпулювання даними
- •Завдання до контрольних робіт
5.3.4. Інвертовані списки
Досить часто в БД виникає необхідність проводити операції індексації за вторинними ключами. Вторинним ключем може бути атрибут або набір атрибутів. До вторинного ключа не висувається вимога унікальності. Вторинному ключу відповідає набір даних з однаковим значенням цього вторинного ключа. Пошук за вторинним ключем має на меті вибірку набору даних з однаковим значенням вторинного ключа упорядкованих за первинним ключем.
Для прискорення доступу за вторинними ключами використовують структури, які називаються інвертованими списками.
Інвертований список , в загальному випадку - це дворівнева індексна структура. Тут на першому рівні знаходиться файл або частина файла, в якій упорядковано розташовані значення вторинних ключів. Кожен запис в інвертованому списку з відповідним значенням вторинного ключа має посилання на номер блока в ланцюгу блоків, що вміщують номери записів з заданим значенням вторинного ключа. Записи упорядковані за первинним ключем. Для одного файла БД може бути створено декілька інвертованих списків за різними вторинними ключами.
Значення вторинного ключа |
№ блока |
|
№ блока |
№ запису в БД |
Білий |
1 |
1 |
1 |
|
5 |
||||
25 |
||||
78 |
||||
Вишневий |
2 |
2 |
3 |
|
6 |
||||
8 |
||||
|
||||
3 |
2 |
|||
4 |
||||
11 |
||||
|
||||
… |
…. |
|||
Зелений |
3 |
N |
|
|
|
||||
|
||||
|
Рис. 5.4. Індексна структура у вигляді інвертованого списка
Кількість блоків дорівнює кількості вторинних ключів. Кількість звернень до зовнішнього пристрою визначається таким же чином, як і для файлів з нещільним індексом .
5.3.5.Хешовані файли
Хешовання - спосіб збереження даних, в якому адреса блока вираховується як функція від значення ключа. Головна ідея організації файлів з хешованим доступом полягає в розподілі записів файла між ділянками, кожна з яких складається з декількох блоків пам‘яті. Для хешованого файла існує хеш-функція, яка використовує в якості аргумента значення ключа файла і продуцює деяке число від 0 до максимального значення . Якщо ν - значення ключа, то h(v) вказує номер ділянки , де зберігається запис з цим значенням ключа.
Формування h(v) функції є складною задачею, яка не має однозначного рішення. Головна вимога до h(v) функції полягає в тому, що всі її значення повинні мати приблизно однакову ймовірність, для забезпечення рівномірного розміщення записів БД по всіх ділянках. Одна з стратегій знаходження h(v) функції має наступний алгоритм [ ]:
Інтерпритуємо значення ключа, як послідовність бітів, сформовану шляхом конкатенації значень всіх полів ключа. Ця послідовність має фіксовану довжину.
Поділимо послідовність бітів на групи, що складаються з фіксованого числа бітів, наприклад 16, або 32. Останню групу за необхідністю доповнюємо нулями.
Складаємо групи бітів як цілі числа.
Ділимо суму на кількість ділянок і використовуємо залишок як номер ділянки.
Додатково до файла з даними складається довідник ділянок, що вміщує набір показників. Кожний показник є адресою першого блока своєї ділянки. Якщо блоків в ділянці декілька, то перший блок має в своєму заголовку вказівку на другий блок, другий - на третій і т.д. В кожному блоці передбачене збереження фіксованої кількості записів - r. Простір необхідний для збереження одного запису називається субблоком.
Розглянемо базу даних з індексацією та хешованням на прикладі розділу британської енциклопедії, присвяченому динозаврам [ ]. Структуру таблиці та її вміст легко зрозуміти з рис. 5.5. Поле Назва утворює ключ для цієї таблиці. Один блок складається з двох субблоків. Один запис зай має один субблок, тобто, в одному блоці може бути розташовано тільки два записи. На початку блока є показчик, в якому відмічено стан субблоків - “1”, якщо субблок занятий, “0”, якщо вільний. Ліворуч зображено список ділянок ( можливо сторінок) до яких входять блоки. Слід відмітити, що структура файла та функція хешовання спрощені відносно реальних для полегшення розуміння матеріалу. В якості функції хешовання виберемо ділення по модулю 5 довжини ключового поля, тобто довжини назви. Номером ділянки тут буде залишок від ділення довжини ключового поля на 5. Якщо назва динозавра налічує 10 літер, то залишок від ділення на 5 дорівнює 0, отже опис цього динозавра слід помістити до ділянки з номером «0». Якщо всі субблоки ділянки з номером «0» заповнені, то її доповнюють новим блоком. Приклад: внести в базу даних динозаврів відомості про Еласмозавра (Elasmosaurus). Латиною назва динозавра складається з 12 літер (всі назви записують латиною). При діленні на 5 отримаємо залишок, що дорівнює 2, Тобто, Еласмозавр потрапить до другої ділянки, в перший субблок другого блока, тому що перший блок увесь заповнений. Між собою блоки однієї ділянки зв‘язані прямими посиланнями.
Вільний
простір
Заповнено-незаповнено
0 |
|
|
11 |
Диплодок |
Юрсь-кий |
Озеро |
Травоїдний |
90 |
15 |
Аллозавр |
Юрський |
Суша |
Плотоїдний |
35 |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
11 |
Птеродак-тиль |
Крейдя-ний |
Повітря |
Плотоїдний |
1 |
0 |
Стегозавр |
Юрський |
Суша |
Травоїдний |
20 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
10 |
Трайсератопс |
Крейдя-ний |
Суша |
Травоїдний |
25 |
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
11 |
Платео-завр |
Третич-ний |
Суша |
Травоїдний |
30 |
5 |
Бронтозавр |
Юрський |
Озеро |
Травоїдний |
70 |
25 |
|
|
|
|
|
|
|
|
|
2 |
0 |
|
|
|
|
|
|
|
4 |
|
|
11 |
Брахио-завр |
Юрсь-кий |
Озеро |
Травоїдний |
80 |
50 |
Компсогнат |
Юрський |
Суша |
Плотоїдний |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
|
10 |
Тиранно-завр |
Крейдя-ний |
Суша |
Плотоїдний |
50 |
8 |
|
|
|
|
|
|
|
Рис. 5.5. Таблиця з хешованим індексом та показниками ділянок