2016-05-01 2 views
0

Я пытаюсь сделать свою базу данных в 3NF, я смущен одной вещью. В приведенном ниже объяснении я не понимаю, как Zip может быть первичным ключом таблицы адресов, если zip может произойти более одного раза. В таблице Student_Detail повторная запись zip прекрасна, но в качестве первичного ключа он не потеряет свое единство?Третья нормальная ограниченность формы

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

Третья нормальная форма применяется, что каждый не-простой атрибут таблицы должны зависеть от первичного ключа, или мы можем сказать, что не должно быть так, что не-премьер атрибут определяется другим атрибутом non-prime. Поэтому эту переходную функциональную зависимость следует удалить из таблицы, а также таблицу, которая должна быть во второй нормальной форме. Например, рассмотрим таблицу со следующими полями.

Student_Detail Таблица:

student_id - Student_name - DOB - Улица - Город - государство - Zip

В этой таблице student_id является первичный ключ, но улица, город и состояние зависит от Zip. Зависимость между zip и другими полями называется транзитивной зависимостью. Следовательно, чтобы применить 3NF, нам нужно переместить улицу, город и штат в новый стол, а Zip - в качестве первичного ключа.

Новый Student_Detail Таблица:

student_id - Student_name - DOB - Zip

Address Table:

Zip - Улица - город - государство

Преимущество удаления transtive зависимость есть,

Объем дублирования данных уменьшается. Достигнута целостность данных.

Пример: http://www.studytonight.com/dbms/database-normalization.php

+0

Они только предполагают, что данный почтовый индекс имеет один город, улицу и штат. Что на самом деле не верно в отношении почтовых индексов. Но даже при этом предположении «зависимость между zip и другими полями называется транзитивной зависимостью» плохо сформулирована, и поэтому их характеристика 3NF на ней. Это плохой ресурс.Найдите учебник/презентацию/курс колледжа/университета. Многие из них в сети. – philipxy

ответ

1

Я предполагаю, что это ваш вопрос

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

и причина, по которой вы не понимаете, просто потому, что Zip - плохой пример.

Все пояснения верны. Если вы можете вывести любую базу атрибутов «non-prime» на другой атрибут «non-prime», вы получите так называемую «транзитивную зависимость». Вы вытаскиваете их на другой стол, а на своем месте вы вставляете ссылку FK.

Почтовый индекс не будет отображаться более одного раза, поскольку этот атрибут является PK. Я считаю, что это просто плохой пример, хотя объяснение правильное. Попробуйте проанализировать его с помощью разных предметов.

Проверьте, подходит ли вам this.

+0

О, хорошо. Поэтому правильным способом сделать это в приведенном выше примере было бы создание внешнего ключа Address_ID в таблице Student_Detail, а затем и первичный ключ address_id в zip-таблице и продолжения оттуда. Благодарю. Пример, который вы мне прислали, очень помог. – Christopher

+0

Вот и вся идея! Рад, что смог помочь. –

+0

@Christopher & PedroGabriel Нормализация не предполагает введения новых имен столбцов, просто повторное использование одинаковых имен столбцов в разных таблицах. – philipxy

Смежные вопросы