Что такое нормализация баз данных?
Вставка
- Опубліковано 5 лют 2025
- Присоединяйтесь к UltaHost 👉 ultahost.com/ru
👉 ultahost.com/uk
⚡ Повысьте скорость и безопасность своего сайта!
В этом видео я расскажу о нормализации баз данных и её значении для разработчиков. Рассмотрим, как нормализация поможет упорядочить данные и сделать их более удобными для работы. Также коснемся денормализации и различных уровней нормальных форм.
👉ПОДПИСЫВАЙТЕСЬ👈 - / @sergeynemchinskiy
ОБУЧЕНИЕ В FOXMINDED 💻
🧠 Регистрируйся на менторинг - go.foxminded.u...
👉Обучение на проекте - go.foxminded.u...
Вы можете стать спонсором канала и получать плюшки - / @sergeynemchinskiy
❤ FoxmindEd в Instagram: / foxminded.ua
🎓Продвинутые курсы для состоявшихся девелоперов:
👉Enterprise patterns - go.foxminded.u...
👉GRASP and GoF Design patterns - go.foxminded.u...
👉C# NEXT - go.foxminded.u...
👉Unit testing Java - go.foxminded.u...
🔧 Пробное техническое собеседование со специалистом уровня Senior Developer/ Team Leader - go.foxminded.u...
👔 Карьерная консультация с Сергеем Немчинским - go.foxminded.u...
Есть вопросы по обучению в FoxmindEd? Пишите нам в телеграм - t.me/foxminded...
FOXMINDED В СОЦСЕТЯХ 🌎
👉Сайт FoxmindEd для новичков - go.foxminded.u...
👉Сайт для разработчиков уровня мидл+ - go.foxminded.u...
👍FoxmindEd в ФБ: / foxmindedco
📸FoxmindEd в Instagram: / foxminded.ua
✈️Мой Telegram: t.me/nemchinsk...
📧Для деловых запросов: youtube@foxminded.ua
Підписуйтесь на наш україномовний канал - / @serhiinemchynskyi
Тайминг:
00:00 - Вступление
00:42 - Ultahost
01:12 - Дисклеймер
02:36 - Что такое нормализация?
03:53 - Какие бывают основные нормальные формы?
04:55 - First Normal Form (1NF)
10:49 - Second Normal Form (2NF)
13:03 - Third Normal Form (3NF)
17:01 - Boyce-Codd normal form (BCNF
19:36 - Fourth Normal Form (4NF)
21:14 - Денормализация
#nemchinskiy
⚡ Повысьте скорость и безопасность своего сайта!
Присоединяйтесь к UltaHost:
👉 ultahost.com/ru
👉 ultahost.com/uk
Классно ещё увидеть ролик про индексы БД, и как они устроены и как работает например B-Tree.
+ планы запрососв!
пушо стример - должен страдать!
+ уровни изоляции транзакций, блокировки и синхронизацию
не мучайте Немчинского
А почему книги не читаем?
Спасибо, что вы затронули тему нормализации. Преподаю нормализацию баз данных студентам. Заметила, что очень тяжело объяснять нормализацию на словах. А вот если рассказывать на примерах, показывая сами таблицы, то тогда намного проще воспринимать. Поэтому советую тому, кто учит нормализацию советую просто загуглить примеры всех 3 нормальных форм.
Горе преподаватели... Вся терминология через отрицание дается, потому и тяжело
Ну Сергей, такой вольной трактовки нормализации я еще не видел :) Однако видео получилось весёлым и не бесполезным :))) Палец вверх я все-таки поставил.
Дякую за Вашу роботу та корисну інформацію. Подивився 08.10.24
Если нужно понять нормальные формы, лучше поискать другое видео. здесь спикер пытался объяснить, но у него не получилось, без примеров это сделать непросто. Ради справедливости, первую форму понятно объяснил.
Практика і досвід. Дякую!
Спасибо за Вашу работу!)
Прекрасное видео! Ваш канал этот кладезь невероятно полезной информации. Не хватает только иллюстрации реальным кодом, но я так понимаю, что это намеренно и чтобы аудитория посещала ваши курсы. Имеете полное право на такой подход. Огромное спасибо!
Сергей и весь коллектив канала, традиционное спасибо за выпуск, как всегда содержательно и интересно 👍👍👍
* обратил внимание на то, насколько отличаются подход и отношение к БД в случаях бэкенда и дата-аналитики 🙂
Подобные видео полезные, а не просто развлекательные 👍🏻
Не хотел смотреть, потому что знал это, но видос очень интересный, точный и комичный даже)). Спасибо. Лайк!👍
Было очень интересно, ждем продолжения на подобные темы) Даже удалось понять большую часть)
Дуже цікава тема. Дякую
Сделайте пожалуйста видео про индексы, статистику, план запросов.
Хочу стать денормализатором баз данных!
Денормализаторами не становятся, ими рождаются
ты им уже стал
Т.е. клиентом с идиотскими требованиями, которые противоречат изначальному ТЗ? )
@@deniskhakimov нет человеком у кого аналитические запросы в БД летают
@@xyzw777 вы про EXPLAIN ANALYZE или какой-то сторонний софт для отладки?
Я просто хз, в последний раз занимался оптимизацией запросов в очень крупном интернет-магазине года 3 назад. Если честно, то удивлён, что для этого существуют отдельные люди, т.к. раньше подобным занимались сами же _погроммисты._
Хорошее видео, спасибо. Базы данных, не смотря на казалось бы элементарность темы, могут приподнести сюпризы, так что всегда лучше продумать их схему заранее.
Еще короткое и емкое объявнение темы нормализации приведено в книге Murach's MySQL в главе про проектирование баз данных.
Очень интересно, очень понятно, очень спасибо.
Очень часто это спрашивают на собесах. Теперь буду знать как отвечать на этот вопрос. На практике знаю про нормализацию, но теорию не знал)
Сергей, у тебя настоящий талант рассказывать интересно о скучных вещах) Даже если ты снимешь видос о том, как чистить картошку, то это будет интересно)
о наконец-то эта тема, спасибо!
Такие вещи лучше объяснять на примерах, тогда всё становится проще.
А ещё у каждого разное отношение к составным ключам и искусственным ключам. Я даже знаком с людьми, что терпеть не могут вторичные ключи и заявляют, что лучше они это всё проконтролируют в коде, чем будут получать ошибки от БД.
Эту тему не заказывал и впервые про неё вообще слышу, но посмотрел видос с огромным удовольствием) фронтендер
Супер, спасибо!!!
Спасибо, мне было очень полезно.
Сделал небольшой конспект по ролику, буду иногда читать перед сложными собесами) спасибо
О Господи наконец-то нашолся человек который переложил этот ботан-описание на адекватные термины, спсасибо тебе..
норм тема, спасибо.
Полезно. 😊
Спасибо за видео. Полезно. Хочу добавить, что по идее УНП (уникальный номер налогоплательщика) уже можно использовать как ID. Т.е. ключ становится простым, состоящим из одного поля, а не составным. Тогда вторая НФ у нас получится автоматически. Вопрос о том, что вообще лучше делать искусственный ключ мы оставим за скобками :)
Нельзя потому что не у всех есть ИПН, от него можно отказаться
@@komputersh4ik546 о как, не знал. По крайней мере не слышал, возможно ли такое в Беларуси. С другой стороны, если УНП может быть null, то стоит ли его вообще включать в ключ? И опять же к вопросу о том, что ключи лучше делать искусственные, чтобы не зависеть от специфики предметной области.
@@The_Vict0rну ещё вариант использовать уникальный номер в демографическом реестре он даётся 1 раз и на всю жизнь
@@The_Vict0r Простого ответа нет, что лучше, т.к проектирование БД сильно зависит от предметной области и носит субьективный характер. Из личного опыта, надо закладывать перспективу на ближайшие годы, делать универсальную базу с широким охватом, вы проект никогда не закончите и все не предусмотрите.
@@Владимир-м4и8э да, это так
Вычисляемые поля нарушают 3НФ?
Например, у меня есть пул заявок с nullable датой выполнения. И мне нужно булевое поле, где хранится просто 0 - если даты нет, и 1 в любом другом случае, т.е. по факту просто отметка, закрыта заявка или нет. Получается, введние такого поля нарушает 3НФ? Или я неправильно понял? И как тогда предполагается сделать, чтобы не нарушалась НФ?
У нас в институте рассылают эксель для заполнения отчета по гранту, что делал каждый день (да, це Европа). Там ссылки на какой-то другой экслель на каком--то компе в папке оутлук. У меня его нет. Я полгода пытаюсь обьяснить, что не надо так. Потом все автоматическое заполнение не работает и все вручную. И да, делали под чешскую винду. Месяцы не по номерам, а по названиям. А там всего-то сложить числа в одном столбце и все - количество отработанных часов.
Использование столбца с типом JSON в таблице может быть признаком отклонения от строгих принципов нормализации, но это не всегда означает, что структура «ненормализованная». Всё зависит от контекста и характера данных, хранимых в этом JSON. 👇
1. Если вы используете JSON для хранения данных, которые можно было бы вынести в отдельные таблицы (например, связанные записи), то это считается отклонением от нормализации. 👎
2. Если JSON используется для хранения данных, которые не имеют фиксированной структуры или меняются со временем, это может быть оправдано. Например, пользовательские настройки или лог событий. В этом случае JSON помогает избежать чрезмерной сложности в проектировании. 👍
Как в нормализацию вписываются Date Added и Date Updated?
Мне понравилась формулировка, что нормализация БД, это процесс который уменьшает потенциальные пустые поля, nulls.
Жаль, что нельзя сразу over1000 лайков поставить)
Урааа, я не зря учил дискретку и комбинаторику.Хотя если брать во внимание что юзаем только до NF3 то ...
join и сейчас нормально не работают. по крайней мере в ms sql. сильно зависит от статистик и сегментации. и довольно часто непредсказуемо время исполнения.
Алілуя! Нарешті) всього лише кілька місяців просили на стрімах, і ось воно!
Лайк за Марка Ноплера 😂❤
И 25 лет назад в книжках для простых людей писали, что дальше 3НФ вам не надо.
Сейчас, в эпоху ормов, если сперва проектировать на уровне объектов, то как-то и без матана обычно видно, что вот этот вот кусок просится выделиться в отдельный объект.
Я думал что я знаю что такое нормализация БД. После просмотра видео я еще почитал википедию.
Теперь я не знаю что такое нормализация ((
Интересно как Сергей готовится к записи таких видосов. Наверное он немного готовится и "поднимает" материал с интернетов а не сразу из головы?
А то начинает казаться что Сергей знает всё и обо всем
Конечно готовился) вы меня переоцениваете
Сергей Немчинский на протяжение 24 минут отвергает матан 😂
Щось цей ультахост якийсь стрьомний. У переліку валют є багато чого, навіть убль, а грн відсутня.
Та й вартість щось кусається
Дякую 👍
надо рисовать. слайды или хотя б рисунки на доске улучшили бы понимание.
22:00 - так появились NoSQL базы ))) (шучу)
Хорошо объяснил на пальцах нормализацию. Но как обычно всегда есть нюансы. Современные БД (и PostgreSQL и Oracle) позволяют применять массив в виде типа поля. И если у меня в таблице есть поле, на пример, json_id int8[], то от этого едва ли моя таблица не поддерживает 1НФ. Хотя одно из правил 1НФ требует одно значение. С другой стороны, если рассматривать это поле как массив, то значение в нем и правда хранится одно - массив данных.
Спасибо за "человеческое" объяснение "нечеловеческих" определений 😅
8:57 ...достает произвольные JSONы из каждой ячейки 🫤
Почтим страдания лайком!
Не самое вдохновляющее дело, но полезное.
> не позволят нафигачить несколько значений
А как же array?
тут имеется ввиду, что все значения будут одного типа. Если это строка, то она везде строка, а не массив строк в одном случае; если это массив, то это везде массив, а не json в одной ячейке.
ненавижу когда это спрашивают на собесах - сразу понимаю, что интервьюер не очень. Везет, что уже на уровне, когда у меня такое спрашивать не прилично, но в своей карьере попадал на такой вопрос неоднократно.
Почему же? Тема лёгкая и важная, разумеется её будут спрашивать.
Хотя бы базово понимать, что ячейка хранить одно значение и записи должны быть уникальными с pk
ИМХО если человек хоть чуть чуть понимает как программа работает с данными, то ниже третей формы он бд не организует. Когда студенческую работу по продаже билетов автовокзала делал была претензия что у меня ни одного джойна нет, у меня все дублирующиеся данные были вынесены в таблицы-словарики по праймари кеям, единственное что я не смог придумать чтоб было просто как кирпич - это остановки на маршруте, но посомтрев примеры таких работ в инете понял что мало кто вообще до этого этапа дошёл.
Коротше кажучи, аналізуйте сутності, юзайте ОРМ і буде вам щастя.
Нормализировать можно всё😂
Тема очень скучная, а оттуда и интерес. Так как самому ее понять большинству очень сложно. А вы ее очень хорошо объяснили, ну или, по крайней мере, дали еще одну точку зрения на непонятные формулы, что прибавляет объемности уже имеющимся у меня представлениям. За что большое спасибо.
👍
Нормально
У меня сервер не всегда успевает в нормализованную базу...
Спасибо!
Слишком уж категорично, на мой взгляд, про денормализацию. Из моего опыта, при разработке микросервисов, постоянно приходится с ней сталкиваться. Альтернатива - постоянно ходить к другим сервисам за недостающей инфой, что вообще не играет на руку устойчивости всего приложения и превращает микросервисы в уродливый монолит
Первое правило архитектуры - everything is a trade-off. Вы однозначно правы - в некоторых ситуациях денормализация необходима, чтобы достичь определенных характеристик системы, а в других - только вредит.
❤❤❤😂😂😂😢😢😢
благодарю за выделения места в левом верхнем углу места для поддержи ассоциации людей больных синдромом Дауна, от души
Ты давно не посещал психиатра. Тебе прогулы уже ставят. Лечись.
Судя по твоему комментарию это вообще не помогает
Не понял, при чем тут математический анализ? Терпеть не могу его
Трудно что-ли брать примеры из реальных кейсов? Неужели сложный ключ не можете нормально объяснить? Или вы просто давно что-то реальное делали? Ну тогда готовьтесь к роликам.
Чё за флаг
Я так и ни понял как в ето играть.
И почиму про ключ много есть а про Буратину нет как бдто от него ни зависит.
(камент дыля прадвижения Буратинам, а то Немчина пужаить, и страшно...)
Сергей, как к вам устроится ?
Ментором? На сайте есть форма в разделе команда
@@NemchinskyLive программером
Через постель 😂
@@torrvic1156 ваш метод ?))