Таблица находится в третьей нормальной форме, когда выполнены следующие условия:
Зависимость не-главных полей между данными. Например, в следующей таблице – название улицы, города и государства неразрывно связаны с их почтовым индексом.
CREATE TABLE CUSTOMERS( CUST_ID INT NOT NULL, CUST_NAME VARCHAR (20) NOT NULL, DOB DATE, STREET VARCHAR(220), CITY VARCHAR(130), STATE VARCHAR(130), ZIP VARCHAR(13), EMAIL_ID VARCHAR(256), PRIMARY KEY (CUST_ID) );
Зависимость между почтовым индексом и адресом называются транзитивной зависимостью. В соответствии с третьей нормальной формой, все, что вам нужно сделать, это привести поля улицу, города и государства в их собственную таблицу, которую можно назвать как таблицу Zip Code.
CREATE TABLE ADDRESS( ZIP VARCHAR(13), STREET VARCHAR(220), CITY VARCHAR(130), STATE VARCHAR(130), PRIMARY KEY (ZIP) );
Следующий шаг будет изменить таблицу клиентов, как показано ниже:
CREATE TABLE CUSTOMERS( CUST_ID INT NOT NULL, CUST_NAME VARCHAR (20) NOT NULL, DOB DATE, ZIP VARCHAR(13), EMAIL_ID VARCHAR(256), PRIMARY KEY (CUST_ID) );
Преимущества удаления переходных зависимостей, в основном два.
Во-первых, количество дублирования данных уменьшается, и, следовательно, ваша база данных становится меньше.
Второе преимущество состоит в целостности данных. При изменении дублирующих данных, существует большой риск обновления только некоторые из данных, особенно если оно было распространено во многих разных местах в базе данных.
Например, если адрес и данные кода почтового индекса, которые хранились в трех или четырех таблиц, то любые изменения в почтовых индексах должны получать доступ к каждой записи в этих трех или четырех таблиц.