Приведение таблицы к 1нф пример: Базы данных. Первая нормальная форма (1НФ). Приведение таблицы к первой нормальной форме. Примеры

Первая нормальная форма (1NF) базы данных – подробное описание и примеры | Info-Comp.ru

Приветствую Вас на сайте Info-Comp.ru! Сегодня мы с Вами поговорим о первой нормальной форме базы данных, в частности Вы узнаете, какие требования предъявляются к таблицам, чтобы база данных находилась в первой нормальной форме, и для наглядности мы, конечно же, рассмотрим пример.

Перед тем как переходить к процессу приведения таблиц базы данных к первой нормальной форме, необходимо чтобы эти таблицы соблюдали базовые принципы реляционной теории, подробнее об этом мы говорили в материале, который посвящен нулевой нормальной форме (UNF) или, как ее еще называют, – ненормализованной форме.

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

Требования первой нормальной формы (1NF)

Требование первой нормальной формы (1NF) очень простое и оно заключается в том, чтобы таблицы соответствовали реляционной модели данных и соблюдали определённые реляционные принципы.

Таким образом, чтобы база данных находилась в 1 нормальной форме, необходимо чтобы ее таблицы соблюдали следующие реляционные принципы:

  • В таблице не должно быть дублирующих строк
  • В каждой ячейке таблицы хранится атомарное значение (одно не составное значение)
  • В столбце хранятся данные одного типа
  • Отсутствуют массивы и списки в любом виде

Заметка! Если Вас интересует язык SQL, то рекомендую почитать книгу «SQL код» это самоучитель по языку SQL для начинающих программистов. В ней очень подробно рассмотрены основные конструкции языка.

Пример приведения таблицы к первой нормальной форме

Следующая таблица не находится даже в первой нормальной форме, так как у нас есть дублирующие строки (John Smith), а в некоторых ячейках хранятся списки значений (каждый номер телефона — это одно значение).

Таблица сотрудников в ненормализованном виде.

Сотрудник Контакт
Иванов И. И. 123-456-789, 987-654-321
Сергеев С.С. Рабочий телефон 555-666-777, Домашний телефон 777-888-999
John Smith 123-456-789
John Smith 123-456-789

Чтобы привести эту таблицу к первой нормальной форме, необходимо удалить дублирующие строки, в ячейках хранить один номер телефона, а не список, а тип телефона (домашний или рабочий) вынести в отдельный столбец, так как столбцы хранят структурную информацию.


Таблица сотрудников в первой нормальной форме.

Сотрудник Телефон Тип телефона
Иванов И.И. 123-456-789
Иванов И.И. 987-654-321
Сергеев С.С. 555-666-777 Рабочий телефон
Сергеев С.С. 777-888-999 Домашний телефон
John Smith 123-456-789

Таким образом, главное правило первой нормальной формы звучит следующим образом

Строки, столбцы и ячейки в таблицах необходимо использовать строго по назначению.

  • Назначение строк – хранить данные
  • Назначение столбцов – хранить структурную информацию
  • Назначение ячеек – хранить атомарное значение

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

Заметка! Как создать таблицу в PostgreSQL с помощью pgAdmin 4.

На основе всего вышеизложенного можно сделать следующий вывод.

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

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

Заметка! Вторая нормальная форма (2NF) базы данных.

На сегодня это все, надеюсь, материал был Вам полезен, пока!

Нормализация баз данных: первая нормальная форма

Итак, в предыдущем посте была вводная часть про нормализацию баз данных, ключи и отношения. В этом посте будет рассмотрена первая нормальная форма или 1НФ сокращено.

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

Чтобы привести таблицу к 1НФ, нужно соблюсти два правила:

  1. Атомарность или неделимость. Каждая колонка должна содержать одно неделимое значение.
  2. Таблица не должна содержать повторяющихся колонок или групп данных.

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

