Оглавление:
- Определение - Что означает третья нормальная форма (3NF)?
- Техопедия объясняет третью нормальную форму (3NF)
Определение - Что означает третья нормальная форма (3NF)?
Третья нормальная форма (3NF) - это третий шаг в нормализации базы данных, основанный на первой и второй нормальных формах, 1NF и 2NF.
3NF утверждает, что все ссылки на столбцы в ссылочных данных, которые не зависят от первичного ключа, должны быть удалены. Другой способ это сделать - использовать для ссылки на другую таблицу только столбцы внешнего ключа, и в указанной таблице не должно быть других столбцов из родительской таблицы.
Техопедия объясняет третью нормальную форму (3NF)
Рассмотрим базу данных банка, которая содержит две таблицы: CUSTOMER_MASTER для хранения сведений о клиенте и ACCOUNT_MASTER для хранения сведений о банковских счетах, включая сведения о том, какой клиент имеет какой счет. В этом случае должен быть способ связать две таблицы, чтобы привязать учетную запись к клиенту, которому она принадлежит. Способ сделать это через внешний ключ. Это столбец в таблице ACCOUNT_MASTER, который указывает или ссылается на соответствующий столбец (называемый первичным ключом) в родительской таблице CUSTOMER_MASTER. Давайте назовем этот столбец CustID.
Предположим, что клиент Эндрю Смит создает учетную запись в таблице CUSTOMER_MASTER с CustID 20454. Г-н Смит имеет сберегательный счет с номером S-200802-005, данные которого хранятся в таблице ACCOUNT_MASTER. Это означает, что таблица ACCOUNT_MASTER будет иметь столбец с именем CustID, который не является исходной частью данных. Вместо этого он также имеет значение 20454, которое просто ссылается на тот же CustID в таблице CUSTOMER_MASTER.
Теперь 3NF диктует, что в нашей таблице ACCOUNT_MASTER единственной информацией о клиенте, которую мы храним, должен быть CustID (20454) в качестве внешнего ключа, и он ссылается и идентифицирует клиента, которому принадлежит этот же CustID в таблице CUSTOMER_MASTER (Эндрю Смит) ). Никакие другие данные о нашем клиенте (такие как имя, дата рождения, пол и т. Д.) Не должны храниться в таблице ACCOUNT_MASTER или любой другой таблице, поскольку все эти данные о нем уже хранятся в CUSTOMER_MASTER. При этом единственными данными клиента, хранящимися вне таблицы CUSTOMER_MASTER, является CustID. Это приносит большие дивиденды, гарантируя отсутствие дублирования данных, что, в свою очередь, делает запросы более эффективными и уменьшает объем требуемого хранилища.