Вопрос №55443 от пользователя Daniyar Zhanakhmetov в уроке «Вторая нормальная форма», курс «Основы реляционных баз данных»

Daniyar Zhanakhmetov

Мне кажется нужно где-то прописать, зачем именно нужны эти формы. Да, есть какие-то 3 нормальные формы, и если так делать, то это хорошо. Но зачем? Зачем выделять таблицы, указывать внешний и первичный ключ и т.д. Ниже было 2 наглядных хороших примера. Думаю их можно как-то включить в теорию:

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

Не совсем так. Этот момент хорошо прослеживается на примере имени пользователя. Допустим, есть таблица заказов, в которой есть колонка e-mail клиента (другие данные допустим не нужны). С одной стороны можно туда вбивать напрямую e-mail. Но что если клиент изменит свой e-mail. В таком случае нужно будет делать выборку всех заказов клиента и обновлять в них e-mail на новый. А если e-mail клиентов вынесем в отдельную таблицу и каждому присвоим уникальный id, а в таблице заказов будем использовать id вместо e-mail. Тогда мы спокойно сможем изменить e-mail только один раз в таблице e-mail и не нужно дополнительно проверять и обновлять все заказы.

Именно после этого комента, я понял, что это необходимо для удобства манипуляциями данных. Необходимо построить БД так, чтобы кол-во манипуляций при ее изменении было минимальным.

1 1

Maksim Litvinov

Информация, о том, для чего нужна нормализация, есть в уроке про реляционную модель данных:

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

Т.е. нормализация нужна, чтобы сократить дублирование информации и избежать ошибок, которые связаны с дублированием (когда в одном месте поменяли, а в другом забыли).

В следующих уроках рассказывается уже, как этого добиться

0

Используйте Хекслет по максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
1 июня 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
1 июня 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
1 июня 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
1 июня 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
1 июня 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
1 июня 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
1 июня 5 месяцев