Начинать нормализацию следует с проверки структуры бд на совместимость с 1НФ. Все столбцы, которые не являются атомарными, должны быть разбиты на составляющие их столбцы. Если в таблице есть повторяющиеся столбцы, то им нужно выделить отдельную таблицу.

Чтобы привести таблицу к первой нормальной форме, следует:

  • Найти все поля, которые содержат многосоставные части информации. На рисунке выше, поле message date содержит день, месяц, год и время, которое можно разбить на составные части, но в данном примере такая детализация даты не нужна.  Mysql может работать и с таким форматом — благодаря типу DATETIME. В этом примере разбито имя пользователя на имя и фамилию. Еще примерами неудачных решений могут быть поля, в которых хранятся сразу все телефоны человека (мобильный, рабочий) или его интересы (готовка, танцы).
  • Те данные, которые можно разбить на составные части, нужно выносить в отдельные поля. На рисунке выше так разнесено полное имя на имя и фамилию.
  • Выносите повторяющиеся данные в отдельную таблицу. В примере с форумом такой проблемы нет, поэтому возьмем в качестве примера таблицу, содержащую информацию о фильмах. Там есть несколько полей actor, которые являются повторяемыми. Повторяемые поля тут несут две проблемы. Если хранить информацию об актерах таким образом, то их число будет лимитировано числом таблиц. Даже если их будет 100, то все равно это будет пределом для некоторых фильмов. И вторая проблема — будет большое количество пустых(NULL) ячеек для большинства остальных записей, чего также следует избегать. Решением этой проблемы станет создание отдельной таблицы для актеров, куда будет заносится информация обо всех необходимых фильмах. Имена актеров также разбиты, чтобы соблюсти атомарность. Также в этой таблице присутствует свой первичный ключ, что является необходимым условием для нормализации.
  • Дважды проверьте, все ли таблицы подходят под условия первой нормальной формы.

проблема избыточных полей

решение проблемы избыточных полей

Подсказки

  • Простейший путь приведения к 1НФ — это пройтись глазами по всем столбцам. Проверьте каждый ряд на отсутствие повторения схожих данных и делимости.
  • Разные источники трактуют процесс нормализации по своему, в основном более сухим, техническим языком. Более важен результат нормализации, а не повторение правил и умных слов.

Следующий пост будет посвящен второй нормальной форме — 2НФ.

На почитать

  • Мой вводный пост о нормализации
  • Вики о 1НФ Там же дано четкое определение атомарности.
  • Сайт Мурманского технического университета


3.50 avg. rating (70% score) – 36 votes

1NF, 2NF, 3NF и BCNF в нормализации базы данных

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

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

  • Удаление избыточных (бесполезных) данных.
  • Обеспечение обоснованности зависимостей данных, т. е. логического хранения данных.

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


Проблемы без нормализации

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

номер название филиал ход office_tel
409

kon Г-н Х 53337
402 Бкон КСЕ Мистер X 53337
403 Ckon CSE Мистер X 53337 9002

Дкон CSE Mr. X 53337

В приведенной выше таблице у нас есть данные 4 Computer Sci. студенты. Как мы видим, данные для полей филиал , hod (начальник отдела) и office_tel повторяются для студентов, которые находятся в одном филиале в колледже, это Data Redundancy .


Аномалия вставки

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

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

Эти сценарии не что иное, как Аномалии вставки .


Аномалия обновления

Что, если мистер Х покинет колледж? или больше не HOD факультета информатики? В этом случае все студенческие записи должны быть обновлены, и если по ошибке мы пропустим какую-либо запись, это приведет к несогласованности данных. Это аномалия обновления.


Аномалия удаления

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


Правило нормализации

Правила нормализации делятся на следующие нормальные формы:

  1. Первая нормальная форма
  2. Вторая нормальная форма
  3. Третья нормальная форма
  4. BCNF
  5. Четвертая нормальная форма

Первая нормальная форма (1NF)

