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

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

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

1. В таблице нет дублированных строк.

2. Каждая ячейка содержит одно значение (т.е. нет никаких повторяющихся групп или массивов).

3. Элементы в столбце (атрибуте, поле) относятся к одному и тому же виду.

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

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

В нашем примере перенос отвечающего за навыки атрибута в отдельную таблицу поможет очень сильно. Отделение повторяющихся групп навыков от данных сотрудника приведет к получению двух таблиц в первой нормальной форме. Номер сотрудника (Employee Number) в таблице навыков (Skills) будет совпадать с первичным ключом в таблице сотрудников (Employees), а также обеспечивать внешний ключ для связывания двух таблиц с помощью операции соединения (как показано в табл. 1 и 2).


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

Номер сотрудника (Employee Number)

Имя сотрудника (Employee Name)

Номер отдела (Department Number)

Название отдела (Department Name)

Расположение отдела (Department Location)


 


Таблица 2. Таблица навыков в первой нормальной форме

Номер сотрудника (Employee Number)

Идентификационный номер навыка (Skill ID)

Наименование навыка (Skill Name)

Уровень владения навыком (Skill Level)


Теперь, чтобы получить ответ на вопрос о том, обладает ли сотрудник Джон Томас (John Thomas) навыками по ведению бухгалтерии, достаточно будет просто выполнить проверку на предмет того, присутствует ли номер сотрудника Джона Томаса и идентификационный номер навыка по ведению бухгалтерии в таблице навыков. Обратите внимание на то, что первичный ключ в таблице навыков представляет собой многозначный или, другими словами, составной (composite) ключ, состоящий как из номера сотрудника (Employee Number), так и из идентификатора навыка (Skill ID).

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

Вас заинтересует / Intresting for you:

Oracle и Java: использование P...
Oracle и Java: использование P... 5771 просмотров sepia Tue, 08 May 2018, 08:52:34
Oracle IDE: JDeveloper, SQL De...
Oracle IDE: JDeveloper, SQL De... 4541 просмотров Ольга Потемкина Tue, 21 Nov 2017, 13:18:46
Деятельность Oracle в XML-инду...
Деятельность Oracle в XML-инду... 7957 просмотров Дэн Tue, 21 Nov 2017, 13:33:37
Язык PL/SQL Oracle для програм...
Язык PL/SQL Oracle для програм... 2636 просмотров Илья Дергунов Tue, 21 Nov 2017, 13:28:01
Печать
Войдите чтобы комментировать