You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Data-Science-For-Beginners/translations/uk/2-Working-With-Data/05-relational-databases
localizeflow[bot] 3ad1d09e82
chore(i18n): sync translations with latest source changes (chunk 1/1, 213 changes)
3 months ago
..
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 213 changes) 3 months ago
assignment.md chore(i18n): sync translations with latest source changes (chunk 1/1, 213 changes) 3 months ago

README.md

Робота з даними: Реляційні бази даних

 Sketchnote by (@sketchthedocs)
Робота з даними: Реляційні бази даних - Sketchnote від @nitya

Ймовірно, ви раніше використовували електронну таблицю для зберігання інформації. У вас був набір рядків і стовпців, де рядки містили інформацію (або дані), а стовпці описували інформацію (іноді це називають метаданими). Реляційна база даних побудована на цьому основному принципі стовпців і рядків у таблицях, що дозволяє мати інформацію, розподілену по кількох таблицях. Це дає змогу працювати зі складнішими даними, уникати дублювання та мати гнучкість у способі дослідження даних. Давайте розглянемо концепції реляційної бази даних.

Попередній тест

Все починається з таблиць

Реляційна база даних має в основі таблиці. Як і в електронній таблиці, таблиця — це колекція стовпців і рядків. Рядок містить дані або інформацію, з якою ми хочемо працювати, наприклад, назву міста або кількість опадів. Стовпці описують дані, які вони зберігають.

Почнемо наше дослідження зі створення таблиці для зберігання інформації про міста. Ми можемо почати з їхньої назви та країни. Ви можете зберегти це в таблиці так:

Місто Країна
Токіо Японія
Атланта Сполучені Штати
Окленд Нова Зеландія

Зверніть увагу, що назви стовпців місто, країна та населення описують збережені дані, а кожен рядок містить інформацію про одне місто.

Недоліки підходу з однією таблицею

Ймовірно, таблиця вище здається вам досить знайомою. Давайте додамо додаткові дані до нашої зростаючої бази даних — річну кількість опадів (у міліметрах). Зосередимося на роках 2018, 2019 і 2020. Якщо додати це для Токіо, це може виглядати так:

Місто Країна Рік Кількість
Токіо Японія 2020 1690
Токіо Японія 2019 1874
Токіо Японія 2018 1445

Що ви помічаєте у нашій таблиці? Ви можете помітити, що ми дублюємо назву та країну міста знову і знову. Це може займати багато місця для зберігання і в більшості випадків не потрібно мати кілька копій. Адже Токіо має лише одну назву, яка нас цікавить.

Добре, спробуємо інший варіант. Додамо нові стовпці для кожного року:

Місто Країна 2018 2019 2020
Токіо Японія 1445 1874 1690
Атланта Сполучені Штати 1779 1111 1683
Окленд Нова Зеландія 1386 942 1176

Хоча це уникає дублювання рядків, це додає кілька інших проблем. Нам доведеться змінювати структуру таблиці щоразу, коли з’являється новий рік. Крім того, з ростом даних, коли роки будуть стовпцями, буде складніше отримувати та обчислювати значення.

Ось чому нам потрібні кілька таблиць і зв’язки між ними. Розбиваючи наші дані, ми можемо уникнути дублювання і мати більшу гнучкість у роботі з даними.

Концепції зв’язків

Повернемося до наших даних і визначимо, як ми хочемо їх розділити. Ми знаємо, що хочемо зберігати назву та країну для наших міст, тому це, ймовірно, найкраще розмістити в одній таблиці.

Місто Країна
Токіо Японія
Атланта Сполучені Штати
Окленд Нова Зеландія

Але перед тим, як створити наступну таблицю, нам потрібно зрозуміти, як посилатися на кожне місто. Нам потрібна якась форма ідентифікатора, ID або (у технічних термінах баз даних) первинний ключ. Первинний ключ — це значення, яке використовується для ідентифікації одного конкретного рядка в таблиці. Хоча це може базуватися на самому значенні (наприклад, ми могли б використати назву міста), він майже завжди повинен бути числом або іншим ідентифікатором. Ми не хочемо, щоб id коли-небудь змінювався, оскільки це порушить зв’язок. У більшості випадків первинний ключ або id буде автоматично згенерованим числом.

Первинний ключ часто скорочується як PK

cities

city_id Місто Країна
1 Токіо Японія
2 Атланта Сполучені Штати
3 Окленд Нова Зеландія

Ви помітите, що під час цього уроку ми використовуємо терміни "id" і "первинний ключ" взаємозамінно. Ці концепції застосовуються до DataFrames, які ви вивчатимете пізніше. DataFrames не використовують термінологію "первинний ключ", але ви помітите, що вони поводяться дуже схоже.

