Ваш вопрос сводится к "следует ли мне использовать суррогатный ключ или естественный ключ в качестве моего первичного ключа?".
Существует 3 требования дляпервичный ключ.
уникальность - первичный ключ должен быть уникальным, даже несмотря на опечатки, географию или изменения данных.Имена определенно не уникальны.Телефонный номер является уникальным в пределах географии, но вам нужно будет ввести международный телефонный код, чтобы гарантировать уникальность.Ваша модель данных содержит код подтверждения, но не «статус» - поэтому пользователь, введя неправильный номер телефона, может создать дубликаты на номере телефона.Сочетание телефонного номера и кода подтверждения будет уникальным, но вы не захотите использовать его в качестве внешнего ключа, поскольку не знаете, какая запись была проверена.
Не нулевой - это зависит главным образом от вашей бизнес-логики, но если есть состояние, в котором вы еще не знаете номер телефона, но хотите связать запись с другими таблицами, это не подойдет.
Инвариант - вы можете думать, что номера телефонов не меняются, но это не так.В Лондоне, Великобритания, у нас было несколько изменений телефонных номеров за последние 30 лет.
Итак, ответ на ваш вопрос, вероятно, заключается в использовании суррогатного ключа.