В соответствии с третьей нормальной формой нам нужно избегать зависимостей ни от одного ключевого атрибута.
Итак, если у меня есть база данных пользователей
User(username varchar, full_name varchar, country varchar, SSN varchar, UID varchar)
И для каждого пользователя у меня есть его имя пользователя, полное имя, страна и номер социального страхования (уникальный) и еще один номер, уникальный для каждого пользователя. Я хочу использовать имя пользователя в качестве ПЕРВИЧНОГО КЛЮЧА, однако, если вы знаете номер социального страхования человека, вы также можете получить всю информацию об этом пользователе, поскольку он также «УНИКАЛЬНЫЙ».
Не нарушает ли это третью нормальную форму? Я мог бы разделить его на две или более таблиц, например, удалить SSN из User
и поместить его в другую таблицу.
SSN(ssn varchar, username varchar)
Однако теперь у меня та же проблема в этой таблице, поскольку два ключа могут использоваться как «ПЕРВИЧНЫЙ КЛЮЧ».
Это нормально? или это нарушает третью форму, и если это так, есть ли какой-нибудь умный способ решить это?