🧙MagicSQL💻
160 subscribers
185 photos
7 files
10 links
Войди в мир SQL и аналитики с моим каналом. Изучай, применяй и преуспевай. Интересный контент, задачи, тесты, разборы и обучение.
#SQL #базыданных #postgresql
Download Telegram
Нормализация базы данных в SQL.

Нормализация в SQL - это процесс организации и структурирования базы данных для достижения эффективности и минимизации избыточности данных. Она включает разделение таблиц на более мелкие и связанные друг с другом, чтобы уменьшить дублирование информации.

Основные цели нормализации в SQL следующие:

1. Устранение повторений и избыточности данных: Нормализация помогает устранить избыточные данные, избегая дублирования информации в разных частях базы данных.

2. Улучшение структуры данных: Благодаря нормализации база данных становится логически структурированной, что облегчает понимание и поддержку.

3. Улучшение производительности: Нормализация может повысить производительность базы данных, так как меньшие таблицы и связи позволяют выполнять запросы более эффективно.

Процесс нормализации состоит из нескольких нормальных форм, таких как первая нормальная форма (1NF), вторая нормальная форма (2NF), третья нормальная форма (3NF) и т. д. Каждая нормальная форма имеет свои правила и директивы, которые помогают достичь определенного уровня нормализации.

Общая идея нормализации состоит в том, чтобы разбить данные на разные таблицы таким образом, чтобы каждая таблица содержала только уникальные записи и информацию о конкретном аспекте данных. Это помогает снизить сложность хранения и обработки данных, а также обеспечивает лучшую гибкость и поддержку базы данных в долгосрочной перспективе.

В следующих публикациях расскажу простым языком про три нормальные формы.
🔥4❤1
Перед нами запрос на изменение данных. Наша задача изменить дату заказа и дату отгрузки для тех работников, чей id = 5.

UPDATE orders SET order_date = '2001-01-01', shipped_date = '2001-01-15' WHERE employee_id = 5 Что ни так в данном запросе?
Anonymous Quiz
14%
В операторе SET нельзя изменять значения сразу двух полей
36%
После UPDATE необходимо указать ключевое слово TABLE
14%
В данном запросе все так
36%
В операторе SET необходимо указать AND между значениями изменяемых полей вместо запятой
Друзья, привет. Подготовил разбор трех первых нормальных форм для нормализации БД. Прикрепляю три файла, в которых сделал разбор каждой формы с примерами. Найдите пожалуйста время, прочтите. Это должно внести некое понимание в эту не простую тему.

Три нормальные формы базы данных.

Первая нормальная форма (1NF) – значения каждого поля таблицы должны быть атомарны. То есть каждое значение не может быть разделено на составные части без потери смысла. Каждое значение является минимальной единицей информации и обеспечивает однозначность.

Вторая нормальная форма (2NF) – Каждое поле таблицы должно зависеть от полного составного ключа, а не от его отдельной части. Если какое либо поле, которое не является первичным ключом, зависит от части составного ключа, то таблица не находится во второй нормальной форме.

Третья нормальная форма (3NF) – Все неключевые поля в таблице должны функционально зависеть только от первичного ключа. В таблице не должно быть транзитивных функциональных зависимостей.
Транзитивная зависимость – это когда поля таблицы, не являющиеся первичным ключом зависят от других полей, которые также не являются первичным ключом. Этого быть не должно.
👍1
Статистические функции SQL.

Можно ли в SQL проводить статистический анализ? Можно.
Разберем несколько популярных и полезных функций.

corr ( Y column , X column ) - вычисляет коэффициент корреляции

regr_r2 ( Y column , X column ) - вычисляет квадрат коэффициента корреляции

stddev ( column ) - вычисляет стандартное отклонение

variance ( column ) - вычисляет дисперсию
👍4👏1
SELECT 100 + NULL - что получится в результатe?
Anonymous Quiz
0%
0
5%
101
50%
NULL
45%
100
Друзья, привет!

Когда изучаешь SQL часто встает вопрос на чем бы потренироваться или например какой запрос оптимальнее? Есть конечно учебные базы данных, но иногда их объем недостаточен для того, чтобы оценить какой запрос более оптимален для решения с точки зрения производительности системы.

Покажу как создать таблицу и заполнить ее рандомными значениями в 5 000 000 строк.

Цель – создание таблицы events.

Внутри таблицы хотим видеть три поля:
user_id – уникальный id клиента,
event_date – дата события,
event_type – тип события.
Период дат выбираем с '2018-01-01' по '2023-09-06'.
Типы событий выбираем: 'покупка', 'регистрация', 'посещение', 'клик'.

Пользуйтесь и экспериментируйте!
🔥4❤1👏1
Влияние индекса на фильтрацию в SQL при хорошей селективности.

Покажу на примере как в случае частой фильтрации по одному и тому же полю в SQL запросе существенное влияние на ускорение выполнения влияет создание индекса.

Конечно индекс может быть не всегда полезен, но в случае хорошей селективности значений, ускорение может стать пушкой.

Сейчас мы с вами в этом убедимся. Взгляните на скриншоты, где я проводил эксперимент. Думаю все станет однозначно понятно.
👍4
Устроился на новую работу и думал что первые пол года тебя там ни кто особо не будет трогать=).
👍4
Друзья, всем привет. Не вдаваясь в подробности что означает данный запрос какая на ваш взгляд версия более читабельнее и понятнее для вас?
Какая версия читабельнее темная или светлая?
Anonymous Poll
38%
Темная
63%
Светлая
Всем привет.

Такая задачка: Вывести все названия продуктов, в которых встречаются фразы ‘Louisiana’, ‘Sir’ или ‘Chef’. Как нам это сделать?

Конечно же использовать оператор ILIKE. Показываю лайфхак как использовать оператор ILIKE сразу для списка искомых значений.
👍3❤2
Применение CASE в различных частях SQL запроса.

Конструкция CASE это невероятно крутая штука, которая способна закрыть множество задач, связанных с выполнением условных операций.

Но многие не догадываются о всех ее способностях и местах применения в различных частях запроса. Вот например, как вы думаете можно ли создать категории конструкцией CASE в операторе SELECT и в этом же запросе отфильтровать по созданной категории?

Представим что нам необходимо создать три категории заказов по весу: 'тяжелый', 'средний', 'легкий' и вывести в результате только 'тяжелый'.

Ну что ж, посмотрим на это. Оказывается что можно.
❤5👀1