
- •3. Бази даних та сховища даних
- •3.1. Ключі та нормалізація даних: основні нормальні форми (1nf, 2nf, 3nf, bcnf)
- •3.3. Моделювання даних: створення моделі даних для інформаційної системи; концептуальна, логічна, фізична моделі даних; er-модель; нотації er-моделей
- •3.4. Реляційні бази даних: особливості організації та зберігання даних у реляційних базах даних; основні характеристики реляційних баз даних; dbms (Database Management System)
- •3.5. Побудова запиту: мови sql (structured query language), ddl (Data Definition Language), dml (Data Manipulation Language), dcl (Data Control Language), tcl (Transaction Control Language)
3.4. Реляційні бази даних: особливості організації та зберігання даних у реляційних базах даних; основні характеристики реляційних баз даних; dbms (Database Management System)
Реляційна база даних — база даних, заснована на реляційній моделі даних. Слово «реляційний» походить від англ. relation (відношення). Для роботи з реляційними БД застосовують реляційні СКБД. Інакше кажучи, реляційна база даних — це база даних, яка сприймається користувачем як набір нормалізованих відношень різного ступеня.
Реляційна база даних є сукупністю елементів даних, організованих у вигляді набору формально описаних таблиць, з яких дані можуть бути доступними або повторно зібрані багатьма різними способами без необхідності реорганізації таблиць бази даних. Використання реляційних БД було запропоноване Едгаром Коддом в 1970 році.
Метою нормалізації є усунення недоліків структури БД, які призводять до шкідливої надмірності в даних, яка в свою чергу потенційно призводить до різних аномалій і порушень цілісності даних.
Теоретики реляційних баз даних у процесі розвитку теорії виявили та описали типові приклади надмірності і способи їхнього усунення.
Нормальна форма — формальна властивість відношення, яка характеризує ступінь надмірності збережуваних даних і можливі проблеми. Кожна наступна нормальна форма в нижченаведеному списку (крім ДКНФ) в деякому сенсі є досконалішою, ніж попередня, з точки зору усунення надмірності.
Уявіть собі, що у вашому комп’ютері кожен додаток має свої власні, ізольовані файли для зберігання даних. Ні, вони ніяк не взаємодіють. Щоб використовувати дані з різних застосунків, потрібно відкрити щонайменше два різні файли, скопіювати потрібні дані і зберегти в третьому файлі. І так до нескінченності.
Звичайно, щойно з’явилася технічна можливість, інженери одразу ж придумали рішення: зберігати дані в таблицях, пов’язаних між собою. Нагадуємо, що relation – це зв’язок, або відношення. Тому таблиці з даними називають реляційними.
Доступ до реляційних таблиць здійснюється за допомогою мови структурованих запитів (SQL). Реляційні бази даних – це гнучкий і структурований спосіб керування даними, який забезпечує вищий рівень абстракції, що дає змогу розробникам ефективніше працювати з даними.
Уявіть собі таблицю під назвою “Співробітники”, де кожен рядок представляє інформацію про конкретного співробітника, а стовпці можуть містити його ім’я, прізвище, посаду, зарплату тощо. Кожен рядок – це кортеж (запис), а кожен стовпець – атрибути.
Швидкий доступ і управління даними реалізуються за допомогою SQL-запитів. Це робить реляційні бази даних ідеальними для широкого спектра додатків, від обліку та управління замовленнями до зберігання інформації про клієнтів і багато чого іншого.
Ось що включає в себе реляційна база даних, і які елементи необхідні для її роботи:
Реляційні таблиці. Данні організовуються у вигляді таблиць із рядами та стовпцями. Кожна таблиця має ім’я та структуру, визначену схемою даних.
Рядки (кортежі). Кожен рядок у реляційній таблиці представляє окремий запис і містить інформацію про об’єкт. Кожен запис є унікальним та ідентифікується за допомогою ключа.
Стовпці (атрибути). Стовпці таблиці являють собою атрибути або характеристики об’єктів, що описуються в таблиці. Кожен стовпець має ім’я і тип даних, який визначає, якого роду інформацію можна зберігати в цьому стовпчику (наприклад, текст, числа, дати і так далі).
Ключі. У реляційній моделі використовуються ключі для унікальної ідентифікації рядків у таблиці. Основний ключ (Primary Key) забезпечує унікальність кожного рядка, а зовнішній ключ (Foreign Key) створює зв’язки між таблицями.
Зв’язки. Реляційні бази даних дають змогу встановлювати зв’язки між таблицями, що дає змогу об’єднувати дані з різних таблиць для виконання складних запитів.
SQL (Structured Query Language). SQL використовується для виконання операцій з даними в реляційних базах даних. Він дає змогу створювати, змінювати, видаляти та витягувати дані з таблиць, а також визначати правила для цілісності даних.
Нормалізація. Реляційні бази даних використовують процес нормалізації для зменшення надмірності даних і забезпечення їхньої цілісності.
Транзакції. РБД підтримують транзакції, що забезпечує атомарність, узгодженість, ізольованість і довговічність даних (ACID-властивості) під час одночасного доступу кількох користувачів до бази даних.
Нормалізація даних – це процес організації даних у реляційній БД з метою мінімізації надлишковості даних, поліпшення цілісності даних і забезпечення ефективності виконання запитів. Якщо говорити простішою мовою, нормалізація дає змогу розбити великі таблиці на дрібніші, щоб уникнути повторення інформації та зменшити ймовірність помилок.
Для чого потрібна нормалізація даних:
Нормалізація зменшує надмірність даних. Це означає, що одна й та сама інформація не зберігається в кількох місцях. Це економить місце і зменшує ризик невідповідності даних.
Нормалізація забезпечує вищий рівень цілісності даних, оскільки зміни даних відбуваються тільки в одному місці, що знову-таки зменшує ймовірність.
Добре нормалізовані дані дають змогу виконувати запити більш ефективно, оскільки дані розподілені за дрібнішими таблицями, що зменшує необхідність в об’ємних операціях об’єднання даних.
Робота з реляційними базами даних передбачає виконання запитів і операцій з даними з використанням SQL (Structured Query Language), який є стандартною мовою для взаємодії з реляційними СУБД (системами управління базами даних). Ось кілька прикладів запитів і операцій.
Запит SELECT використовується для вилучення даних із таблиці: SELECT first_name, last_name FROM employees WHERE department = 'HR';
Операція INSERT використовується для вставки нових даних у таблицю: INSERT INTO customers (first_name, last_name, email) VALUES ('John', 'Doe', 'john.doe@example.com'); Цей запит додає нового клієнта в таблицю “customers”.
Операція UPDATE дає змогу оновлювати наявні дані в таблиці: UPDATE products SET price = 29.99 WHERE product_id = 123; Цей запит змінює ціну продукту з ідентифікатором 123.
Операція DELETE використовується для видалення даних із таблиці: DELETE FROM orders WHERE order_id = 456; Цей запит видаляє замовлення з ідентифікатором 456.
Система управлння базами даних (СУБД, СКБД англ. Database Management System, DBMS) — набір взаємопов'язаних даних (база даних) і програм для доступу до цих даних[1]. Надає можливості створення, збереження, оновлення та пошуку інформації в базах даних з контролем доступу до даних. Основні характеристики СКБД:
Контроль за надлишковістю даних
Несуперечливість даних
Підтримка цілісності бази даних (коректність та несуперечливість)
Цілісність описується за допомогою обмежень
Незалежність прикладних програм від даних
Спільне використання даних
Підвищений рівень безпеки
Можливості СКБД:
Дозволяється створювати БД (здійснюється за допомогою мови визначення даних DDL (Data Definition Language))
Дозволяється додавання, оновлення, видалення та читання інформації з БД (за допомогою мови маніпулювання даними DML, яку часто називають мовою запитів)
Можна надавати контрольований доступ до БД за допомогою:
Системи забезпечення захисту, яка запобігає несанкціонованому доступу до БД;
Системи керування паралельною роботою прикладних програм, яка контролює процеси спільного доступу до БД;
Система відновлення — дозволяє відновлювати БД до попереднього несуперечливого стану, що був порушений в результаті збою апаратного або програмного забезпечення.
Існує трирівнева система організації СКБД ANSI-SPARC, при якій існує незалежний рівень для ізоляції програми від особливостей представлення даних на нижчому рівні. Рівні:
Зовнішній — представлення БД з точки зору користувача.
Концептуальний — узагальнене представлення БД, описує які дані зберігаються в БД і зв'язки між ними. Підтримує зовнішні представлення, підтримується внутрішнім рівнем.
Внутрішній — фізичне представлення БД в комп'ютері.
Логічна незалежність — повна захищеність зовнішніх моделей від змін, що вносяться в концептуальну модель.
Фізична незалежність — захищеність концептуальної моделі від змін, які вносяться у внутрішню модель.
Огляд популярних систем керування реляційними базами даних (СУБД):
MySQL є однією з найпопулярніших відкритих СУБД. Вона надає високу продуктивність, підтримує безліч функцій і широко використовується у веб-додатках.
PostgreSQL також є відкритою СУБД і відомий своєю розширюваністю та підтримкою складних типів даних. Він підходить для великого спектра додатків, включно з геоданими та аналітичними системами.
Microsoft SQL Server розроблений Microsoft і часто використовується в корпоративних середовищах. Він забезпечує хорошу інтеграцію з іншими продуктами Microsoft і підтримує масштабованість.
Oracle Database є потужною і поширеною СУБД для корпоративних додатків і баз даних великого розміру. Він має багатий набір функцій і високу продуктивність.
SQLite – це легковажна вбудована СУБД, яка ідеально підходить для мобільних і вбудованих додатків. Вона не потребує окремого сервера і зберігається в одному файлі.
MariaDB є форком MySQL і надає схожий функціонал, але з акцентом на відкритості та спільнотній розробці.
Вибір конкретної СУБД залежить від потреб проекту, вимог до продуктивності, масштабованості та ліцензійних обмежень.
“Найкращі практики” (best practices) – це набір методів, процесів, стратегій або підходів, що вважаються найефективнішими, найбезпечнішими та найоптимальнішими в певній галузі. Ці практики базуються на досвіді, дослідженнях, успішних результатах і загальноприйнятих стандартах. Якщо говорити простіше, найкращі практики – це рекомендації для досягнення найкращих результатів і уникнення поширених помилок. У випадку реляційних баз даних, найкращі практики такі:
Індексування. Створюйте індекси для часто використовуваних полів, щоб прискорити операції вибірки даних.
Нормалізація. Нормалізуйте дані, щоб уникнути надмірності та забезпечити цілісність. Однак, не перестарайтеся з нормалізацією, щоб уникнути складних запитів.
Оптимізація запитів. Періодично аналізуйте та оптимізуйте SQL-запити, щоб зменшити навантаження на базу даних.
Кешування. Використовуйте кешування на рівні програми або СУБД для зменшення навантаження на базу даних.
Масштабованість. Під час проєктування бази даних врахуйте можливість масштабування, щоб забезпечити зростання продуктивності під час збільшення навантаження.
Резервне копіювання та відновлення. Регулярно створюйте резервні копії бази даних і розробляйте план відновлення даних для забезпечення безпеки.