-1

У меняТретья нормальная форма спутать

R (ABCDE), который АВ первичным ключом и F = {f1: AB-> CDE; f2: BD-> E}

Я смущен, потому что в моем учебнике сказано, что он достиг третьей нормальной формы, но когда я проверил его онлайн-инструментом, он сказал, что отношение достигло 2-й формы из-за нарушения f2.

Что это?

+0

Я понимаю реляционные базы данных (на практике), и я понимаю нормальные формы (в некоторой степени), но я не понимаю, как вы представили свой вопрос. Не могли бы вы быть более ясными? Что означает «R (ABCDE)»? «Таблица R» с колонками ABCDE? Что означает 'F = {f1: AB-> CDE; f2: BD-> E} 'означает? («Таблица» F с двумя полями ... это ... нет, я сдаюсь. Я даже не могу догадаться.) Далее, какой «онлайн-инструмент» вы использовали для проверки? – Phrogz

+2

@Phrogz: довольно распространено использование вариации на тему «R (ABCDE)» для обозначения отношения R с атрибутами A..E, а F довольно четко представляет собой набор отмеченных функциональных зависимостей. Зависимость 'f1' повторяет, что' AB' является первичным ключом. Зависимость 'f2' вызывает всевозможные проблемы. –

+0

@JonathanLeffler Спасибо. Является ли 'f2' заявлением, что значение' E' зависит как от 'B', так и от D? (И не наоборот?) – Phrogz

ответ

1

Определение CODD 3NF включает в себя условие, что каждый атрибут non-prime таблицы не является транзитивно зависимым от с каждым ключом.

Другими словами, поскольку E зависит как от (AB), так и от BD, но C зависит только от (AB), это нарушение 3NF.

Онлайн-инструмент является правильным.

Чтобы сделать это 3NF, вам необходимо разбить на два отношения: ABCD и BDE. Однако это создает проблемы, связанные с обеспечением ссылочной целостности.

+1

Ваше оправдание не имеет смысла. «поскольку E зависит как от (AB), так и от (BD), но C зависит только от (AB)« не имеет четкой связи с »включает в себя условие, что каждый непервойственный атрибут таблицы не является транзитивно зависимым от каждого ключа ». Ожидая, что читатель осознает, что AB является единственным CK и что E не является простым, не так уж плохо, но вы ничего не говорите о транзитивной зависимости E от AB, а C не имеет значения. И вы делаете курсивом * каждый *, как если бы отношение имело более одного CK, но это не так. – philipxy