Есть несколько пунктов, которые определенно не являются 3NF;и некоторые сомнительные в дополнение:
- Может ли быть несколько адресов на пользователя?
- Является ли адрес необязательным или обязательным?
- Дублирует ли информация в городе, стране, регионе ту же информацию, что и в адресе?
- Может ли пользователь иметь несколько TelNos?
- Является ли TelNo необязательным или обязательным?
- Может ли пользователь иметь несколько MobNo?
- Является ли MobNo необязательным или обязательным?
- Может ли пользователь иметь несколько электронных писем?
- Является ли электронная почта необязательной или обязательной?
- Рассчитывается ли NoOfMembers из числа пользователей?
- Может ли быть более одного UserAttempts?
- Может быть большечем один BlockTime на пользователя?
Если ответ на любой из этих вопросов положительный, то это указывает на проблему с 3NF в этой области.Причиной 3NF является устранение дублирования данных;обеспечить, чтобы обновления, вставки и удаления оставляли данные в согласованной форме;и минимизировать хранение данных - в частности, нет необходимости хранить данные как «пока не известно / неизвестно / пусто».
В дополнение к вопросам, заданным здесь, существует также вопрос о том, что составляетпервичный ключ для вашей таблицы - я думаю, это как-то связано с пользователем, но имя и другая информация, которую вы предоставляете, вряд ли будут уникальными, поэтому их будет недостаточно для PK.(Если вы считаете, что имя плюс фамилия уникальны, вы предполагаете, что у вас никогда не будет более одного Джона Смита?)
РЕДАКТИРОВАТЬ: В свете дополнительной информации о том, что некоторые поля являются необязательными, я бы предложил вам отделитьВыделите необязательные поля в разные таблицы и установите 1-1 ссылки между новыми таблицами и пользовательской таблицей.Эта ссылка будет создана путем создания внешнего ключа в новой таблице, ссылающегося на первичный ключ пользовательской таблицы.Как вы говорите, ни одно из полей не может иметь несколько значений, тогда они вряд ли доставят вам проблемы в настоящее время.Однако если какое-либо из этих изменений изменится, то их отсутствие приведет к проблемам при обновлении приложения и данных для поддержки приложения.Вам все еще нужно решить проблему первичного ключа.