Intro

Введення в теорію баз даних

Історія розвитку баз даних, порівняння моделей зберігання даних та встановлення MS SQL Server

Введення в теорію баз даних

Мета уроку: Зрозуміти навіщо потрібні бази даних, вивчити історію їх розвитку, порівняти різні моделі зберігання даних та освоїти базові поняття СУБД.

Навіщо потрібні бази даних?

Уявіть ситуацію: Ви працюєте в невеликій бібліотеці. У вас є тисячі книг, сотні читачів, щоденні видачі та повернення. Як ви будете зберігати всю цю інформацію?

Еволюція зберігання даних

Паперові картотеки (до 1950-х років)

У минулому бібліотекарі використовували картотечні шафи з папками та картками:

  • 📁 Картка на кожну книгу
  • 📝 Окрема картка для кожного читача
  • 📋 Журнал видач

Проблеми паперового підходу:

  • Дублювання даних - інформацію про одного автора треба записувати багато разів
  • Пошук інформації - щоб знайти всі книги автора, треба переглянути всі картки
  • Помилки при оновленні - якщо автор змінив прізвище, треба виправити всі картки
  • Обмежений простір - шафи займають багато місця
  • Відсутність захисту - картки можна загубити або пошкодити

Файлова система (1950-1960-ті роки)

З появою комп'ютерів дані почали зберігати у файлах:

library_books.txt
library_readers.txt
library_loans.txt

Покращення:

  • Електронне зберігання замість паперу
  • Швидший пошук текстовими редакторами
  • Можливість резервного копіювання

Але нові проблеми:

  • Кожна програма створює свій формат файлів
  • Складно синхронізувати дані між різними файлами
  • Немає контролю цілісності даних
  • Складно організувати паралельний доступ

Системи управління базами даних (1970-ті - сьогодення)

СУБД вирішує всі попередні проблеми, надаючи:

Loading diagram...
graph TD
    A[СУБД] --> B[Централізоване зберігання]
    A --> C[Контроль цілісності]
    A --> D[Багатокористувацький доступ]
    A --> E[Безпека даних]
    A --> F[Оптимізація запитів]

    style A fill:#3b82f6,color:#fff
    style B fill:#64748b,color:#fff
    style C fill:#64748b,color:#fff
    style D fill:#64748b,color:#fff
    style E fill:#64748b,color:#fff
    style F fill:#64748b,color:#fff
Натан Ротшільд казав: "Хто володіє інформацією, той володіє світом". У сучасному світі ця інформація зберігається саме в базах даних. Фахівці з баз даних будуть затребувані завжди!

Історія та етапи розвитку баз даних

Хронологія ключових подій

Loading diagram...
timeline
    title Еволюція баз даних
    1950-1960 : Перші дослідження
              : Файлові системи
    1968 : IBM IMS
         : Ієрархічна модель
    1970 : Стаття Кодда
         : Реляційна модель
    1975 : Стандарт CODASYL
         : Мережева модель
    1979 : Oracle v2
         : Перша комерційна РСУБД
    1982 : IBM DB2
    1988 : MS SQL Server 1.0
    1992 : MS Access 1.0
    2000-now : NoSQL, NewSQL
             : Розподілені БД

Початок досліджень (кінець 1950-х)

Дослідження по створенню баз даних стали можливими завдяки появі програмного забезпечення обробки записів і почалися наприкінці 50-х років минулого століття.

Основна ідея: Автоматизація офісної роботи, пов'язаної зі зберіганням та обліком даних, яка виконувалася вручну та потребувала великих витрат праці.

Завдяки здешевленню обчислювальних потужностей для вирішення цих завдань стало можливим використання комп'ютерів. До цього часу комп'ютери були занадто дорогими для таких завдань.

IBM IMS (1968) - Ієрархічна модель

Лідер досліджень: Компанія IBM

У 1968 році IBM випустила свою першу систему управління базами даних IMS (IBM Information Management System), засновану на ієрархічній моделі даних.

Особливості IMS:

  • Дані організовані у вигляді дерева
  • Зв'язки типу "батько-нащадок"
  • Використовувалася для систем резервування авіаквитків

System R та SQL (середина 1970-х)

Революція від IBM:

В середині 70-х років компанія IBM створила першу реляційну систему управління базами даних — IBM System R.

У System R вперше було реалізовано мову запитів для реляційних баз даних — SQL (Structured Query Language), яка стала стандартом де-факто і використовується досі!

Комерційні продукти (1979-1992)

Oracle v2 (1979)

У 1979 році компанія Oracle випустила першу комерційну РСУБД Oracle v2. Це був переломний момент - реляційні бази даних вийшли за межі дослідницьких лабораторій.

Компанія Oracle випустила відразу версію 2, щоб створити враження стабільного продукту. Версії 1 ніколи не існувало!

IBM DB2 (1982)

У 1982 році з'явилася РСУБД DB2 від IBM - потужна корпоративна система, яка використовується досі.

Microsoft SQL Server 1.0 (1988)

В 1988 році фірми Microsoft і Ashton-Tate випустили спільний продукт Ashton-Tate/Microsoft SQL Server 1.0.

Microsoft Access (1992)

1992 рік - з'явилася перша версія РСУБД Access від компанії Microsoft - настільна база даних для малого бізнесу та персонального використання.


Основні поняття

База даних (БД)

База даних (Database) — це колекція пов'язаних даних, згрупованих в єдиний об'єкт.

Приклад: При створенні бази даних навчального закладу ми розміщуємо в ній необхідні набори даних:

Loading diagram...
graph LR
    A[База даних Університету] --> B[Студенти]
    A --> C[Викладачі]
    A --> D[Факультети]
    A --> E[Дисципліни]
    A --> F[Оцінки]

    style A fill:#3b82f6,color:#fff
    style B fill:#f59e0b,color:#fff
    style C fill:#f59e0b,color:#fff
    style D fill:#f59e0b,color:#fff
    style E fill:#f59e0b,color:#fff
    style F fill:#f59e0b,color:#fff

Згодом ми керуємо отриманою БД за допомогою програмного забезпечення як єдиним цілим.

Система управління базами даних (СУБД)

СУБД (Database Management System, DBMS) — спеціалізоване програмне забезпечення, що дозволяє працювати з базами даних: створювати, оновлювати, вилучати дані тощо.

Приклади СУБД:

  • Microsoft SQL Server
  • Oracle Database
  • PostgreSQL
  • MySQL
  • SQLite
  • MongoDB (NoSQL)

Компоненти СУБД

СУБД складається з низки серверних та клієнтських засобів:

