
- •Розділ 1. Системи баз даних
- •Тема 1.1. Основні поняття баз даних
- •Основні характеристики субд
- •Можливості субд
- •Основні компоненти середовища скбд
- •Тема 1.2. Архітектура баз даних
- •Тема 1.3. Функції систем керування базами даних
- •Розділ 2. Моделі даних
- •Тема 2.1. Поняття про моделювання даних
- •Тема 2.2. Ієрархічна модель даних
- •Тема 2.3. Мережна модель даних
- •Тема 2.4. Реляційна модель даних. Вимоги до реляційної моделі.
- •Розділ 3. Реляційні бази даних
- •Тема 3.1. Реляційна структура даних.
- •Типи зв’язків між таблицями
- •Тема 3.2. Реляційна алгебра
- •Тема 3.3. Нормалізація відносин
- •1. Перша нормальна форма
- •2. Друга нормальна форма
- •3. Третя нормальна форма
- •Тема 3.4. Цілісність даних
- •Розділ 4. Проектування баз даних
- •Тема 4.1. Методологія проектування бази даних
- •Тема 4.2. Етапи проектування бази даних
- •Тема 4.3. Er-моделювання предметної області
- •Тема 4.4. Проектування реляційної бази даних.
Методичний посібник
теоретичного матеріалу
з курсу
«Бази даних»
для студентів спеціальності
«Розробка програмного забезпечення»
Розробив викладач:
Пожар Н. А.
Вступ
Від початку розвитку обчислювальної техніки сформувалися два основні напрями її використання.
Перший напрям — застосування комп'ютерів для виконання обчислень, які дуже складно або неможливо здійснювати вручну. Становлення цього напряму сприяло інтенсифікації методів чисельного розв'язання складних математичних задач і розвитку мов програмування, які орієнтовані на зручний запис чисельних алгоритмів.
Другий напрям — це використання засобів обчислювальної техніки в системах обробки даних та автоматизованих інформаційних системах. У широкому розумінні інформаційна система є програмним комплексом, функції якого полягають у забезпеченні надійного зберігання даних у пам'яті комп'ютера, виконанні специфічних для певного програмного застосування перетворень інформації та/або обчислень, наданні користувачам зручного й легкого в освоєнні інтерфейсу. Зазвичай обсяги інформації, з якими працюють такі системи, досить великі, а самі вони мають складну структуру. Класичними прикладами інформаційних систем є банківські, системи резервування авіаційних або залізничних квитків, місць у готелях тощо.
Другий напрям виник пізніше за перший, що було пов'язано з обмеженими можливостями комп'ютерів у галузі зберігання даних на зовнішніх носіях.
Системи керування даними в зовнішній пам'яті з'явилися лише після винайдення магнітних дисків. До цього прикладні програми самі визначали розташування даних на магнітній стрічці чи барабані й здійснювали обмін інформацією між оперативною та зовнішньою пам'яттю за допомогою програмно-апаратних засобів низького рівня (машинних команд або викликів відповідних програм операційної системи). Такий спосіб роботи не дозволяв або дуже ускладнював підтримку на одному зовнішньому носії кількох архівів інформації, якщо вони мали зберігатися тривалий час. Крім того, для кожної прикладної програми доводилося вирішувати проблеми іменування частин даних та їхньої структуризації в зовнішній пам'яті.
Кроком уперед був перехід до використання централізованих систем керування файлами. Для прикладної програми файл — це іменована область зовнішньої пам'яті, куди можна записувати й звідки можна зчитувати дані. Правила іменування файлів, спосіб доступу до даних, що в них зберігаються, та структура цих даних залежать зазвичай від конкретної системи керування файлами, інколи — від типу файла. Система керування файлами, або файлова система (ФС), яку ще називають файловою підсистемою операційної системи, виконує функції розподілу зовнішньої пам'яті, відображення імен файлів на відповідні адреси пам'яті та забезпечення доступу до даних.
Файлова система має низку особливостей, які значно обмежують її безпосереднє застосування у зберіганні й обробці великих обсягів складноструктурованих даних, призначених для колективного використання. Розглянемо найістотніші з них.
Завдяки використанню файлової системи встановлюється тісний зв'язок між фізичними даними і прикладною програмою. Файл створюється програмою. Окрім логіки прикладної задачі, програма реалізує логіку зображення даних, інтерпретує відповідні операції, переводить їх у примітивні файлові операції, обробляє файли, що містять дані. Отже, дані залежать від програми.
Кожний файл існує для забезпечення інформаційних потреб програми. Дані у файлах, як правило, не пов'язуються між собою, тобто відсутня інтеграція даних, що призводить до дублювання даних у різних файлах і, можливо, до суперечності стану системи.
У файлових системах відсутня динаміка, оскільки прикладні програми розробляються для виконання наперед відомих запитів і завдань. Вони не можуть виконати нетипові запити, які зазвичай вимагають отримання відповіді в режимі реального часу.
Як правило, дані з одних і тих самих файлів не можна спільно використовувати, оскільки подібна практика може призвести до некоректного змінення даних.
Дані у файлах використовуються неефективно. Це є прямим наслідком того, що файли й дані, які в них містяться, створюються і обробляються для задоволення інформаційних потреб конкретних програм, а не для адекватного відображення усієї предметної області.
Саме для подолання обмежень, пов'язаних із використанням файлових систем, і були розроблені системи баз даних.
Розділ 1. Системи баз даних
Тема 1.1. Основні поняття баз даних
У літературних джерелах існує чимало визначень поняття бази даних, які текстуально відрізняються одне від одного через те, що в них акцентується увага на особливостях процесів уведення та зберігання даних, але за своєю суттю ці визначення досить близькі. Розглянемо одне з них.
База даних (БД) — це сукупність взаємопов'язаних (звичайно складноструктурованих) даних, яку можна спільно використовувати та керування якою здійснюється централізовано.
Перелічимо основні властивості БД:
допущення для даних такої мінімальної надлишковості, яка сприяє їхньому оптимальному використанню в кількох програмних застосуваннях;
незалежність даних від програм;
наявність засобів для підтримки цілісності бази даних та захисту від неавторизованого доступу.
Система керування базами даних (СКБД) — це програмне забезпечення для ефективного, зручного і безпечного зберігання даних у БД, організації пошуку в ній та виведення даних на вимогу користувачів. Крім зазначених, СКБД має підтримувати ще низку функцій, про які йтиметься далі.
Банк даних — це система, що складається з БД, СКБД і прикладного програмного забезпечення, призначена для інформаційного обслуговування користувачів. Також уживається термін система баз даних. По суті, це певна прикладна система, яка використовує базу даних (відтак і СКБД, що підтримує цю БД) для вирішення конкретних завдань зберігання й обробки даних.
Найближчим попередником, що мав неабиякий вплив на появу й подальше формування баз даних, були файлові системи. Саме тому розглядати можливості, достоїнства й характерні особливості баз даних найлегше, порівнюючи їх з файловими системами.
Основні характеристики субд
Контроль за надлишковістю даних
Непротирічність даних
Підтримка цілісності бази даних (коректність та непротирічність)
Цілісність описується за допомогою обмежень
Незалежність прикладних програм від даних
Спільне використання даних
Підвищений рівень безпеки
Можливості субд
Дозволяється створювати БД (здійснюється за допомогою мови визначення даних DDL (Data Definition Language))
Дозволяється додавання, оновлення, видалення та читання інформації з БД (за допомогою мови маніпулювання даними DML, яку часто називають мовою запитів)
Можна надавати контрольований доступ до БД за допомогою:
Системи забезпечення захисту, яка запобігає несанкціонованому доступу до БД;
Системи керування паралельною роботою прикладних програм, яка контролює процеси спільного доступу до БД;
Система відновлення - дозволяє відновлювати БД до попереднього непротирічного стану, що був порушений в результаті збою апаратного або програмного забезпечення
Порівняння баз даних із файловими системами
Розглянемо детально переваги, які надають користувачам бази даних і яких не мають файлові системи.
Локалізація певної групи даних програми загалом полегшує доступ до інших груп даних цього ж застосування. Внаслідок орієнтації БД на велику кількість сеансів використання виникає необхідність у підтримці різноманітних зв'язків між даними. Розглянемо приклад, який ілюструє вказану властивість у порівнянні з простою файловою системою.
Припустимо, що є мішок з різнокольоровими кульками. Завдання полягає в тому, аби знайти кульку певного кольору, витягаючи їх по одній із мішка. Якщо операції витягування кульок з мішка є повністю незалежними, то цей приклад є аналогом технології роботи в межах простої файлової системи з послідовним доступом.
Припустимо, що потрібно знайти зелену кульку. Експериментатор наосліп вибирає й витягує з мішка по одній кульці, доки не побачить шуканий колір. При цьому попередня кулька ніяк не впливає на вибір наступної. Можливий інший спосіб пошуку. Експериментатор витягує з мішка червону кульку, до якої прив'язані кілька мотузок різних кольорів, зокрема й зелена. Тоді наступну кульку він витягає за зелену мотузку, і це буде шуканий об'єкт. Якщо ж червона кулька не матиме зеленої мотузки, то експериментатор може потягти за жовту мотузку і, витягши жовту кульку, вже від неї шукати зелену.
Для такої роботи необхідно, щоб експериментатор знав структуру зв'язків між кульками. Якщо припустити, що кульки зв'язані між собою різнокольоровими мотузками, то у такому випадку пошук можна було б прискорити, використавши на черговому кроці мотузку потрібного кольору. В наведеному вище прикладі продемонстровано технологію роботи зі взаємопов'язаними даними, характерну для БД.
Мінімальна надлишковість
Вимога мінімізації надлишковості полягає в тому, що в базі має зберігатися мінімальна кількість копій одних і тих самих даних. Це необхідно у зв'язку з орієнтацією БД на кілька застосувань. Надлишкові копії використовуються для підтримки зв'язків між даними.
Розглянемо такий приклад. У відділі кадрів певного підприємства зберігаються дані про співробітників. Користувачами цієї інформації є адміністрація, профспілкова організація та бухгалтерія підприємства. Адміністрацію цікавлять дані про кваліфікацію, професійний рівень і досвід роботи, профспілки використовують дані соціально-побутового характеру, а бухгалтерія обробляє дані, потрібні для нарахування заробітної плати, обчислення величини податку тощо. Хоча така інформація й різнорідна, та все ж має багато спільного — всім користувачам потрібно знати службовий номер, прізвище, ім'я, по батькові співробітника, його рік народження та дані про умови праці. Крім загальної інформації, бухгалтерії та профспілкам також необхідні відомості про сімейний стан і склад сім'ї. Якщо для зберігання даних застосувати технологію файлової системи, можливі два протилежні варіанти:
а) незалежні один від одного файли, відсортовані згідно з потребами того чи іншого користувача, передбачають значну надлишковість даних;
б) всі дані розташовані в одному файлі, відсортованому так, як потрібно одному з користувачів (скажімо, адміністрації), надлишковість при цьому практично відсутня, але зручно працювати тільки певному користувачеві, інші ж опиняться у становищі «попелюшки без надії на черевичок».
Концепція БД полягає в створенні компромісу між вищеописаними варіантами - тобто надлишковість є, але вона мінімальна.
Зайва надлишковість має певні недоліки. По-перше, зберігання кількох копій призводить до додаткових витрат пам'яті. По-друге, доводиться виконувати численні операції оновлення для надлишкових копій. Крім того, оскільки різні копії даних можуть відповідати різним стадіям оновлення, то інформація, що зберігається в системі, на певний час може стати суперечливою.
Розглянемо приклад, який ілюструє подібну ситуацію. Співробітниця вийшла заміж і змінила прізвище, про що повідомила відділ кадрів. Кадровик зафіксував ці зміни у своєму файлі й запустив на виконання програму оновлення для файлової системи профспілкового комітету. Якщо в цей час трапиться збій системи, то в двох різних файлах одна й та сама людина значитиметься під різними прізвищами, до того ж матиме неоднаковий сімейний стан.
Незалежність даних від програм
Незалежність даних від програм означає можливість зміни структури даних без зміни програм, що її використовують. Під це поняття підпадає й рівень самоінтерпретованості даних. Для файлової системи він найнижчий, оскільки дані файлів інтерпретуються виключно через прикладні програми, що їх використовують. БД, окрім самих даних, зберігає також їхні описи, а бази знань (найвищий рівень самоінтерпретованості) містять дані, описи даних та процедури їхньої обробки.
За цією аналогією діє й користувач — що вище ступінь незалежності даних, то менше треба задавати (й знати) «процедурної» інформації щодо доступу до них. Зауважимо, що сучасні файлові системи мають певний (хоча й досить низький) рівень незалежності: для доступу до файла достатньо вказати його ім'я, інформація про доріжки та сектори не потрібна.
Під цілісністю бази даних розуміють несуперечність (відповідність певним умовам) даних, що в ній зберігаються. Наприклад, для кадрових даних рік народження співробітника не може бути більшим за рік призначення на посаду або поточний рік. Для уникнення суперечливих ситуацій при модифікації бази даних співвідношення між даними контролюються спеціальними засобами підтримки цілісності БД. Умови, що накладаються на дані та яких дотримуються за будь-котрих оновлень, розробляються спеціальною службою — адміністраторами баз даних (АБД), а СКБД надають необхідні інструментальні засоби.
Оскільки БД орієнтована на широке коло застосувань, то зрозумілим є існування засобів захисту від неавторизованого доступу (навмисного чи ненавмисного) користувачів до даних. Серед них - система паролів та ідентифікацій користувачів, а також розподіл даних і користувачів на групи з різними правами.
Крім наведених, БД мають ще низку переваг порівняно з файловими системами.
♦ Інтегроване зберігання даних. Сукупність даних розглядається як єдине ціле, незалежно від характеру використання та способів зберігання. Тобто база даних є інформаційною моделлю всієї предметної області.
♦ Централізоване керування. Передбачає адміністрування бази даних, що дає можливість забезпечити ефективне зберігання даних, усунення їхньої суперечності, підтримку єдиної політики у використанні даних та необхідного рівня їхньої безпеки, збалансовування суперечливих вимог різних користувачів.
♦ Ефективне керування доступом до даних. СКБД надає ефективні механізми керування доступом до даних, незважаючи на складність структур, у яких вони зберігаються.
♦ Скорочення часу розробки програмних систем. За наявності засобів створення і обробки даних, які надаються СКБД, усі зусилля розробників програмних систем концентруються на розв'язанні прикладних задач.
♦ Спільне використання даних. Передбачає одночасний доступ до інформації багатьох користувачів та ефективний розподіл ресурсів.
♦ Відновлення бази даних. Жодна непередбачена ситуація — навіть перебій програмного чи апаратного забезпечення — не може вивести з ладу базу даних.
♦ Дотримання стандартів. Формати зберігання даних, технологія їхньої обробки, вхідні й вихідні форми можуть бути розроблені з урахуванням єдиних стандартів підприємства або інших нормативних документів.
Основні вимоги до систем керування базами даних
До сучасних систем керування базами даних висуваються такі вимоги.
Простота і гнучкість створення застосувань. СКБД має значно полегшувати процес створення і супроводу застосувань, що працюють з базами даних.
Багаторазове й багатоаспектне використання даних. Користувачі, які інакше розуміють одні й ті самі дані, мають отримати змогу використовувати їх по-різному.
Простота, легкість і гнучкість у використанні. Користувачі мають легко дізнаватися, які дані є в їхньому розпорядженні, й отримувати простий доступ до даних (усі складнощі бере на себе СКБД).
Простота і гнучкість зміни, розширення й настроювання бази даних. Будь-які зміни в БД, додавання до неї інформації чи її розширення повинні виконуватися незалежно від застосувань, що вже існують і використовують базу даних. До того ж ці операції мають виконуватися максимально просто й ефективно.
Ефективність і гнучкість зберігання й обробки даних. СКБД має забезпечувати можливість простого й ефективного збільшення обсягів даних без порушення наявних способів їхнього використання, а також легкого виконання реорганізації і реструктуризації даних. СКБД повинна підтримувати заплановану надлишковість даних або надавати можливість її знижувати. Запити на отримання даних мають виконуватися зі швидкістю, потрібною для їхнього ефективного використання.
Низька вартість зберігання й використання даних. СКБД мають забезпечувати нижчу вартість зберігання і використання даних, ніж будь-які інші інформаційні системи.
Захист від несанкціонованого доступу, викривлення і знищення. Система має забезпечувати необхідний рівень захисту даних. Інформація має бути захищена від перебоїв, впливу форс-мажорних ситуацій, а також від некомпетентного чи зловмисного звернення до даних осіб, які можуть оновити, викривити або ж видалити їх.
Підтримання необхідного рівня незалежності даних. Як правило, від СКБД вимагається наявність механізмів підтримання логічної та фізичної незалежності даних.
Підтримання необхідного рівня цілісності даних. Засоби опису і підтримання обмежень цілісності мають бути достатніми для опису правил, законів і обмежень, що діють у предметній області. Якщо ті чи інші обмеження не підтримуються безпосередньо, то СКБД має надавати можливості для їхнього опису і підтримання через відповідні засоби програмування.
Розвинені засоби адміністрування. Передбачається, що СКБД надає всі необхідні інструменти для підтримання функцій адміністрування баз даних.