Это довольно сложный вопрос, потому что, на мой взгляд, есть разница между тем, что вы «должны» позволить и то, что считается допустимым по IETF.
Максимально допустимый адрес электронной почты - 256 символов, который включает в себя косую черту в начале и конце адреса электронной почты (поэтому всего 254 используемых символа). Вы можете найти подробную информацию об этом на this page by Dominic Sayers.
Но будет ли у любого законного пользователя действительно длинный адрес электронной почты?
Что касается адресов улиц, я не верю, что это указано где угодно, однако согласно the world's longest website самым длинным названием улицы является 72 символа. Поэтому, если вы сделали поле 100 символов, у вас будет более чем достаточно места для уличного адреса.
Вам не нужно слишком беспокоиться о том, чтобы все на 100% правильное, вы должны больше заботиться о качестве данных, которые вы решили принять в базу данных (убедитесь, что они действительны/чисты). Также предоставляйте четкие сообщения об отказе, если кто-то вводит что-то слишком простое - и убедитесь, что с владельцем веб-сайта есть простой способ связаться с ним, если это произойдет.
Одна вещь, которую я хотел бы отметить, NoSQL - это все ярость прямо сейчас, и она использует механизмы без базы данных, например MongoDB и CouchDB. Это не best solution for everything, однако, если вы очень обеспокоены тем, что у вас правильная схема, возможно, база данных без схемы может быть хорошим вариантом.
Интересно. Я никогда раньше не видел, чтобы два поля использовались для первичного ключа. Как вы используете «активный» таким образом? – Ethan
Это нормально для пользователя, чтобы инактивировать (я предпочитаю не удалять, чтобы сохранить FK на других таблицах). Но тогда я не хочу ограничивать этот user_id от кого-то другого. Таким образом, с этим user_id может быть только один активный пользователь. Лучшим примером является электронная почта как user_id, поскольку электронные письма могут повторяться, когда пользователь прекращает обслуживание с интернет-провайдером. – AutoSponge