Loading diagram...
graph TB
    subgraph "Клієнтська частина"
        A[Інструменти адміністрування]
        B[Конструктори запитів]
        C[Звіти та аналітика]
    end

    subgraph "Серверна частина"
        D[Обробник запитів]
        E[Оптимізатор]
        F[Менеджер пам'яті]
        G[Менеджер транзакцій]
        H[Система безпеки]
    end

    subgraph "Сховище даних"
        I[(Файли даних)]
        J[(Журнал транзакцій)]
        K[(Індекси)]
    end

    A --> D
    B --> D
    C --> D

    D --> E
    E --> F
    F --> I
    D --> G
    G --> J
    E --> K
    D --> H

    style D fill:#3b82f6,color:#fff
    style I fill:#f59e0b,color:#fff

Функції СУБД:

  • Обробка запитів - вилучення та зміна даних
  • Резервне копіювання - збереження копій даних
  • Відновлення даних - повернення до попереднього стану
  • Оптимізація - підвищення продуктивності виконання запитів
  • Керування пам'яттю - ефективне використання ресурсів
  • Контроль доступу - безпека та права користувачів

Предметна область

Предметна область (Domain) — частина реального світу, інформація про яку зберігається в базі даних.

Приклади предметних областей:

Предметна областьЩо зберігаєтьсяПриклад БД
ОсвітаСтуденти, викладачі, оцінкиУніверситетська БД
МедицинаПацієнти, діагнози, лікаріЕлектронна медкарта
Електронна комерціяТовари, замовлення, клієнтиІнтернет-магазин
Банківська справаРахунки, транзакції, клієнтиБанківська система
ЛогістикаСклади, транспорт, маршрутиСистема доставки

Дані vs. Інформація vs. Знання

Важливо розуміти різницю між цими поняттями:

Loading diagram...
graph LR
    A[Дані] -->|Контекст| B[Інформація]
    B -->|Аналіз| C[Знання]
    C -->|Досвід| D[Мудрість]

    style A fill:#64748b,color:#fff
    style B fill:#3b82f6,color:#fff
    style C fill:#f59e0b,color:#fff
    style D fill:#10b981,color:#fff

Дані (Data) - сирі факти без контексту.

Приклад:

25, "Київ", 2024

Це просто числа та text, які самі по собі нічого не означають.


Порівняння моделей баз даних

Моделі баз даних відрізняються правилами взаємозв'язку основних типів структур даних та операціями над ними. Кожна СУБД використовує логічну структуру зберігання даних, яка залежить від конкретної моделі.

Огляд моделей

Loading diagram...
timeline
    title Хронологія моделей баз даних
    1960-ті : Файлова модель
            : Набір незв'язаних файлів
    1968 : Ієрархічна модель
         : Деревоподібна структура
    1970 : Мережева модель
         : Графова структура
    1970 : Реляційна модель
         : Таблиці та зв'язки
    1990-ті : Об'єктно-орієнтована
            : Об'єкти та класи
    2000-ні : NoSQL
            : Гнучкі схеми

Файлова модель

Файлова модель - це модель зберігання даних, яка характеризується певним набором файлів, які не пов'язані між собою.

Структура файлової моделі

Основні типи структур даних:

Loading diagram...
graph TD
    A[Файл] -->|складається з| B[Записів]
    B -->|складаються з| C[Полів]

    style A fill:#3b82f6,color:#fff
    style B fill:#64748b,color:#fff
    style C fill:#f59e0b,color:#fff

Компоненти:

Поле (Field) - елементарна, неподільна одиниця даних.

Приклад: "Іванов", 25, "2024-01-15"

Приклад файлової структури

Файл: students.txt

1|Іваненко Петро|20|КНТ-21
2|Коваленко Марія|19|КНТ-21
3|Сидоренко Олег|21|КНТ-22

Файл: groups.txt

КНТ-21|Комп'ютерні науки|2021
КНТ-22|Комп'ютерні науки|2022

Файл: grades.txt

1|Математика|95
1|Фізика|87
2|Математика|92

Історичний контекст

Файлова модель була першою моделлю зберігання даних. Її можна вважати моделю без СУБД, адже:

  • Внутрішня структура файлів була відома лише розробнику
  • Кожна програма мала свій унікальний формат
  • Не було стандартизації

Чому це проблема?

Уявіть, що програміст Іван створив програму для обліку книг у бібліотеці. Він зберігає дані у файлі books.dat у своєму власному форматі. Через рік програміст Марія отримує завдання написати іншу програму для цієї ж бібліотеки. Вона не може просто прочитати файл Івана, бо не знає його структури!

Недоліки файлової моделі

  1. Залежність від програмного забезпечення
    • Алгоритм управління базою даних повністю закладено у ПЗ
    • При зміні структури даних необхідно вносити правки до програми
    • Важко підтримувати та масштабувати
  2. Несумісність форматів
    • Файли, створені на C++, не можна легко прочитати програмою на Java
    • Різниця у структурах даних між мовами програмування
    • Проблеми з переносимістю
  3. Складність міграції
    • Перенесення даних з однієї БД в іншу - складний процес
    • Розбіжність структур даних
    • Ручне перетворення форматів
  4. Дублювання даних - Відсутність централізованого зберігання - Одні й ті самі дані зберігаються в різних файлах - Складно підтримувати узгодженість

Приклад проблеми дублювання:

У бібліотеці є три файли:

  • books.txt - містить автора кожної книги
  • loans.txt - містить автора взятої книги
  • reservations.txt - містить автора зарезервованої книги

Якщо автор змінив прізвище (наприклад, одружилася), треба змінити дані в трьох місцях. Легко пропустити одне з них!


Ієрархічна модель

Ієрархічна модель - модель даних, у якій окремі записи поєднуються у відносини типу "батько-нащадок" і утворюють зв'язане дерево.

Структура ієрархічної моделі

Loading diagram...
graph TD
    A[Університет] --> B[Факультет КН]
    A --> C[Факультет Економіки]

    B --> D[Група КНТ-21]
    B --> E[Група КНТ-22]

    C --> F[Група ЕКО-21]

    D --> G[Студент: Іваненко]
    D --> H[Студент: Коваленко]

    E --> I[Студент: Петренко]

    F --> J[Студент: Сидоренко]

    style A fill:#3b82f6,color:#fff
    style B fill:#64748b,color:#fff
    style C fill:#64748b,color:#fff
    style D fill:#f59e0b,color:#fff
    style E fill:#f59e0b,color:#fff
    style F fill:#f59e0b,color:#fff

Характеристики

Переваги:

  • Простота структури
  • Зручність для уявлення деяких відносин реального світу
  • Швидкий доступ від батька до нащадків
  • Природне відображення ієрархічних структур

Приклад природної ієрархії:

  • Організаційна структура компанії
  • Файлова система операційної системи
  • Класифікація живих організмів (царство → тип → клас → рід → вид)

Недоліки:

  1. Не підтримує складні зв'язки М:N
    • Дочірній запис може належати тільки одному батьківському
    • Проблема: студент може вивчати дисципліни з різних факультетів
  2. Громіздка навігація
    • Для доступу до запису треба переміщатися по всьому дереву
    • Не можна "перестрибнути" з одної гілки в іншу
  3. Надмірність даних - Дані часто дублюються в різних гілках дерева

Приклад проблеми:

Студент Іван вивчає дисципліну "Бази даних", яку викладають на двох факультетах. У ієрархічній моделі доведеться створити два записи для цієї дисципліни - по одному в кожній гілці дерева!

Loading diagram...
graph TD
    A[Університет] --> B[Факультет КН]
    A --> C[Факультет Математики]

    B --> D["Дисципліна: Бази даних"]
    C --> E["Дисципліна: Бази даних ← ДУБЛІКАТ!"]

    style D fill:#f59e0b,color:#fff
    style E fill:#ef4444,color:#fff

IBM IMS

Найвідоміша СУБД: IBM IMS (Information Management System)

Застосування:

  • Системи бронювання авіаквитків
  • Банківські системи
  • Облік запасів на складах

Сучасність:

Хоча ієрархічна модель як окрема СУБД майже не використовується, ієрархічні структури застосовуються в:

  • Файлових системах (папки та підпапки)
  • XML/JSON документах
  • Організаційних структурах

Мережева модель

Мережева модель - удосконалена ієрархічна модель, яка дозволяє записам брати участь у багатьох відносинах типу "батько-нащадок" (зв'язки М:N).

Історична довідка: Чарльз Бахман

Чарльз Бахман (Charles Bachman, 1924-2017) був одним із основоположників мережевої моделі баз даних.Досягнення:
  • У 1963 році розробив IDS (Integrated Data Store) - одну з перших мережевих СУБД
  • У 1973 році отримав премію Тюрінга за розробки в технологіях баз даних
  • Створив діаграми Бахмана для моделювання даних

Структура мережевої моделі

На відміну від ієрархічної моделі, у мережевій моделі вузол може мати кілька батьків:

Loading diagram...
graph TD
    S1[Студент: Іваненко] --> D1[Дисципліна: Математика]
    S1 --> D2[Дисципліна: Фізика]
    S1 --> D3[Дисципліна: Програмування]

    S2[Студент: Петренко] --> D1
    S2 --> D3

    S3[Студент: Коваленко] --> D2
    S3 --> D3

    D1 --> T1[Викладач: Іванов]
    D1 --> T2[Викладач: Сидорова]

    D2 --> T2

    D3 --> T3[Викладач: Петров]

    style S1 fill:#3b82f6,color:#fff
    style S2 fill:#3b82f6,color:#fff
    style S3 fill:#3b82f6,color:#fff
    style D1 fill:#64748b,color:#fff
    style D2 fill:#64748b,color:#fff
    style D3 fill:#64748b,color:#fff

Стандартизація CODASYL

У 1975 році організація CODASYL (Conference of Data System Languages) стандартизувала мережеву модель:

Базові поняття:

  • Set (набір) - зв'язок між записами
  • Owner (власник) - батьківський запис
  • Member (член) - дочірній запис
  • Record type (тип запису) - схема структури даних

Переваги та недоліки

Переваги:

  • Більша гнучкість порівняно з ієрархічною моделлю
  • Підтримка складних зв'язків М:N
  • Менше дублювання даних
  • Ефективна для складних структур

Недоліки:

  1. Складність навігації
    • Розробники повинні самі здійснювати навігацію між записами
    • Треба знати всю структуру БД
    • Код стає складним та важким у підтримці
  2. Великі вимоги до пам'яті
    • Кожен елемент повинен зберігати посилання на інші елементи
    • Багато службової інформації
    • Неефективне використання ресурсів
  3. Складність змін - Внесення будь-яких змін у структуру - Може призвести до складних операцій оновлення - Важко масштабувати

Порівняння з ієрархічною:

КритерійІєрархічнаМережева
Батьківських записів1Багато
Складність навігаціїСередняВисока
ГнучкістьНизькаСередня
Зв'язки М:N❌ Ні✅ Так
Дублювання данихВисокеСереднє

Реляційна модель

Реляційна модель - модель даних, заснована на взаємодії рядків та стовпців, які утворюють таблиці з даними, пов'язаними між собою.

Історична довідка: Едгар Кодд

Едгар Франк Кодд (Edgar Frank "Ted" Codd, 1923-2003) - британський вчений, співробітник IBM.Революція в базах даних:
  • 1970 рік - опублікував статтю "A Relational Model of Data for Large Shared Data Banks"
  • 1981 рік - отримав премію Тюрінга за дослідження в галузі баз даних
  • Створив 12 правил для реляційних СУБД
  • Розробив реляційну алгебру та реляційне числення

Основна ідея

Революційна концепція Кодда: Відмовитися від складних зв'язків типу "батько-нащадок" та використовувати прості таблиці!

Loading diagram...
graph LR
    A[Ієрархічна/<br/>Мережева] -->|Революція<br/>Кодда| B[Реляційна]

    A -.->|Складні<br/>зв'язки| C[Дерева/<br/>Графи]
    B -.->|Прості<br/>структури| D[Таблиці]

    style A fill:#64748b,color:#fff
    style B fill:#3b82f6,color:#fff
    style C fill:#ef4444,color:#fff
    style D fill:#10b981,color:#fff

Структура реляційної моделі

Замість деревоподібних структур - звичайні таблиці:

Таблиця Students:

student_idfirst_namelast_namegroup_id
1ПетроІваненко101
2МаріяКоваленко101
3ОлегСидоренко102

Таблиця Groups:

group_idgroup_namefaculty_id
101КНТ-2110
102КНТ-2210

Зв'язок: Через group_id ми знаємо, до якої групи належить студент!

Ключові особливості

Дані організовані у вигляді таблиць (relations):

  • Рядки = записи (кортежі)
  • Стовпці = поля (атрибути)
  • Кожна таблиця має унікальну назву

Переваги реляційної моделі

  1. Зручність
    • Дані організовані у таблиці
    • Використання мови SQL
    • Не потрібно розуміти складні структури
  2. Гнучкість
    • Легко додавати нові зв'язки
    • Підтримка всіх типів відносин (1:1, 1:N, M:M)
    • Зручна реорганізація даних
  3. Математична основа
    • Базується на теорії множин
    • Формальні правила та докази
    • Передбачувана поведінка
  4. Незалежність
    • Програма не залежить від фізичного зберігання
    • Зміна структури не завжди ламає програму
    • Високий рівень абстракції
  5. Незалежність даних - Фізична структура не впливає на логічну - Можна змінювати зберігання без зміни програм - Оптимізація прозора для користувачів

Приклади РСУБД

Комерційні:

  • Oracle Database - найпотужніша корпоративна СУБД
  • Microsoft SQL Server - популярна у Windows-середовищі
  • IBM DB2 - для великих підприємств

Відкриті:

  • PostgreSQL - найпросунутіша open-source СУБД
  • MySQL - найпопулярніша для веб
  • MariaDB - форк MySQL
  • SQLite - вбудована БД для мобільних додатків

Хмарні:

  • Amazon RDS - керована база даних AWS
  • Google Cloud SQL - від Google
  • Azure SQL Database - від Microsoft

Об'єктно-орієнтована модель

Об'єктно-орієнтована модель - модель даних, у якій інформація зберігається у вигляді об'єктів, як у об'єктно-орієнтованому програмуванні (C#, Java, Python).

Основна концепція

Ідея: Якщо ми програмуємо об'єктно-орієнтованими мовами (Java, C++, Python), чому б не зберігати дані також як об'єкти?

Loading diagram...
classDiagram
    class Student {
        +int id
        +string name
        +Study(Course)
    }
    class Course {
        +int id
        +string title
        +AddStudent(Student)
    }
    Student "many" -- "many" Course : enrolls

Базові поняття ООП у БД

Клас (Class) - опис структури об'єкта та його поведінки.

Аналогія: Креслення автомобіля.

Переваги

  • Відсутність розриву між програмою та базою даних (немає потреби в ORM)
  • Можливість зберігати складні типи даних та методи
  • Підтримка спадкування та поліморфізму

Недоліки

  • Низька продуктивність на великих обсягах даних
  • Складність стандартів та відсутність єдиної мови запитів (подібної SQL)
  • Важкість аналітичних запитів порівняно з реляційною моделлю

Об'єктно-реляційні СУБД

Багато сучасних РСУБД доповнюються елементами ООП:

Oracle Database:

  • Підтримка об'єктних типів
  • Методи в таблицях
  • Наслідування типів

PostgreSQL:

  • Користувацькі типи даних
  • Наслідування таблиць
  • Об'єктні можливості

Приклад (PostgreSQL):

-- Створення користувацького типу
CREATE TYPE address AS (
    street VARCHAR(100),
    city VARCHAR(50),
    zip_code VARCHAR(10)
);

-- Використання в таблиці
CREATE TABLE customers (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    home_address address,
    work_address address
);

Порівняльна таблиця моделей

КритерійФайловаІєрархічнаМережеваРеляційнаООП
Рік появи19601968197019701990
СтруктураФайлиДеревоГрафТаблиціОб'єкти
СкладністьНизькаСередняВисокаНизькаВисока
Гнучкість❌ Дуже низька⚠️ Низька⚠️ Середня✅ Висока✅ Висока
Зв'язки М:N❌ Ні❌ Ні✅ Так✅ Так✅ Так
Стандартизація❌ Ні⚠️ Частково⚠️ Частково✅ SQL❌ Ні
Швидкість✅ Висока✅ Висока⚠️ Середня✅ Висока⚠️ Середня
Популярність❌ Застаріла❌ Застаріла❌ Застаріла✅✅✅ Дуже висока⚠️ Нішова
Використання сьогодніФайлові системиXML, файлові системиРідкоПовсюдноСпеціальні випадки

Висновок по моделях

Реляційна модель стала найпопулярнішою завдяки:
  1. Простоті - кожен розуміє концепцію таблиці
  2. Математичній строгості - формальна теорія гарантує передбачуваність
  3. Гнучкості - легко додавати нові зв'язки
  4. Стандартизації - SQL став універсальною мовою
  5. Незалежності даних - програми не залежать від фізичного зберігання
Реляційні бази даних використовуються у 90%+ систем сьогодні!

Початок 70-х років минулого століття став переломним моментом - реляційна модель Едгара Кодда змінила світ баз даних назавжди.

Дванадцять правил Кодда

У процесі розробки реляційної моделі баз даних, Едгар Кодд сформулював вимоги, яким має відповідати будь-яка реляційна СУБД. Він опублікував їх у 1985 році.

Едгар Кодд опублікував список з 13 правил (пронумерованих від 0 до 12), які визначають, чи є СУБД реляційною.

Правило 0: Основне правило

Правило 0 (Основне): Система повинна бути здатною керувати базами даних виключно за допомогою своїх реляційних можливостей.

Що це означає?

Система може називатися "реляційна СУБД" тільки якщо вона використовує виключно таблиці та реляційні операції. Не можна "хитрувати" та використовувати нереляційні механізми для основних функцій.

Приклад порушення:

❌ Погано: Зберігати дані в таблицях, але використовувати
          файлові покаж чики для зв'язування записів

✅ Добре: Використовувати виключно таблиці та зовнішні
         ключі для всіх операцій

Правило 1: Правило інформації

Правило 1 (Інформаційне): Вся інформація в реляційній базі даних повинна бути представлена виключно на логічному рівні у вигляді таблиць.

Пояснення:

Дані можуть зберігатися ТІЛЬКИ в комірках таблиць. Ніякої додаткової інформації за межами таблиць!

Візуалізація:

Loading diagram...
graph LR
    A[Вся інформація] --> B[Таблиця 1]
    A --> C[Таблиця 2]
    A --> D[Таблиця 3]

    B --> E[Рядки та стовпці]
    C --> F[Рядки та стовпці]
    D --> G[Рядки та стовпці]

    style A fill:#3b82f6,color:#fff
    style E fill:#10b981,color:#fff
    style F fill:#10b981,color:#fff
    style G fill:#10b981,color:#fff

Приклади:

Таблиця: Users
+----+-----------+----------+
| id | name      | age      |
+----+-----------+----------+
| 1  | Іван      | 25       |
| 2  | Марія     | 30       |
+----+-----------+----------+

Вся інформація в комірках!

Правило 2: Правило гарантованого доступу

Правило 2 (Гарантований доступ): Кожен елемент даних (значення) повинен бути доступним за допомогою комбінації: назви таблиці, значення первинного ключа та назви стовпця.

Формула доступу:

Значення = Таблиця[Первинний_Ключ].Стовпець

Приклад:

Таблиця Students:

student_idfirst_namelast_nameage
1ПетроІваненко20
2МаріяКоваленко19
3ОлегСидоренко21

Доступ до даних:

-- Щоб отримати ім'я студента з ID=2:
Таблиця: Students
Ключ: student_id = 2
Стовпець: first_name
Результат: "Марія"

Чому це важливо?

  • Гарантує унікальний шлях до кожного значення
  • Не потрібно знати фізичне розташування даних
  • Не потрібно писати складний код навігації

Правило 3: Правило підтримки недійсних значень

Правило 3 (Підтримка NULL значень): СУБД повинна забезпечувати системну підтримку відсутньої та невідомої інформації.

Що таке NULL?

NULL - це не нуль, не порожній рядок, а спеціальне значення, що означає "невідомо" або "не застосовується".

age = NULL  -- Вік невідомий
age = 0     -- Вік - 0 років

Різні речі!

Чому NULL потрібен?

  • У реальному світі інформація часто невідома
  • Не всі поля завжди мають значення
  • NULL відрізняється від "значення за замовчуванням"

Правило 4: Правило динамічного каталогу

Правило 4 (Динамічний каталог): Опис бази даних (системний каталог) повинен зберігатися у самій базі як набір звичайних таблиць.

Що таке метадані?

Метадані - це "дані про дані":

  • Які таблиці існують?
  • Які стовпці в кожній таблиці?
  • Які є обмеження (constraints)?
  • Які індекси створені?

Ключова ідея: Метадані = такі ж таблиці, як і звичайні дані!

Приклад (SQL Server):

-- Переглянути всі таблиці в БД
SELECT * FROM sys.tables;

-- Переглянути стовпці конкретної таблиці
SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('Students');

-- Переглянути зовнішні ключі
SELECT * FROM sys.foreign_keys;

Системні таблиці (приклад структури):

ТаблицяЩо зберігає
sys.tablesСписок всіх таблиць
sys.columnsІнформація про стовпці
sys.indexesІнформація про індекси
sys.foreign_keysЗовнішні ключів
sys.proceduresЗбережені процедури

Чому це важливо?

  • Можна запитувати структуру БД звичайними SQL-запитами
  • Інструменти адміністрування можуть автоматично аналізувати БД
  • Метадані завжди актуальні

Правило 5: Правило вичерпної підмови даних

Правило 5 (Вичерпна мова даних): Система повинна підтримувати принаймні одну мову, яка дозволяє виконувати всі операції з БД.

Що має робити ця мова?

  • Створення бази даних (DDL)
  • Маніпулювання даними (DML)
  • Управління доступом (DCL)
  • Контроль транзакцій (TCL)
  • Запити даних (DQL)

У реляційних БД це SQL:

-- Створення таблиці
CREATE TABLE Students (
    id INT PRIMARY KEY,
    name VARCHAR(100)
);

-- Зміна структури
ALTER TABLE Students ADD age INT;

-- Видалення
DROP TABLE Students;

Важливо: Не можна вимагати використання спеціальних інструментів для базових операцій. Все через мову!


Правило 6: Правило оновлення представлень

Правило 6 (Оновлення представлень): Всі представлення (Views), які теоретично можна оновити, повинні оновлюватися системою.

Що таке представлення (view)?

View - це "віртуальна таблиця", що є результатом запиту.

Приклад:

-- Створення представлення
CREATE VIEW ActiveStudents AS
SELECT id, name, age
FROM Students
WHERE is_active = 1;

-- Представлення повинно працювати як таблиця
SELECT * FROM ActiveStudents;           -- ✅ Читання
INSERT INTO ActiveStudents VALUES(...);  -- ✅ Вставка (якщо можливо)
UPDATE ActiveStudents SET age = 21;      -- ✅ Оновлення (якщо можливо)
DELETE FROM ActiveStudents WHERE id = 1; -- ✅ Видалення (якщо можливо)

Реальність:

На практиці не всі view можна оновлювати. Наприклад:

-- Складне представлення з агрегацією
CREATE VIEW GroupStats AS
SELECT group_id, COUNT(*) as student_count, AVG(age) as avg_age
FROM Students
GROUP BY group_id;

-- Як тут вставити запис? Неможливо!

Правило 7: Правило додавання, оновлення та видалення

Правило 7 (Високорівневі вставка, оновлення та видалення): Система повинна підтримувати операції над множинами записів одночасно.

Приклад:

-- Видалити одного студента
DELETE FROM Students WHERE id = 1;

-- Оновити одного студента
UPDATE Students SET age = 21 WHERE id = 1;

Чому це важливо?

  • Одна і та ж команда для 1 або 1000 записів
  • Не треба писати цикли
  • СУБД сама оптимізує операцію

Правило 8: Правило незалежності фізичних даних

Правило 8 (Фізична незалежність даних): Прикладні програми не повинні залежати від того, як дані фізично зберігаються на диску.

Що це означає?

Ваша програма не повинна знати:

  • На якому диску зберігаються файли БД
  • Яка файлова система використовується
  • Скільки RAM у сервера
  • Який процесор встановлено

Приклад:

Loading diagram...
graph TB
    A[Ваша програма] --> B[SQL запити]
    B --> C[СУБД]

    C -.->|Ви не знаєте про це| D[SSD диск]
    C -.->|Ви не знаєте про це| E[RAID масив]
    C -.->|Ви не знаєте про це| F[Кешування]
    C -.->|Ви не знаєте про це| G[Індекси]

    style A fill:#3b82f6,color:#fff
    style C fill:#64748b,color:#fff
    style D fill:#f59e0b,color:#333
    style E fill:#f59e0b,color:#333
    style F fill:#f59e0b,color:#333
    style G fill:#f59e0b,color:#333

Переваги:

  • Адміністратор може змінити фізичне зберігання без зміни програм
  • Можна оновити обладнання без переписування коду
  • Додаток працює однаково на різних серверах

Правило 9: Правило незалежності логічних даних

Правило 9 (Логічна незалежність даних): Прикладні програми не повинні залежати від змін структури таблиць, якщо ці зміни не стосуються їх даних.

Приклад:

Була таблиця:

CREATE TABLE Users (
    id INT,
    full_name VARCHAR(200)  -- Повне ім'я в одному полі
);

Змінили на:

CREATE TABLE Users (
    id INT,
    first_name VARCHAR(100),  -- Розділили на частини
    last_name VARCHAR(100)
);

-- Створили view для сумісності
CREATE VIEW Users_Old AS
SELECT id,
       first_name + ' ' + last_name AS full_name
FROM Users;

Старі програми продовжують працювати з Users_Old!


Правило 10: Правило незалежності умов цілісності

Правило 10 (Незалежність цілісності): Мова СУБД має підтримувати перевірку вхідних даних та забезпечувати їхню цілісність.

Типи перевірок:

CREATE TABLE Students (
    id INT PRIMARY KEY,
    age INT CHECK (age >= 16 AND age <= 100),
    email VARCHAR(100) CHECK (email LIKE '%@%')
);

Правило 11: Правило незалежності поширення

Правило 11 (Незалежність розподілу): База даних може бути на різних комп'ютерах, і мова СУБД повинна підтримувати можливість роботи з розподіленими даними.

Розподілена БД:

Loading diagram...
graph TB
    A[Користувач] --> B[SQL запит]
    B --> C[Головний сервер]

    C --> D[БД Київ]
    C --> E[БД Львів]
    C --> F[БД Одеса]

    D --> G[Студенти Києва]
    E --> H[Студенти Львова]
    F --> I[Студенти Одеси]

    style A fill:#3b82f6,color:#fff
    style C fill:#64748b,color:#fff

Приклад запиту:

-- Користувач не знає, що дані на різних серверах!
SELECT name, city
FROM Students
WHERE age > 20;

-- СУБД сама:
-- 1. Відправляє запит на всі сервери
-- 2. Збирає результати
-- 3. Повертає об'єднаний результат

Правило 12: Правило єдності

Правило 12: Не повинно бути можливості порушити безпеку та цілісність даних в обхід мови СУБД.

Що це означає?

Не можна:

  • Редагувати файли БД напряму (блокнотом)
  • Змінювати дані через низькорівневі API
  • Обходити перевірки прав доступу

Приклад порушення:

 ПОГАНО:
# Відкрити файл БД і змінити байти
hexedit /var/lib/mysql/students.ibd

 ДОБРЕ:
# Використовувати тільки SQL
UPDATE Students SET age = 21 WHERE id = 1;

Чому це важливо?

  • Обхід мови = обхід всіх перевірок
  • Можна зламати цілісність даних
  • Можна обійти права доступу
  • Можна пошкодити БД

Підсумок правил Кодда

ПравилоСуть
0ОсновнеТільки реляційні можливості
1ІнформаціяВсі дані - в таблицях
2Гарантований доступТаблиця + Ключ + Стовпець
3NULLПідтримка невідомих значень
4Динамічний каталогМетадані - теж таблиці
5Вичерпна моваОдна мова для всього
6Оновлення представленьView = таблиці
7Масові операціїОдин або багато - однаково
8Фізична незалежністьНезалежність від апаратури
9Логічна незалежністьНезалежність від структури
10ЦілісністьПеревірки в мові СУБД
11РозподіленняПідтримка розподілених даних
12ЄдністьТільки через мову СУБД
Жодна сучасна СУБД не виконує всі 12 правил Кодда на 100%! Це ідеал, до якого треба прагнути. Але правила Кодда залишаються фундаментом для розуміння, що таке "правильна" реляційна база даних.

Порівняння сучасних СУБД

На сьогоднішній день існує велика кількість систем керування базами даних. Для порівняння візьмемо чотири популярні РСУБД: MS SQL Server, Oracle, PostgreSQL і MySQL.

Кожна СУБД має свої переваги та недоліки. Спробуємо бути максимально об'єктивними у порівнянні.

Microsoft SQL Server

Розробник: Microsoft Corporation

Перша версія: 1988 рік (SQL Server 1.0)

Остання версія: SQL Server 2022

Ліцензія: Комерційна (є безкоштовна Express редакція)

Oracle Database

Розробник: Oracle Corporation

Перша версія: 1979 рік (Oracle v2)

Ліцензія: Комерційна

PostgreSQL

Розробник: Спільнота розробників

Перша версія: 1996 рік

Ліцензія: Open Source (безкоштовна)

MySQL

Розробник: Oracle Corporation (раніше MySQL AB)

Перша версія: 1995 рік

Ліцензія: Open Source / Комерційна


Детальне порівняння

Oracle Database

Переваги:

  • Найпотужніша корпоративна СУБД
  • Найкраща продуктивність для складних запитів
  • Підтримка величезних обсягів даних (петабайти)
  • Підтримка багатьох платформ (Linux, Windows, AIX, Solaris)
  • Розширені можливості безпеки
  • Кластеризація та високий рівень доступності

Недоліки:

  • Дуже висока вартість ліцензій
  • Високі вимоги до апаратного забезпечення
  • Складність адміністрування - потрібні висококваліфіковані фахівці
  • Надмірна для простих проєктів

Коли використовувати:

  • Великі корпоративні системи
  • Критично важливі додатки (банки, телеком)
  • Обробка величезних обсягів даних
  • Потрібна максимальна надійність

Microsoft SQL Server

Переваги:

  • Чудова інтеграція з екосистемою Microsoft (.NET, Azure, Windows)
  • Зручні інструменти адміністрування (SSMS)
  • Хороша продуктивність
  • Стабільність та надійність
  • Є безкоштовна Express версія для навчання
  • Багато навчальних матеріалів та спільнота

Недоліки:

  • Працює переважно на Windows (Linux підтримка з'явилась недавно)
  • Комерційна ліцензія для великих проєктів
  • Менш гнучка для нестандартних завдань порівняно з PostgreSQL

Редакції:

РедакціяПризначенняВартість
ExpressНавчання, малі додаткиБезкоштовно
StandardМалий та середній бізнесСередня
EnterpriseВеликі корпораціїВисока
DeveloperРозробка та тестуванняБезкоштовно

Коли використовувати:

  • .NET додатки
  • Windows-середовище
  • Середній та великий бізнес
  • Хмарні рішення на Azure

PostgreSQL

Переваги:

  • Повністю безкоштовна (Open Source)
  • Максимальна відповідність стандартам SQL
  • Об'єктно-реляційна модель
  • Розширювана архітектура (плагіни, розширення)
  • Підтримка JSON, XML, масивів, геоданих
  • Чудова для складних запитів
  • Працює на всіх платформах (Windows, Linux, macOS)

Недоліки:

  • Складність налаштування для початківців
  • Менша продуктивність порівняно з MySQL на простих запитах
  • Менша популярність у веб-хостингу
  • Споживає більше ресурсів

Унікальні можливості:

-- Зберігання JSON
CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    data JSONB
);

-- Запити до JSON
SELECT data->>'name' FROM products
WHERE data @> '{"category": "books"}';

Коли використовувати:

  • Складні аналітичні запити
  • Потрібна відповідність стандартам SQL
  • Обмежений бюджет
  • Геоінформаційні системи (PostGIS)
  • Зберігання JSON даних

MySQL

Переваги:

  • Найпопулярніша Open Source СУБД
  • Дуже висока швидкість на простих запитах
  • Простота встановлення та налаштування
  • Підтримка майже на всіх веб-хостингах
  • Велика спільн ота та багато навчальних матеріалів
  • Ідеальна для веб-додатків

Недоліки:

  • Обмежена функціональність порівняно з PostgreSQL ma Oracle
  • Деякі проблеми з надійністю в минулому
  • Менше підтримки складних типів даних
  • Не всі типи JOIN оптимізовані

Популярні форки:

ФоркОсобливості
MariaDBПокращена версія MySQL, повністю сумісна
PerconaОптимізована для великих навантажень

Коли використовувати:

  • Веб-додатки (LAMP/LEMP stack)
  • Блоги, CMS (WordPress, Drupal)
  • Невеликі та середні проєкти
  • Потрібна максимальна швидкість читання

Порівняльна таблиця

КритерійOracleMS SQL ServerPostgreSQLMySQL
Вартість💰💰💰💰💰💰💰💰 (є Free)🆓 Безкоштовно🆓 Безкоштовно
Продуктивність⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐ (прості)
ПлатформиВсіWindows (Linux)ВсіВсі
СкладністьДуже високаСередняСередняНизька
СпільнотаСередняВеликаВеликаНайбільша
Відповідність SQLВисокаВисокаНайвищаСередня
Популярність вебНизькаСередняЗростаєНайвища
РозширюваністьСередняНизькаНайвищаСередня
JSON підтримкаХорошаХорошаНайкращаБазова

Висновок: Яку СУБД обрати?

MS SQL Server - "Золота середина"

Microsoft SQL Server є золотою серединою серед СУБД:

Переваги:
  • Не така дорога як Oracle
  • Простіша в адмініструванні
  • Чудова для .NET екосистеми
  • Є безкоштовна версія для навчання
  • Багато навчальних матеріалів
⚠️ Недоліки:
  • Комерційна ліцензія для production
  • Прив'язка до Windows (переважно)

Для навчання ми обрали MS SQL Server!

Ця СУБД:

  1. Широко використовується в індустрії
  2. Має зручні інструменти
  3. Добре документована
  4. Безкоштовна для навчання (Express)
  5. Чудовий баланс між функціональністю та складністю

Рекомендації вибору

Loading diagram...
graph TD
    A[Вибір СУБД] --> B{Бюджет?}
    B -->|Необмежений| C[Oracle]
    B -->|Середній| D{Платформа?}
    B -->|Обмежений| E{Складність?}

    D -->|Windows/.NET| F[MS SQL Server]
    D -->|Linux/кроссплатформа| G[PostgreSQL]

    E -->|Проста| H[MySQL]
    E -->|Складна| G

    style C fill:#ef4444,color:#fff
    style F fill:#3b82f6,color:#fff
    style G fill:#10b981,color:#fff
    style H fill:#f59e0b,color:#333
Для веб-стартапу: Почніть з MySQL або PostgreSQLДля корпоративного додатку: MS SQL Server або OracleДля навчання: MS SQL Server Express або PostgreSQLДля складної аналітики: PostgreSQL або Oracle

Встановлення Microsoft SQL Server

У цьому розділі ми детально розглянемо процес встановлення MS SQL Server 2016 Express та інструментів управління.

Версії та редакції Microsoft SQL Server

Перша версія MS SQL Server (SQL Server 1.0) з'явилася в 1988 році. Наступна версія — SQL Server 1.1 — вийшла у 1990 році.

Хронологія основних версій:

РікВерсіяОсобливості
1988SQL Server 1.0Перша версія
1990SQL Server 1.1Покращення стабільності
1993SQL Server 4.2Windows NT підтримка
1996SQL Server 6.5Інтернет підтримка
2000SQL Server 2000XML підтримка
2005SQL Server 2005CLR інтеграція
2008SQL Server 2008Filestream
2012SQL Server 2012AlwaysOn
2014SQL Server 2014In-Memory OLTP
2016SQL Server 2016JSON, R підтримка
2017SQL Server 2017Linux підтримка
2019SQL Server 2019Big Data Clusters
2022SQL Server 2022Найновіша версія
Ми будемо використовувати SQL Server 2016 або новішу версію. Для навчання достатньо безкоштовної редакції Express.

Редакції SQL Server 2016

Доступні редакції:

Призначення: Навчання, малі додатки, розробка
Вартість: 🆓 Безкоштовно
Обмеження:

  • Максимум 1 процесор
  • Максимум 1 ГБ RAM для буфера
  • Максимум 10 ГБ розмір БД

Ідеально для: Студентів, малих додатків, розробки


Інсталяція Microsoft SQL Server 2016 Express

Системні вимоги

Перш ніж розпочати встановлення, переконайтеся, що ваш комп'ютер відповідає вимогам:

  • Операційна система: Windows 10, Windows 8/8.1, Windows Server 2012/2012 R2/2016
  • Процесор: Мінімум 1 ГГц (рекомендовано 2 ГГц або швидше)
  • Оперативна пам'ять: Мінімум 512 МБ (рекомендовано 2 ГБ або більше)
  • Вільне місце: Мінімум 4.2 ГБ на жорсткому диску
  • Екран: Мінімум 1024x768 пікселів

Завантаження інсталятора

  1. Перейдіть на офіційний сайт Microsoft:
    https://www.microsoft.com/en-us/sql-server/sql-server-downloads
  2. Знайдіть секцію Express edition
  3. Натисніть кнопку Download
Якщо доступна новіша версія (2017, 2019, 2022), можете використовувати її. Процес встановлення дуже схожий.

Крок 1: Вибір типу установки

Після запуску інсталятора з'явиться вікно вибору типу установки.

Доступні варіанти:

  • Швидка установка
  • Налаштування за замовчуванням
  • Займає менше часу

Недоліки: Немає контролю над параметрами

Виберіть Custom (Користувацька установка) для повного контролю.

На скріншоті показано вікно вибору типу установки. Натисніть Custom для розширеного встановлення.

Крок 2: Вибір розташування

У наступному вікні відображається:

  • Необхідний вільний простір на диску
  • Розмір завантаження
  • Папка встановлення

Рекомендація: Залишіть розташування за замовчуванням або виберіть диск з достатнім вільним місцем.

Натисніть кнопку Install для початку завантаження.


Крок 3: Завантаження пакету

Розпочнеться завантаження пакету установки. Цей процес може зайняти кілька хвилин залежно від швидкості інтернету.

Завантаження може зайняти 5-15 хвилин. Не переривайте процес!

Крок 4: Початок нової установки

Після завантаження з'явиться вікно SQL Server Installation Center.

Виберіть перший пункт: "New SQL Server stand-alone installation or add features to an existing installation"


Крок 5: Ліцензійна угода

Ознайомтеся з ліцензійною угодою від Microsoft.

Важливо:

  • Прочитайте умови використання
  • Поставте галочку "I accept the license terms"
  • Натисніть Next


Крок 6: Встановлення файлів інсталяції

Програма здійснить:

  • Пошук оновлень
  • Завантаження необхідних файлів
  • Підготовку до установки

Зачекайте завершення цього етапу.


Крок 7: Правила встановлення

Програма перевірить систему на потенційні проблеми.

Можливі попередження:

  • Windows Firewall - потрібно буде відкрити порти для віддаленого доступу
  • Програми, що конфліктують - можливо треба закрити
  • Недостатньо місця - звільніть місце на диску

Попередження про Windows Firewall - це нормально. Ми налаштуємо порти пізніше, коли це буде потрібно.

Натисніть Next для продовження.


Крок 8: Вибір компонентів

Основні компоненти для вибору:

✅ Database Engine Services (ОБОВ'ЯЗКОВО)
   └─ SQL Server Replication

✅ Full-Text and Semantic Extractions

⚠️  Analysis Services (опціонально)

⚠️  Reporting Services (опціонально)

❌ Machine Learning Services (не потрібно для початку)

Рекомендація для навчання: Виберіть Database Engine Services та Reporting Services.


Крок 9: Встановлення компонентів

Розпочнеться встановлення вибраних компонентів.

Прогрес установки відображається для кожного компонента. Цей процес може зайняти 5-10 хвилин.

Після успішного встановлення натисніть Next.


Крок 10: Налаштування екземпляру

Що таке екземпляр (Instance)?

Екземпляр SQL Server - це окрема копія SQL Server зі своїми базами даних, налаштуваннями та службами.

Типи екземплярів:

Іменування: (local) або .\ або назва комп'ютера

Особливості:

  • Може бути тільки один
  • Простіше підключатися
  • Рекомендовано для початківців

Рекомендація: Виберіть Named instance з ім'ям SQLEXPRESS (за замовчуванням).


Крок 11: Конфігурація сервера

Налаштування облікових записів служб та параметрів сортування.

Служби SQL Server:

СлужбаПризначенняАвтозапуск
SQL ServerОсновна служба БДAutomatic
SQL Server AgentПланувальник завданьManual
SQL Server BrowserДопомога в підключенніAutomatic

Рекомендація: Залишіть налаштування за замовчуванням та натисніть Next.


Крок 12: Database Engine Configuration

Це найважливіший крок установки!

Вкладка "Server Configuration"

Режим автентифікації:

Що це:
Використання облікових записів Windows для входу.

Переваги:

  • Простіше для локальної роботи
  • Інтеграція з Active Directory
  • Безпечніше (Kerberos)

Рекомендовано для навчання!

Налаштування адміністраторів:

Додайте поточного користувача Windows як адміністратора:

  1. Натисніть кнопку Add Current User
  2. Або Add... для додавання інших користувачів
Обов'язково додайте хоча б одного адміністратора! Без цього ви не зможете підключитися до SQL Server.

Вкладка "Data Directories"

Налаштування розташування файлів бази даних.

Типи каталогів:

Data root directory
├── User database directory     (.mdf файли даних)
├── User database log directory (.ldf файли журналів)
├── Backup directory            (Резервні копії)
└── TempDB directory            (Тимчасові дані)

Рекомендація для Production:
  • Дані на окремому фізичному диску (швидкий SSD)
  • Журнали на іншому фізичному диску
  • Резервні копії на третьому диску або мережевому сховищі
Для навчання: Можна залишити за замовчуванням або створити окрему папку.


Інші вкладки

TempDB:

  • Налаштування тимчасової бази даних
  • Можна залишити за замовчуванням

User Instances:

  • Дозвіл користувачам запускати екземпляр
  • За замовчуванням увімкнено

FILESTREAM:

  • Зберігання великих бінарних даних (файли, зображення)
  • За замовчуванням вимкнено
  • Можна увімкнути пізніше

Натисніть Next для продовження.


Крок 13: Reporting Services Configuration

Якщо ви встановили Reporting Services, з'явиться це вікно.

Варіанти:

  • Автоматичне налаштування
  • Рекомендовано

Виберіть Install and configure та натисніть Next.


Крок 14: Microsoft R Open (опціонально)

SQL Server 2016 включає підтримку R для статистичного аналізу.

Microsoft R Open - це розширення для інтелектуального моделювання та роботи зі статистичними даними.Для навчання баз даних: Не обов'язково, але можна встановити.

Натисніть Accept (або Skip якщо не потрібно).


Крок 15: Процес установки

Розпочнеться основна установка SQL Server. Це найдовший етап!

Що відбувається:

  • Копіювання файлів
  • Створення служб Windows
  • Налаштування Database Engine
  • Встановлення Reporting Services
  • Конфігурація безпеки
Цей процес може зайняти 10-20 хвилин. Не вимикайте комп'ютер і не переривайте процес!

Крок 16: Завершення установки

Успіх! SQL Server встановлено.

Вікно показує:

  • ✅ Успішно встановлені компоненти
  • ⚠️ Попередження (якщо є)
  • ❌ Помилки (якщо є)

Натисніть Close для завершення.


Крок 17: Перевірка встановлення

Відкрийте Панель керуванняПрограми та компоненти

Ви повинні побачити Microsoft SQL Server 2016 у списку встановлених програм.

Розкрийте список та переконайтеся, що встановлені:
  • SQL Server Database Engine
  • SQL Server Reporting Services
  • Configuration Manager
  • SQL Server Documentation (опціонально)

Важливо: Перезавантажте комп'ютер після установки!


Встановлення SQL Server Management Studio (SSMS)

SQL Server Management Studio (SSMS) - це візуальне середовище для роботи з SQL Server.

Починаючи з SQL Server 2016, SSMS встановлюється окремо.

Навіщо потрібен SSMS?

Без SSMS:

# Робота через командний рядок
sqlcmd -S localhost\SQLEXPRESS
1> SELECT * FROM Users;
2> GO

З SSMS:

  • 🖱️ Графічний інтерфейс
  • 📝 Редактор запитів з підсвічуванням
  • 🗂️ Object Explorer для перегляду структури
  • 📊 Візуальні діаграми
  • 🔧 Інструменти налаштування

Завантаження SSMS

Варіант 1: Через Installation Center

  1. Запустіть SQL Server 2016 Installation Center
  2. Виберіть Install SQL Server Management Tools

  1. Відкриється браузер з сторінкою завантаження

Варіант 2: Пряме завантаження

Перейдіть на:
https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms

Натисніть Download SQL Server Management Studio

SSMS випускається окремо від SQL Server. Остання версія SSMS працює з усіма версіями SQL Server, починаючи з 2008.

Встановлення SSMS

Після завантаження запустіть інсталятор.

Крок 1: Початок установки

Натисніть Install для початку.


Крок 2: Завантаження пакетів

SSMS завантажить необхідні компоненти.


Крок 3: Процес установки

Установка може зайняти 5-10 хвилин.


Крок 4: Перезавантаження

Після установки рекомендується перезавантажити комп'ютер.

Натисніть Restart або Close (якщо перезавантаження пізніше).


Перевірка встановлення SSMS

Після перезавантаження знайдіть у меню Пуск:

Microsoft SQL Server Tools 17
└─ Microsoft SQL Server Management Studio 17


Перше підключення до SQL Server

Запуск SSMS

Запустіть SQL Server Management Studio з меню Пуск.

При першому запуску:

  1. Завантаження налаштувань користувача
  2. Ініціалізація середовища
  3. Вікно підключення до сервера

Вікно підключення

Параметри підключення:

1. Server type (Тип сервера)

✅ Основна служба БД
Використовуйте це для роботи з даними

Для роботи з даними: Виберіть Database Engine.


2. Server name (Ім'я сервера)

Формат:

localhost
.
(local)
COMPUTER_NAME

SSMS автоматично знаходить локальні сервери. Виберіть зі списку:

  • (local)\SQLEXPRESS - ваш локальний екземпляр
  • . - скорочена форма localhost
Натисніть на випадаючий список - SSMS покаже доступні сервери.Якщо список порожній, введіть вручну: localhost\SQLEXPRESS

3. Authentication (Автентифікація)

Режими автентифікації:

Що використовується: Поточний обліковий запис Windows

Переваги:

  • Не потрібно вводити пароль
  • Безпечніше (Kerberos)
  • Інтеграція з Active Directory

Коли використовувати: Локальна робота, корпоративне середовище

Для локального SQL Server Express: Виберіть Windows Authentication.


Успішне підключення!

Після натискання Connect ви побачите:

Loading diagram...
graph LR
    A[Object Explorer] --> B[Databases]
    A --> C[Security]
    A --> D[Server Objects]
    A --> E[Management]

    B --> F[System Databases]
    B --> G[User Databases]

    F --> H[master]
    F --> I[tempdb]
    F --> J[model]
    F --> K[msdb]

    style A fill:#3b82f6,color:#fff
    style B fill:#64748b,color:#fff
    style F fill:#f59e0b,color:#333

Перевірте підключення:

  • У Object Explorer розкрийте Databases
  • Ви повинні побачити системні бази даних: master, tempdb, model, msdb
Якщо ви бачите цю структуру - SQL Server встановлено та працює правильно! 🎉

Інструменти SQL Server

Давайте розглянемо встановлені компоненти та утиліти.

SQL Server Configuration Manager

Призначення: Керування службами та мережевими налаштуваннями

Можливості:

  • Запуск/зупинка служб SQL Server
  • Налаштування автозапуску служб
  • Конфігурація мережевих протоколів (TCP/IP, Named Pipes)
  • Управління портами
  • Налаштування псевдонімів (aliases)

Як запустити:

Start Menu → SQL Server 2016 Configuration Manager

Основні служби:

СлужбаОписРекомендований режим
SQL Server (SQLEXPRESS)Основна служба БДAutomatic
SQL Server Agent (SQLEXPRESS)Планувальник завданьManual (Auto у Standard/Enterprise)
SQL Server BrowserДопомога в підключенніAutomatic

Reporting Services Configuration Manager

Призначення: Налаштування сервера звітів

Що можна налаштувати:

  • База даних каталогу звітів
  • Connection strings

SQL Server Import and Export Data

Призначення: Копіювання даних між джерелами

Підтримувані формати:

✅ SQL Server
✅ Oracle
✅ MySQL
✅ PostgreSQL
✅ Access
✅ Excel

Коли використовувати:

  • Міграція даних
  • Імпорт з Excel в SQL
  • Експорт даних для аналізу
  • Регулярне копіювання

Практичне завдання

Виконайте наступні кроки для перевірки установки:

Завдання 1: Створення тестової бази даних

  1. Відкрийте SSMS
  2. Підключіться до сервера
  3. У Object Explorer → правою кнопкою на DatabasesNew Database...
  4. Введіть ім'я: TestDB
  5. Натисніть OK

Результат: База даних TestDB з'явилася у списку.


Завдання 2: Створення таблиці

  1. Розкрийте TestDBTables
  2. Правою кнопкою → NewTable...
  3. Додайте стовпці:
Column NameData TypeAllow Nulls
idint
namenvarchar(100)
ageint
  1. Зробіть id первинним ключем (правою кнопкою на idSet Primary Key)
  2. Збережіть таблицю (Ctrl+S) з ім'ям Users

Завдання 3: Вставка даних

  1. Правою кнопкою на таблиці UsersEdit Top 200 Rows
  2. Введіть дані:
idnameage
1Іван25
2Марія22
3Петро30
  1. Натисніть в іншому місці для збереження

Завдання 4: Запит даних

  1. Натисніть New Query
  2. Введіть SQL:
SELECT * FROM TestDB.dbo.Users;
  1. Натисніть Execute (F5)

Очікуваний результат:

id    name      age
1     Іван      25
2     Марія     22
3     Петро     30
Якщо ви побачили цей результат - установка пройшла успішно, і ви готові до вивчення баз даних! 🎉

Поширені проблеми та рішення

Проблема 1: Не можу підключитися до SQL Server

Симптоми:

A network-related or instance-specific error occurred while establishing
a connection to SQL Server.

Рішення:

  1. Відкрийте Services (Win+R → services.msc)
  2. Знайдіть SQL Server (SQLEXPRESS)
  3. Переконайтеся, що служба Running
  4. Якщо ні - натисніть Start

Проблема 2: SQL Server Authentication не працює

Симптоми:

Login failed for user 'sa'.

Причина: Можливо, під час установки вибрали тільки Windows Authentication.

Рішення:

  1. Підключіться через Windows Authentication
  2. Object Explorer → правою кнопкою на сервері → Properties
  3. Security → виберіть SQL Server and Windows Authentication mode
  4. Натисніть OK
  5. Перезапустіть службу SQL Server

Проблема 3: Недостатньо прав

Симптоми:

The user does not have permission to perform this action.

Рішення:

  1. Переконайтеся, що ваш обліковий запис Windows - адміністратор
  2. Або додайте себе до ролі sysadmin:
-- Виконайте під обліковим записом з правами
USE master;
GO
CREATE LOGIN [DOMAIN\Username] FROM WINDOWS;
GO
ALTER SERVER ROLE sysadmin ADD MEMBER [DOMAIN\Username];
GO

Висновок

У цьому розділі ми:✅ Розгля нули версії та редакції SQL Server
✅ Встановили SQL Server 2016 Express
✅ Встановили SQL Server Management Studio
✅ Навчилися підключатися до сервера
✅ Створили тестову базу даних
✅ Познайомилися з інструментами SQL Server

Ви готові до вивчення баз даних!

У наступних уроках ми детально розглянемо:

  • Реляційну модель та математичні основи
  • ER-моделювання
  • Проектування логічної схеми
  • Класифікацію таблиць
Не поспішайте видаляти TestDB! Використовуйте цю базу для експериментів під час вивчення наступних тем.
Copyright © 2026