Предположим, у меня есть две таблицы в базе данных, T10 и T11, имеющие 10 и 11 столбцов соответственно, где 10 столбцов в обоих случаях абсолютно одинаковы.
Какое (если есть) правило нормализации я нарушаю?
Предположим, у меня есть две таблицы в базе данных, T10 и T11, имеющие 10 и 11 столбцов соответственно, где 10 столбцов в обоих случаях абсолютно одинаковы.
Какое (если есть) правило нормализации я нарушаю?
Правка: мне сообщили, что теоретически нормальные формы здесь не нарушаются. Поскольку это был принятый ответ, я оставляю его здесь для справки, а также потому, что размышления о 3NF могут на практике помочь избежать подобных ситуаций в вопросе.
Вы нарушаете третью нормальную форму (3NF), потому что если в основном одни и те же данные хранятся в обе таблицы, то каждый атрибут каждой таблицы не зависит напрямую от ключа соответствующей таблицы.
Возможно, правило избегания избыточных данных? (т.е. одинаковые данные в двух таблицах)
если 10 из 11 столбцов одинаковы, почему это не может быть просто одна таблица, где 11-й столбец оставлен пустым (наряду с возможным 12-м столбцом для обозначения типа данных, т.е. какой таблицы это было бы) в оригинале)?
Это зависит от того, что в таблицах.
Если никакие записи не связаны друг с другом (например, если одна таблица представляет собой просто заархивированные записи, происходящие из первой таблицы, но удаленные из нее), вы не нарушаете никаких правил.
Но если это одни и те же записи в каждой таблице, у вас проблема с зависимостью — одиннадцатый столбец зависит только от значения ключа из записи, а не от дополнительных столбцов. Предполагая, что все десять столбцов не участвуют в первичном ключе, вы нарушили 3-ю НФ.
Наличие двух идентичных или почти идентичных отношений само по себе не является нарушением какой-либо из обычных Нормальных форм. Оутис очень подробно объяснил, почему. Это вполне может быть нарушением принцип ортогонального проектирования является еще одним аспектом теории проектирования реляционных баз данных.
Если все 10 столбцов являются частью вашего ключа, то вторая нормальная форма: устранение избыточных данных. В частности, это подпадает под дилемму «Несуррогатные и суррогатные первичные ключи» — честно говоря, я не припомню, чтобы какой-либо из этих двух вариантов «нарушал» 2NF, но суррогатный ключ определенно ближе к духу 2NF.
Только первичные ключи могут быть избыточными между таблицами. Наличие любого количества столбцов, не являющихся первичными ключами, в нескольких таблицах нарушает третью нормальную форму.