Чтобы таблица находилась в первой нормальной форме, она должна соответствовать следующим 4 правилам:

  1. имеют одиночные (атомарные) атрибуты/столбцы.
  2. Значения, хранящиеся в столбце, должны относиться к одному и тому же домену.
  3. Все столбцы в таблице должны иметь уникальные имена.
  4. И порядок, в котором хранятся данные, значения не имеет.

В следующем уроке мы подробно обсудим первую нормальную форму .


Вторая нормальная форма (2NF)

Чтобы таблица находилась во второй нормальной форме,

  1. она должна быть в первой нормальной форме.
  2. И он не должен иметь частичной зависимости.

Чтобы понять, что такое частичная зависимость и как нормализовать таблицу до второй нормальной формы, перейдите к учебнику по второй нормальной форме .


Третья нормальная форма (3NF)

Говорят, что таблица находится в третьей нормальной форме, когда

  1. она находится во второй нормальной форме.
  2. И у него нет транзитивной зависимости.

Вот учебник Третья нормальная форма . Но мы предлагаем вам сначала изучить вторую нормальную форму, а затем перейти к третьей нормальной форме.


Нормальная форма Бойса и Кодда (BCNF)

Нормальная форма Бойса и Кодда является более высокой версией третьей нормальной формы. Эта форма имеет дело с определенным типом аномалий, которые не обрабатываются 3NF. Говорят, что таблица 3NF, которая не имеет нескольких перекрывающихся ключей-кандидатов, находится в BCNF. Чтобы таблица находилась в BCNF, должны быть выполнены следующие условия:

  • R должен быть в 3-й нормальной форме
  • и для каждой функциональной зависимости ( X → Y ), X должен быть суперключом.

Чтобы подробно узнать о BCNF на очень простом для понимания примере, перейдите к учебному пособию Нормальная форма Бойе-Кодда .


Четвертая нормальная форма (4NF)

Говорят, что таблица находится в четвертой нормальной форме, когда

  1. Она находится в нормальной форме Бойса-Кодда.
  2. И у него нет многозначной зависимости.

Вот учебник Четвертая нормальная форма . Но мы предлагаем вам понять другие нормальные формы, прежде чем вы перейдете к четвертой нормальной форме.


  • ← Предыдущая
  • Следующая →

Хотите

научиться программировать и не знаете с чего начать?

Попробуйте наши интерактивные курсы бесплатно 🥳 😯 🤩

Исследовать →

Первая нормальная форма (1NF) нормализации базы данных

В этом уроке мы узнаем о первой (первой) нормальной форме, которая больше похожа на Шаг 1 процесса нормализации. Первая нормальная форма предполагает, что вы спроектируете таблицу таким образом, чтобы ее можно было легко расширить и чтобы вам было легче извлекать из нее данные, когда это необходимо.

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

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


Правила для первой нормальной формы

Первая нормальная форма требует от вас соблюдения нескольких простых правил при проектировании базы данных, а именно:

Правило 1: Атрибуты с одним значением

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


Правило 2: Атрибут Домен не должен изменяться

Это скорее правило “здравого смысла”. В каждом столбце хранящиеся значения должны быть одного вида или типа.

Например: Если у вас столбец доб , чтобы сохранить дату рождения набора людей, то вы не можете или не должны сохранять «имена» некоторых из них в этом столбце вместе с «датой рождения» других в этом столбце. Он должен содержать только «дату рождения» для всех записей/строк.


Правило 3: Уникальное имя для атрибутов/столбцов

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

Если один или несколько столбцов имеют одинаковое имя, система СУБД останется в замешательстве.


Правило 4: Порядок не имеет значения

Это правило гласит, что порядок, в котором вы храните данные в таблице, не имеет значения.


Время для примера

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

Вот наша таблица с добавленными в нее примерами данных.

3

roll_no наименование тема
101 акон ОС,

Ckon Java
102 Bkon C, C++

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