На логическом уровне электронная почта является естественным ключом. На физическом уровне, если вы используете реляционную базу данных, естественный ключ не подходит как первичный ключ. Причина в основном в проблемах производительности, упомянутых другими.
По этой причине дизайн может быть адаптирован. Естественный ключ становится альтернативным ключом (UNIQUE, NOT NULL), и вы используете суррогатный / искусственный / технический ключ в качестве первичного ключа, который может быть автоматическим приращением в вашем случае.
systemmpuntoout спросил,
Что если кто-то захочет изменить свой адрес электронной почты? Собираетесь ли вы также изменить все внешние ключи?
Вот что каскадно .
Еще одна причина использования числового суррогатного ключа в качестве первичного ключа связана с тем, как работает индексация на вашей платформе. Например, в MySQL InnoDB все индексы в таблице имеют первичный ключ, предварительно привязанный к ним, так что вы хотите, чтобы PK был как можно меньшим (для скорости и размера). Также с этим связано, что InnoDB быстрее, когда первичный ключ хранится в последовательности, и строка там не поможет.
Еще одна вещь, которую следует учитывать при использовании строки в качестве альтернативного ключа, заключается в том, что использование хэша фактической строки, которую вы хотите, может быть быстрее, пропуская такие вещи, как прописные и строчные буквы некоторых букв. (Я действительно приземлился здесь, ища ссылку, чтобы подтвердить то, что я только что сказал; все еще ищу ...)