Нормальные формы базы данных. Три нормальных формы, нормализация и денормализация БД

preview_player
Показать описание
Поговорим о нормализации БД

00:00:00 Зачем оно?
00:00:54 Нормальные формы
00:01:06 Нормализация, избыточность, аномалии
00:02:28 Денормализация
00:03:02 Первая нормальная форма
00:06:18 Это не нормализация
00:08:55 Вторая нормальная форма
00:11:53 Третья нормальная форма

/****************** about ******************/

Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:

Рекомендации по теме
Комментарии
Автор

Как всегда замечательно, объяснил на примере за 15 минут то, что до нас препод за целый курс не донёс

pokruk
Автор

Теперь хочется остальные формы в таком же формате изучить)) Спасибо)

Olegtrr
Автор

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

vladiumcvet
Автор

Да, а следующая ступень это как в хайлоаде делать бд) иногда там нужно положить болт на нормализацию в угоду скорости

enpblfm
Автор

Леша, Лёха, Алексей! Опять добро делаешь! Спасибо! Полезно и очень интересно смотреть такие видео!

Vjidowkdkcpapqkfjfw
Автор

Интересно было бы послушать на счет Нормальных Форм после 4, ибо, зачастую, они редко используются, потому что основная цель НФ - найти золотую середину скорости обращения к необходимым экземплярам записи БД и исключить аномалии, что достигается до 4 НФ, а последующие - загадка. Какие плюсы и минусы использования НФ с 5 по 6? Отрасли, в которых базы данных проектируется БД до 5-6 нормальных форм.

bolvarus
Автор

Спасибо. Присоединяюсь к продолжению разговора о других формах и табличках

gnompirogov
Автор

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

knarg
Автор

На основе прочитанных статей, книг у меня сложилось мнение о НФ, немного отличающееся от вашего:
1НФ - добавить то, что строки и столбцы неупорядочены. Не стоит ожидать, что при одном и том же SELECT-е порядок строк будет один и тот же.
2НФ - неключевые элементы могут зависеть или от первичного ключа (а если он составной, то ключа целиком) или от других неключевых элементов, которые в свою очередь прямо или опосредованно зависят от первичного ключа.
3НФ - строже, чем вторая: неключевые элементы могут зависеть только от первичного ключа.

greendramost
Автор

Наконец-то серьёзные темы пошли (без сарказма) 😊

codingfox
Автор

Здорово! Спасибо! картинка очень приятная, все понятно, очень приятно слушать!

lindasmith
Автор

7:14 Это разделение становится полезным как только появляются атрибуты, связанные с ОС. Например компанию, разрабатывающую ОС, или какие-то её доп. свойства.

MrLotrus
Автор

9:00 Из какого источника взято требование для 2-НФ - "есть первичный ключ"? Википедия со ссылой на Кода говорит "Put simply, a relation is in 2NF if it is in 1NF and every non-prime attribute of the relation is dependent on the whole of every candidate key."

Gesperid
Автор

Спасибо большое! Все на понятном для нас языке!

nikesenpai
Автор

Прикольно 😊
Очень просто и понятно. Спасибо за объяснение. Пришёл ко всему этому собственным опытом, но здесь всё объяснено словами и почему-то не приходило в голову, что по БД есть теория и систематизация. Надо будет почитать 😅

blackmass
Автор

Нормальная форма - это здравый смысл. Пытливый ум не увидет тут ответа на вопрос что такое нормализация баз данных. Нормализация делается для того чтобы не хранить в базе дублирующиеся данные. Если нам нужно хранить название операционной системы, то желательно хранить его в одной записи. А все остальные таблицы по хорошему должны иметь ссылку на эту запись. И таким образом все правила нормализации направлены именно на уменьшение размеров хранимых данных. Взглянув на таблицу можно сразу понять, нормализованные в ней данные хранятся или нет. Если мы видим повторяющиеся значения (например названия чего либо), то сразу можем сделать вывод, что данные не нормализованные.

andreykhalepov
Автор

Все так, только если все равно нужно будет джоинить лучше джоинить по serial id и его указывать внешним ключом, а не текстовые данные тем самым сократив размер базы и время джоина

MoneoArtem
Автор

Когда-то давно (4-5 лет назад) в бауманке пропустил первую пару на кафедре по БД, потом долго догонял за их устройство очень))
И за нормальные формы и схемы БД очень жёстко всех спрашивали на экзамене, не всегда понимал тогда правила форм, особенно Бойса-Кодда, но путём применения здравого, как раз-таки, смысла догонять материал был легче. А так штука действительно полезная.

islamgadzhiev
Автор

Ролик понравился, но с точки зрения памяти, разве id не лучше? . Например у нас 10 - 100 к, записей в таблице, phons где по сути названия os дублируются, тут как поступать отдавать предпочтение pk или же название ios прописывать . Далее вопрос на счёт join, что лучше тут 1 запрос сделать с join или же два отдельных запросов, где в первом получаем id os по названию, а во втором получаем название телефонов по os_id?

gapchannelAi
Автор

Во второй табличке 11:11 разве owner_id с неуникальными значениями является первичным ключём?

YTRusViewer