Вопрос №55443 от пользователя Daniyar Zhanakhmetov в уроке «Вторая нормальная форма», курс «Основы реляционных баз данных»
Мне кажется нужно где-то прописать, зачем именно нужны эти формы. Да, есть какие-то 3 нормальные формы, и если так делать, то это хорошо. Но зачем? Зачем выделять таблицы, указывать внешний и первичный ключ и т.д. Ниже было 2 наглядных хороших примера. Думаю их можно как-то включить в теорию:
Например, открывая заказ на сайте нужно показать перечень товаров в заказе и их краткие характеристики. При такой задаче нам необходимо будет в таблицу заказов добавлять также поле с характеристиками, иначе откуда мы их возьмём. Также может потребоваться, например ещё выводить картинку товара. То есть тогда нужно будет ещё поле добавить и его заполнять. И так далее. В итоге таблицу нужно будет постоянно расширять и все записи будут дублироваться. А при использовании внешнего ключа, мы можем эту информацию добавить к нужному товару один раз и потом выводить в конкретном заказе.
Не совсем так. Этот момент хорошо прослеживается на примере имени пользователя. Допустим, есть таблица заказов, в которой есть колонка e-mail клиента (другие данные допустим не нужны). С одной стороны можно туда вбивать напрямую e-mail. Но что если клиент изменит свой e-mail. В таком случае нужно будет делать выборку всех заказов клиента и обновлять в них e-mail на новый. А если e-mail клиентов вынесем в отдельную таблицу и каждому присвоим уникальный id, а в таблице заказов будем использовать id вместо e-mail. Тогда мы спокойно сможем изменить e-mail только один раз в таблице e-mail и не нужно дополнительно проверять и обновлять все заказы.
Именно после этого комента, я понял, что это необходимо для удобства манипуляциями данных. Необходимо построить БД так, чтобы кол-во манипуляций при ее изменении было минимальным.
Информация, о том, для чего нужна нормализация, есть в уроке про реляционную модель данных:
Нормальная форма — это некоторые требования, которым должно удовлетворять отношение для минимизации избыточности данных, потенциально приводящих к логическим ошибкам.
Т.е. нормализация нужна, чтобы сократить дублирование информации и избежать ошибок, которые связаны с дублированием (когда в одном месте поменяли, а в другом забыли).
В следующих уроках рассказывается уже, как этого добиться
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.







