- Отримати посилання
- X
- Електронна пошта
- Інші додатки
Що таке База Даних?
Цей урок допоможе вам зрозуміти, що таке бази даних і чому вони є фундаментом майже кожної сучасної технології — від соціальних мереж до банківських систем.
База даних (БД) – це структурована сукупність даних, що відображає стан об'єктів певної предметної області та зв’язки між ними. Простіше кажучи, це організований "склад" інформації, де все лежить на своїх місцях, і ми можемо легко щось знайти, додати або змінити.
Основні об'єкти БД
Основний об'єкт для зберігання даних. Таблиця складається з рядків і стовпців. Вона містить інформацію про один тип сутностей (наприклад, тільки про УЧНІВ або тільки про КНИГИ).
Один рядок у таблиці. Це повний набір даних про один конкретний об'єкт. Наприклад, один запис — це інформація про одного конкретного учня або одну конкретну книгу.
Один стовпець у таблиці. Поле визначає тип даних і містить інформацію про одну характеристику об'єкта. Наприклад, поле може називатися "Прізвище" або "Дата народження".
Інформація, яка знаходиться на перетині запису (рядка) і поля (стовпця). Наприклад, значення "Петренко О." знаходиться у полі "Прізвище" для першого запису.
На цьому уроці ми розглянемо ключові проблеми, які вирішують бази даних, і основні концепції, що дозволяють їм працювати ефективно. Використовуйте навігацію вище, щоб переходити між розділами.
1. Проблема: Надлишкове зберігання даних
Уявіть, що всю важливу інформацію ми зберігаємо в одній великій таблиці. Це призводить до **надлишковості** — повторення однакових даних, що створює ризик помилок та ускладнює оновлення.
Приклад 1: Облік учнів у школі
Дані про класного керівника повторюються для кожного учня в класі.
| Прізвище учня | Клас | Кл. керівник | Телефон керівника |
|---|---|---|---|
| Петренко О. | 9-А | Іванова Г.П. | 050-123-45-67 |
| Сидоренко В. | 9-А | Іванова Г.П. | 050-123-45-67 |
| Коваленко М. | 9-Б | Петрук В.С. | 097-987-65-43 |
Приклад 2: Облік товарів в інтернет-магазині
Дані про постачальника повторюються для кожного товару, який він продає.
| Назва товару | Ціна (грн) | Назва постачальника | Email постачальника | |
|---|---|---|---|---|
| Клавіатура S-500 | 850 | ТехноПлюс | ТехноПлюс | tp@mail.com |
| Миша X-10 | 320 | ТехноПлюс | tp@mail.com | |
| Монітор Ultra | 7500 | СвітКомп | sk@mail.com |
Приклад 3: Музичний каталог
Деталі про виконавця (жанр, рік створення) повторюються для кожної його пісні.
| Назва пісні | Виконавець | Основний жанр | Рік створення гурту |
|---|---|---|---|
| Літак | Океан Ельзи | Рок | 1994 |
| Без бою | Океан Ельзи | Рок | 1994 |
| Місто | Скрябін | Поп-рок | 1989 |
Наслідки надлишковості:
- Складність оновлення: Якщо Email постачальника зміниться, його треба знайти і змінити в *кожному* рядку, що веде до помилок.
- Помилки при введенні: При додаванні нової пісні "Океану Ельзи" можна випадково написати інший "Рік створення гурту".
- Неузгодженість: Якщо дані в різних рядках (про один і той самий об'єкт, наприклад, "ТехноПлюс") відрізняються, база даних стає ненадійною.
2. Рішення: Розподіл на таблиці (Нормалізація)
Щоб уникнути надлишковості, ми розділяємо дані на логічні сутності і зберігаємо їх в окремих таблицях. Це забезпечує надійність і легкість оновлення інформації.
Рішення 1: Школа (Учні та Класи)
Таблиця: `КЛАСИ` (Головна)
| ID_Класу (PK) | Кл. керівник | Телефон |
|---|---|---|
| 1 | Іванова Г.П. | 050-123-45-67 |
| 2 | Петрук В.С. | 097-987-65-43 |
Таблиця: `УЧНІ` (Підлегла)
| Прізвище | Клас | ID_Класу (FK) |
|---|---|---|
| Петренко О. | 9-А | 1 |
| Сидоренко В. | 9-А | 1 |
| Коваленко М. | 9-Б | 2 |
**Висновок:** Дані про телефон керівника зберігаються лише в одному місці (`КЛАСИ`). Зв'язок реалізується через `ID_Класу (FK)`.
Рішення 2: Облік товарів (Товари та Постачальники)
Таблиця: `ПОСТАЧАЛЬНИКИ` (Головна)
| ID_Постачальника (PK) | Назва | |
|---|---|---|
| 10 | ТехноПлюс | tp@mail.com |
| 20 | СвітКомп | sk@mail.com |
Таблиця: `ТОВАРИ` (Підлегла)
| Назва товару | Ціна (грн) | ID_Постачальника (FK) |
|---|---|---|
| Клавіатура S-500 | 850 | 10 |
| Миша X-10 | 320 | 10 |
| Монітор Ultra | 7500 | 20 |
**Висновок:** Якщо `Email` постачальника зміниться, його треба оновити лише один раз в таблиці `ПОСТАЧАЛЬНИКИ`.
Рішення 3: Музичний каталог (Виконавці та Пісні)
Таблиця: `ВИКОНАВЦІ` (Головна)
| ID_Виконавця (PK) | Виконавець | Жанр | Рік створення |
|---|---|---|---|
| 100 | Океан Ельзи | Рок | 1994 |
| 200 | Скрябін | Поп-рок | 1989 |
Таблиця: `ПІСНІ` (Підлегла)
| Назва пісні | Тривалість | ID_Виконавця (FK) |
|---|---|---|
| Літак | 3:45 | 100 |
| Без бою | 4:10 | 100 |
| Місто | 3:20 | 200 |
**Висновок:** Дані про жанр виконавця та рік створення гурту зберігаються лише один раз, а зв'язок 1:M (Один Виконавець → Багато Пісень) забезпечується через `ID_Виконавця (FK)`.
В усіх прикладах ми усунули надлишковість. Для того, щоб комп'ютер міг "з'єднати" ці таблиці, нам потрібні **ключі**, про які ми поговоримо далі.
3. Поняття Ключа
Щоб надійно пов’язувати таблиці, нам потрібен спосіб унікально ідентифікувати кожен запис (кожен рядок).
Ключ (або Первинний ключ, Primary Key, PK) – це одне або кілька полів, значення яких є **унікальним** для кожного запису в таблиці. Він не може бути порожнім (NULL).
Інтерактивне завдання: Знайди найкращий ключ
Клікніть на заголовки стовпців у таблицях, щоб визначити, який із них найкраще підходить на роль первинного ключа (PK).
Таблиця: `УЧНІ`
| ID_Учня (?) | Прізвище (?) | Дата народження (?) | ID_Класу (FK) (?) |
|---|---|---|---|
| 101 | Петренко О. | 20.05.2010 | 1 |
| 102 | Сидоренко В. | 15.03.2010 | 1 |
| 103 | Коваленко М. | 05.11.2009 | 2 |
| 104 | Петренко А. | 10.01.2010 | 2 |
Таблиця: `ТОВАРИ`
| ID_Товару (?) | Назва товару (?) | Ціна (грн) (?) | ID_Постачальника (FK) (?) |
|---|---|---|---|
| 1 | Клавіатура S-500 | 850 | 10 |
| 2 | Миша X-10 | 320 | 10 |
| 3 | Монітор Ultra | 7500 | 20 |
| 4 | Миша X-10 (Червона) | 350 | 10 |
Таблиця: `ВИКОНАВЦІ`
| ID_Виконавця (?) | Назва гурту (?) | Основний жанр (?) | Рік створення (?) |
|---|---|---|---|
| 100 | Океан Ельзи | Рок | 1994 |
| 200 | Скрябін | Поп-рок | 1989 |
| 300 | Бумбокс | Фанк-рок | 2004 |
Висновок:
У всіх випадках Первинним Ключем (PK) є спеціально створений стовпець `ID` (Ідентифікатор). Він гарантує, що кожен рядок буде унікальним, на відміну від прізвищ, назв чи цін, які можуть повторюватися.
4. Зв'язок "Один-до-Багатьох" (1:M)
Зв'язок "один-до-багатьох" (1:M) є наріжним каменем реляційних баз даних. Він дозволяє ефективно поєднувати інформацію з двох таблиць, уникнувши надлишковості.
Він означає, що **одному** запису в головній таблиці (PK) можуть відповідати **багато** записів у підлеглій таблиці (FK).
Алгоритм створення зв'язку "Один-до-Багатьох"
- **Визначте сутності:** Визначте дві таблиці, між якими існує зв'язок 1:M (наприклад, `КЛАСИ` та `УЧНІ`).
- **Визначте Первинний Ключ (PK):** Встановіть, який стовпець є PK у **головній таблиці** (Таблиця "Один", наприклад, `ID_Класу` у `КЛАСИ`).
- **Створіть Зовнішній Ключ (FK):** У **підлеглій таблиці** (Таблиця "Багато", наприклад, `УЧНІ`) створіть новий стовпець, який прийме значення PK з головної таблиці. Назвіть його, наприклад, `ID_Класу_FK`.
- **Встановіть відповідність:** Заповніть новий стовпець FK значеннями, які відповідають конкретному запису з головної таблиці.
- **Видаліть надлишковість:** Видаліть з підлеглої таблиці всі старі стовпці, які дублювали інформацію з головної таблиці (наприклад, ім'я класного керівника та його телефон).
Приклад 1: Класи та Учні
Один клас має багато учнів. Ми використовуємо `ID_Класу` як Зовнішній Ключ (FK) у таблиці `УЧНІ`.
`КЛАСИ` (Один)
| ID_Класу (PK) 🔑 | Назва |
|---|---|
| 1 | 9-А |
`УЧНІ` (Багато)
| Прізвище | ID_Класу (FK) 🔗 |
|---|---|
| Петренко О. | 1 |
| Сидоренко В. | 1 |
Приклад 2: Виконавці та Пісні
Один виконавець (гурт) має багато пісень. Ми використовуємо `ID_Виконавця` як Зовнішній Ключ (FK) у таблиці `ПІСНІ`.
`ВИКОНАВЦІ` (Один)
| ID_Виконавця (PK) 🔑 | Гурт |
|---|---|
| 100 | Океан Ельзи |
`ПІСНІ` (Багато)
| Назва пісні | ID_Виконавця (FK) 🔗 |
|---|---|
| Літак | 100 |
| Без бою | 100 |
Приклад 3: Рецепти та Інгредієнти
Один рецепт складається з багатьох інгредієнтів. `ID_Рецепту` є Зовнішнім Ключем у таблиці `ІНГРЕДІЄНТИ`.
`РЕЦЕПТИ` (Один)
| ID_Рецепту (PK) 🔑 | Назва |
|---|---|
| 50 | Борщ |
`ІНГРЕДІЄНТИ` (Багато)
| Назва | Кількість | ID_Рецепту (FK) 🔗 |
|---|---|---|
| Буряк | 2 шт. | 50 |
| Картопля | 4 шт. | 50 |
| М'ясо | 300 г | 50 |
Визначення зв’язку "один-до-багатьох"
Щоб визначити, чи можна встановити зв'язок 1:M між двома таблицями, запитайте себе:
- Чи може кожен запис (рядок) з Таблиці А (Головна) мати багато відповідників у Таблиці Б (Підлегла)? **(Так)**
- Чи може кожен запис з Таблиці Б (Підлегла) мати лише один відповідник у Таблиці А (Головна)? **(Так)**
Якщо обидві відповіді "Так", це зв'язок 1:M. Для його створення потрібно взяти PK з Таблиці А і додати його як FK в Таблицю Б.
5. Практичне Завдання: Створення БД "Бібліотека"
Ваше завдання — створити базу даних "Бібліотека" в програмі для роботи з БД (наприклад, MS Access, LibreOffice Base) і реалізувати зв'язки **1:M**.
Етап 1: Створення таблиць та Первинних Ключів
Ми будемо створювати 4 таблиці за нашою схемою. Покроковий алгоритм показаний на прикладі таблиці `АВТОРИ`.
Алгоритм створення таблиці (на прикладі `АВТОРИ`):
- **Відкрийте режим Конструктора:** У програмі БД (Access) виберіть **Створення** → **Таблиця** та перейдіть до режиму **Конструктора**.
- **Введіть ім'я таблиці:** Збережіть її як **`АВТОРИ`**.
- **Визначте Первинний Ключ (PK):**
- **Ім'я поля:** `ID_Автора`
- **Тип даних:** Лічильник (AutoNumber) або Числовий.
- **Призначте ключ:** Натисніть на стовпець `ID_Автора` і виберіть опцію **Первинний ключ** (зазвичай, іконка ключа).
- **Додайте інші поля:**
- **Ім'я поля:** `Прізвище_Автора`, **Тип даних:** Короткий текст.
- **Ім'я поля:** `Рік_Народження`, **Тип даних:** Числовий.
- **Збережіть та закрийте.**
Таблиці для створення:
- `ID_Автора` (PK, Лічильник)
- `Прізвище_Автора` (Текст)
- `Рік_Народження` (Числовий)
- `ID_Книги` (PK, Лічильник)
- `Назва_Книги` (Текст)
- `ID_Автора_FK` (Числовий) - **Це Зовнішній Ключ**
- `ID_Учня` (PK, Лічильник)
- `Прізвище_Учня` (Текст)
- `Клас` (Текст)
- `ID_Видачі` (PK, Лічильник)
- `ID_Книги_FK` (Числовий)
- `ID_Учня_FK` (Числовий)
- `Дата_Видачі` (Дата/Час)
Етап 2: Реалізація зв'язку 1:M
Після створення всіх таблиць, встановіть зв'язки між ними, використовуючи Зовнішні ключі (FK).
- **Відкрийте Схему даних:** Перейдіть до інструменту **Схема даних** (Database Tools → Relationships).
- **Додайте всі 4 таблиці** на схему.
- **Створення зв'язку `АВТОРИ` (1) → `КНИГИ` (M):**
- Перетягніть поле **`ID_Автора`** (PK) з таблиці `АВТОРИ` на поле **`ID_Автора_FK`** (FK) у таблиці `КНИГИ`.
- У діалоговому вікні поставте прапорець **"Забезпечення цілісності даних"**.
- Натисніть **Створити**.
- **Створення інших зв'язків:** Аналогічно створіть зв'язки:
- `КНИГИ` (PK) → `ВИДАЧІ` (FK)
- `УЧНІ` (PK) → `ВИДАЧІ` (FK)
- **Перевірка:** Переконайтеся, що на схемі з'явилися лінії, які позначають зв'язок "один-до-багатьох" (з цифрою **1** на одному кінці та символом **∞** на іншому).
- Отримати посилання
- X
- Електронна пошта
- Інші додатки
Коментарі
Дописати коментар