Створивши таблицю міст, давайте збережемо дані про опади. Замість того, щоб дублювати повну інформацію про місто, ми можемо використати id. Також слід переконатися, що новостворена таблиця має стовпець id, оскільки всі таблиці повинні мати id або первинний ключ.

rainfall

rainfall_id city_id Рік Кількість
1 1 2018 1445
2 1 2019 1874
3 1 2020 1690
4 2 2018 1779
5 2 2019 1111
6 2 2020 1683
7 3 2018 1386
8 3 2019 942
9 3 2020 1176

Зверніть увагу на стовпець city_id у новоствореній таблиці rainfall. Цей стовпець містить значення, які посилаються на ID у таблиці cities. У технічних термінах реляційних даних це називається зовнішнім ключем; це первинний ключ з іншої таблиці. Ви можете просто вважати це посиланням або вказівником. city_id 1 посилається на Токіо.

[!NOTE] Зовнішній ключ часто скорочується як FK

Отримання даних

З нашими даними, розділеними на дві таблиці, ви можете запитати, як їх отримати. Якщо ми використовуємо реляційну базу даних, таку як MySQL, SQL Server або Oracle, ми можемо використовувати мову під назвою Structured Query Language або SQL. SQL (іноді вимовляється як sequel) — це стандартна мова для отримання та зміни даних у реляційній базі даних.

Для отримання даних використовується команда SELECT. По суті, ви вибираєте стовпці, які хочете побачити, з таблиці, в якій вони містяться. Якщо ви хочете відобразити лише назви міст, ви можете використати таке:

SELECT city
FROM cities;

-- Output:
-- Tokyo
-- Atlanta
-- Auckland

SELECT — це місце, де ви перераховуєте стовпці, а FROM — де ви перераховуєте таблиці.

[!NOTE] Синтаксис SQL нечутливий до регістру, тобто select і SELECT означають те саме. Однак залежно від типу бази даних, яку ви використовуєте, стовпці та таблиці можуть бути чутливими до регістру. Тому найкращою практикою є завжди вважати все в програмуванні чутливим до регістру. При написанні SQL-запитів загальноприйнято писати ключові слова великими літерами.

Вищенаведений запит відобразить усі міста. Уявімо, що ми хочемо відобразити лише міста в Новій Зеландії. Нам потрібен якийсь фільтр. Ключове слово SQL для цього — WHERE, або "де щось є істинним".

SELECT city
FROM cities
WHERE country = 'New Zealand';

-- Output:
-- Auckland

Об’єднання даних

До цього моменту ми отримували дані з однієї таблиці. Тепер ми хочемо об’єднати дані з обох таблиць — cities і rainfall. Це робиться шляхом об’єднання їх разом. Ви фактично створите шов між двома таблицями і зіставите значення зі стовпця кожної таблиці.

У нашому прикладі ми зіставимо стовпець city_id у rainfall зі стовпцем city_id у cities. Це зіставить значення опадів із відповідним містом. Тип об’єднання, який ми виконаємо, називається inner join, що означає, що якщо якісь рядки не співпадають з чимось з іншої таблиці, вони не відображатимуться. У нашому випадку у кожного міста є дані про опади, тому все буде відображено.

Давайте отримаємо дані про опади за 2019 рік для всіх наших міст.

Ми зробимо це поетапно. Перший крок — об’єднати дані, вказавши стовпці для шва — city_id, як було виділено раніше.

SELECT cities.city
    rainfall.amount
FROM cities
    INNER JOIN rainfall ON cities.city_id = rainfall.city_id

Ми виділили два стовпці, які хочемо, і те, що хочемо об’єднати таблиці за city_id. Тепер ми можемо додати оператор WHERE, щоб відфільтрувати лише 2019 рік.

SELECT cities.city
    rainfall.amount
FROM cities
    INNER JOIN rainfall ON cities.city_id = rainfall.city_id
WHERE rainfall.year = 2019

-- Output

-- city     | amount
-- -------- | ------
-- Tokyo    | 1874
-- Atlanta  | 1111
-- Auckland |  942

Підсумок

Реляційні бази даних зосереджені на розподілі інформації між кількома таблицями, які потім об’єднуються для відображення та аналізу. Це забезпечує високу гнучкість для виконання обчислень та іншої обробки даних. Ви ознайомилися з основними концепціями реляційної бази даних і тим, як виконати об’єднання між двома таблицями.

🚀 Виклик

Існує багато реляційних баз даних, доступних в інтернеті. Ви можете досліджувати дані, використовуючи навички, які ви вивчили вище.

Післялекційний тест

Післялекційний тест

Огляд і самостійне вивчення

Існує кілька ресурсів на Microsoft Learn, щоб продовжити вивчення SQL і концепцій реляційних баз даних

Завдання

Відображення даних аеропорту


Відмова від відповідальності: Цей документ було перекладено за допомогою сервісу автоматичного перекладу Co-op Translator. Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується звертатися до професійного людського перекладу. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.