Я прочитал определение и вроде понял - после соединения без потерь вы не должны терять никакой информации. Но почему этот конкретный пример подходит для третьего решения декомпозиции? Этот пример взят из книги «Основы систем баз данных» Эльмасри и Навате.
У нас есть таблица TEACH со столбцами «Студент», «Учитель» и «Курс». Он находится в 3-й нормальной форме, и мы пытаемся превратить его в BCNF (нормальная форма Бойса-Кодда).
УЧИТЬ (СТУДЕНТ, КУРС, ПРЕПОДАВАТЕЛЬ)
STUDENT COURSE INSTRUCTOR
Nathan Database Mark
Smith Database Navathe
Smith Op Sys Ammar
Smith Theory Schulman
Wallace Database Mark
Wallace Op Sys Ahamad
Wong Database Omienscki
Zelaya Database Navathe
В тексте говорится, что есть три возможных разложения отношения TEACH
1) {Student, Instructor} and {Student, Course}
2) {Course, Instructor} and {Course, Student}
3) {Instructor, Course} and {Instructor, Student}
Согласно тексту, есть только две FUnctional зависимости
1) {студент, курс} -> инструктор
2) инструктор -> курс
Согласно тексту, допустимо только решение 3, поскольку оно не будет генерировать ложные кортежи и, следовательно, обладает неаддитивным свойством.
Ложные кортежи возникают из-за объединения не первичных атрибутов или не внешних ключей. Разве студент не является основным атрибутом? Так почему же решение 1 не работает?
Мое понимание того, почему это решение 3, заключается в том, что мы не можем получить такую информацию, как «У меня есть инструктор, какой курс преподает инструктор?» из решений 1 и 2. Это будет связано с функциональной зависимостью в исходной таблице, что инструктор -> курс.