[database] 데이터베이스에서 이메일 주소의 최적 길이는 얼마입니까?
다음은 EMAIL_ADDRESS
열 데이터 유형 및 속성을 반영하여 내 쿼리의 추출 된 부분입니다 .
EMAIL_ADDRESS CHARACTER VARYING(20) NOT NULL,
그러나 John Saunders 는 VARYING(256)
.
이것은 내가 반드시 VARYING을 올바르게 이해하지 못했음을 시사합니다.
제 경우에는 이메일 주소의 길이가 20 자이고 Jodn은 256 자라는 것을 이해합니다.
John 코드의 컨텍스트
CREATE TABLE so."User"
(
USER_ID SERIAL NOT NULL,
USER_NAME CHARACTER VARYING(50) NOT NULL,
EMAIL_ADDRESS CHARACTER VARYING(256) NOT NULL, // Here
HASHED_PASSWORD so.HashedPassword NOT NULL,
OPEN_ID CHARACTER VARYING(512),
A_MODERATOR BOOLEAN,
LOGGED_IN BOOLEAN,
HAS_BEEN_SENT_A_MODERATOR_MESSAGE BOOLEAN,
CONSTRAINT User_PK PRIMARY KEY(USER_ID)
);
평범한 사람들이 사용하는 20 자 이상의 이메일 주소를 본 적이 없습니다.
데이터베이스에서 이메일 주소의 최적 길이는 얼마입니까?
답변
이메일 주소의 최대 길이는 254 자입니다.
모든 이메일 주소는 두 부분으로 구성됩니다. ‘@’기호 앞에 오는 로컬 부분과 그 뒤에 오는 도메인 부분. “user@example.com”에서 로컬 부분은 “user”이고 도메인 부분은 “example.com”입니다.
로컬 부분은 64자를 초과 할 수 없으며 도메인 부분은 255자를 초과 할 수 없습니다.
이메일 주소의 로컬 + @ + 도메인 부분을 합한 길이는 254자를 초과 할 수 없습니다. RFC3696 에라타 ID 1690에 설명 된 대로 .
답변
에서 Metafilter 질문 :
내 데이터는 323 개 주소의 데이터베이스에서 가져옵니다. 분포에는 일부 상한 이상 치가 있습니다 (양수로 치우침). 이상 값없이 정규 분포를 따릅니다 (테스트했습니다.).
최소 : 12 1 사 분위 : 19 평균 (이상치 포함) : 23.04 평균 (이상치 제외) : 22.79 3 사 분위 : 26 최대 (이상치 포함) : 47 최대 (이상치 제외) : 35
중앙값 : 23 모드 : 24 표준 Dev (이상치 포함) : 5.20 Std. 편차 (이상 값 없음) : 4.70
특이 치를 포함한 데이터 기반 범위 데이터 68.2 % 데이터 17.8-28.2 95.4 % 데이터 12.6-33.4 99.7 % 데이터 7.4-38.6
데이터 이상 치를 기반으로 한 범위는 데이터의 68.2 % 제외 18.1-27.5 데이터의 95.4 % 13.4-32.2 데이터의 99.7 % 8.7-36.9
http://www.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com/에 가입하면 귀하의 이메일 주소는 확실히 이상 치가 될 것입니다. 🙂
다음 은 웹 사이트 양식에 허용되는 이메일 주소의 최대 안전 길이는 얼마입니까? 평균이 약간 다른 Raycon에서 (N = 50,496, 평균 = 23) :
답변
사용하십시오 varchar(50)
. 더 긴 이메일은 매번 쓰레기입니다.
50 자 길이를보세요.
@sm_sm_ss_ss_s_s_s_s___________________________________________
255 자 이메일을 허용하는 경우 :
- 그것들을 표시하면 UI가 엉망이 될 수 있습니다 (기껏해야 잘릴 수 있고 최악의 경우 컨테이너와 여백이 밀려납니다).
- 악의적 인 사용자가 예상 할 수없는 작업을 수행 할 수 있습니다 (해커가 무료 온라인 API를 사용하여 많은 데이터를 저장 한 경우).
(통계에 따르면 아무도 실제로 합법적 인 이메일 주소로 약 50 자 이상을 입력하지 않습니다. 예 : pageman의 답변 https://stackoverflow.com/a/1199245/87861 참조 )
답변
답변
데이터베이스의 가변 문자 유형은 불필요한 공간을 차지하지 않습니다. 따라서 가능한 한 이러한 필드를 제한 할 이유가 없습니다. 사람의 이름, 조직에서 사용하는 명명 체계 및 도메인 이름에 따라 주소는 쉽게 20자를 초과 할 수 있습니다.
RFC-2822 에서 local-part 및 domain-name의 길이에는 제한이 없습니다 . RFC-2181 은 도메인 이름을 255 옥텟 / 문자로 제한합니다.
다시 말하지만, varchar 는 저장 한 문자열에서 실제로 사용하는 공간 만 사용하기 때문에 이메일 주소 길이에 대해 작은 제한을 둘 이유가 없습니다. 512로 이동하고 걱정하지 마십시오. 다른 모든 것은 조기 최적화입니다.
답변
처음에는 최대 320 자 (다른 답변에서 볼 수 있듯이 64 + 1 + 255)이지만 RFC 3696 Errata 1003에서 말한대로 :
그러나 RFC 2821에는 MAIL 및 RCPT 명령의 주소 길이 256 자에 대한 제한이 있습니다. 이러한 필드에 맞지 않는 주소는 일반적으로 유용하지 않으므로 주소 길이의 상한은 일반적으로 256으로 간주되어야합니다.
4.5.3.1.3. 통로
역방향 또는 순방향 경로의 최대 총 길이는 256 옥텟 (구두점 및 요소 구분 기호 포함)입니다.
여기에는 여는 괄호와 닫는 대괄호가 포함되어 있으므로 254 옥텟 의 이메일 주소 만 사용할 수 있습니다.
그러나 옥텟의 수는 문자의 수와 같지 않을 수 있음을 명심하십시오 (문자는 2 개 이상의 옥텟을 가질 수 있음). 또한 RFC 섹션 4.5.3.1 은 최대 값보다 더 많은 필드가있을 수 있으며 이것이 가능하지만 서버가 올바르게 포착하도록 보장하지 않는다고 말합니다.
그런 다음 a VARCHAR(254)
를 사용하여 이메일 주소를 저장할 수 있습니다 .
참고 : 최소한 MySQL에서 VARCHAR
255 옥텟보다 작거나 같은 whit으로 선언 된 열은 모두 1 byte + length
(1은 길이를 저장하는 것임 )로 저장되므로 하한을 사용하면 공간이 확보되지 않습니다.
답변
다른 사람들이 말했듯이, 20. 256 + 64보다 훨씬 큰 소리가 나에게 좋으며 RFC를 준수합니다.
데이터베이스에 대해 그렇게 큰 가치를 갖지 않는 유일한 이유는 성능이나 공간에 대해 걱정하는 경우이며, 그렇게한다면 조기 최적화 가 99.99999999999999 %라고 확신합니다. .
커져 라.