Основы БАЗ данных и SQL
План лекции
Базы данных
Типы баз данных
Oltp и olap субд
Реляционные базы данных
Нормальные формы
Нормальные формы
Нормальные формы
Третья нормальная форма
Колоночные базы данных
Язык запросов sql
Структура sql запроса
Виды Join
Оконные функции
Рубрика открытый микрофон
2.74M
Категория: Базы данныхБазы данных

SQL

1. Основы БАЗ данных и SQL

ОСНОВЫ БАЗ ДАННЫХ
И SQL
Преподаватель IT-ЛЭТИ: Тюлюбаев Артем Андреевич

2. План лекции

ПЛАН ЛЕКЦИИ
o Что такое база данных и зачем она нужна?
o OLTP и OLAP
o Реляционные базы данных: таблицы, связи, ключи
o Колоночные базы данных
o Введение в SQL: язык для «разговора» с БД
o Объединение таблиц (JOIN) — самая важная операция

3. Базы данных

БАЗЫ ДАННЫХ
o База данных – это упорядоченная, структурированная
совокупность данных, управляемая СУБД (системой
управления базами данных).
o Ключевые свойства:
o Постоянное хранение
o Структурированность: Данные организованы по
моделям (реляционная, документная и т.д.)
o Целостность: Обеспечение правильности и
непротиворечивости данных (констрейнты)
o Управление доступом: Разграничение прав (ACID,
RBAC)
o Эффективный доступ: Быстрый поиск и
манипуляция данными через языки запросов (SQL)

4. Типы баз данных

ТИПЫ БАЗ ДАННЫХ
OLTP (Online Transaction Processing) и OLAP (Online Analytical Processing)
Транзакция в базе данных (БД) — это последовательность
одной или нескольких операций с данными, которые
выполняются как единое целое.
Атомарность — это свойство транзакций, которое
гарантирует, что все операции внутри транзакции либо
завершаются успешно, либо не выполняются вообще.
Принцип ACID - Atomicity, Consistency, Isolation, Durability

5. Oltp и olap субд

OLTP И OLAP СУБД
o Реляционные (SQL). Данные в таблицах (строках и колонках) со строгой
схемой. Связи через ключи. (PostgreSQL, MySQL, Oracle).
o Колоночные. Данные хранятся по колонкам, а не по строкам.
Эффективны для аналитики. (ClickHouse).

6. Реляционные базы данных

РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ
o Структура. Таблицы (отношения),
состоящие из строк и колонок.
o Схема (Schema). Четко определенная
перед началом работы. Типы данных,
ограничения, связи.
o Целостность данных (Data Integrity).
Обеспечивается через механизмы:
o ACID-транзакции
o Ограничения (Constraints):
PRIMARY KEY, FOREIGN KEY,
UNIQUE, NOT NULL, CHECK

7. Нормальные формы

НОРМАЛЬНЫЕ ФОРМЫ
o Нормальная форма — требование, предъявляемое к структуре таблиц в теории реляционных баз
данных для устранения из базы избыточных функциональных зависимостей между атрибутами
(полями таблиц).
o Отношение находится в 1НФ, если все его атрибуты являются простыми, все используемые домены
должны содержать только скалярные значения. Не должно быть повторений строк в таблице.

8.

ПЕРВАЯ НОРМАЛЬНАЯ ФОРМА
o Отношение находится в 1НФ, если все его атрибуты являются простыми,
все используемые домены должны содержать только скалярные значения.
Не должно быть повторений строк в таблице.

9. Нормальные формы

НОРМАЛЬНЫЕ ФОРМЫ
o Отношение находится во 2НФ, если оно находится в 1НФ и каждый не
ключевой атрибут неприводимо зависит от Первичного Ключа(ПК).
o Неприводимость означает, что в составе потенциального ключа
отсутствует меньшее подмножество атрибутов, от которого можно также
вывести данную функциональную зависимость.

10.

ВТОРАЯ НОРМАЛЬНАЯ ФОРМА
o Отношение находится во 2НФ, если оно находится в 1НФ и каждый не
ключевой атрибут неприводимо зависит от Первичного Ключа(ПК).

11. Нормальные формы

НОРМАЛЬНЫЕ ФОРМЫ
o Отношение находится в 3НФ, когда находится во 2НФ и каждый не
ключевой атрибут нетранзитивно зависит от первичного ключа. Проще
говоря, второе правило требует выносить все не ключевые поля,
содержимое которых может относиться к нескольким записям таблицы в
отдельные таблицы.

12. Третья нормальная форма

ТРЕТЬЯ НОРМАЛЬНАЯ ФОРМА
o Отношение находится в 3НФ, когда находится во 2НФ и каждый не
ключевой атрибут нетранзитивно зависит от первичного ключа. Проще
говоря, второе правило требует выносить все не ключевые поля,
содержимое которых может относиться к нескольким записям таблицы в
отдельные таблицы.

13. Колоночные базы данных

КОЛОНОЧНЫЕ БАЗЫ ДАННЫХ
Преимущества (Почему это быстро для аналитики?)
o Сверхбыстрое агрегирование: SUM, AVG, COUNT
выполняются за один проход по колонке
o Эффективное сжатие: Данные в одной колонке однотипны, что
позволяет применять мощные алгоритмы сжатия
o Векторизованная обработка: Операции выполняются не над одной ячейкой, а над целыми массивами
(колонками), оптимально используя кэш CPU
o Предикатная фильтрация: Быстрое отсечение нерелевантных данных по условию WHERE
Недостатки и ограничения
o Медленные точечные операции: Получение всей строки по ключу (SELECT * WHERE id = 123) требует сборки
из множества колонок.
o Неэффективность для OLTP задач: Тяжелые и медленные операции UPDATE/DELETE отдельных строк.
o Сложность со вставками: Запись одной строки означает запись в конец каждого столбца.

14. Язык запросов sql

ЯЗЫК ЗАПРОСОВ SQL
Группы команд (DDL, DML, DCL, TCL):
o DDL (Data Definition Language): Определение структуры.
CREATE, ALTER, DROP
o DML (Data Manipulation Language): Манипуляция данными.
SELECT, INSERT, UPDATE, DELETE
o DCL (Data Control Language): Управление доступом. GRANT,
REVOKE.
o TCL (Transaction Control Language): Управление транзакциями.
BEGIN, COMMIT, ROLLBACK

15. Структура sql запроса

СТРУКТУРА SQL ЗАПРОСА
SELECT [DISTINCT] column1, AGG_FUNC(column2)
FROM table1
[JOIN table2 ON ...]
WHERE condition
GROUP BY column1
HAVING condition
ORDER BY column1 [ASC|DESC]
LIMIT count;

16. Виды Join

ВИДЫ JOIN

17. Оконные функции

ОКОННЫЕ ФУНКЦИИ
Проблема: Как выполнить вычисления над группой строк (окном), не сворачивая их в одну, как в GROUP BY?
FUNCTION_NAME(column) OVER (
[PARTITION BY partition_column]
[ORDER BY order_column [ROWS|RANGE frame]]
) AS new_column_name
Ключевые компоненты:
PARTITION BY: Разбивает данные на группы (окна). Аналог GROUP BY, но без свертки.
ORDER BY внутри OVER: Определяет порядок строк в окне и логику скользящего окна.
Фрейм: ROWS BETWEEN N PRECEDING AND CURRENT ROW.
Популярные функции:
Ранжирование: ROW_NUMBER(), RANK(), DENSE_RANK().
Аналитические: LAG(), LEAD() (доступ к соседним строкам).
Агрегатные: SUM(...) OVER(), AVG(...) OVER().

18. Рубрика открытый микрофон

РУБРИКА ОТКРЫТЫЙ МИКРОФОН
English     Русский Правила