문제
나는 데이터베이스 테이블을 디자인하고 있는데 다시 한 번 나 자신에게 똑같은 어리석은 질문을 던지고 있습니다. 이름 필드는 얼마나 길어야 합니까?
가장 일반적인 필드에 대한 합리적인 길이 목록을 가진 사람이 있습니까?, 이름, 성, 이메일 주소 등?
해결책
W3C의 권장사항:
다양한 배경을 가진 사람들의 이름을 수락 할 양식 또는 데이터베이스를 설계하는 경우 주어진 이름과 가족 이름에 대해 별도의 필드가 있어야하는지 스스로에게 물어보십시오.
… 일부 문화의 이름은 자신보다 훨씬 길 수 있습니다.… 데이터베이스에서 이름의 필드 크기 제한을 피하십시오..특히 UTF-8의 4 자 문자 이름이 4 바이트에 적합하다고 가정하지 마십시오. 실제로 12가 필요할 수 있습니다.
https://www.w3.org/International/questions/qa-personal-names
데이터베이스 필드의 경우 VARCHAR(255)
다른 것을 사용해야 할 타당한 이유가 실제로 떠오르지 않는 한 안전한 기본 선택입니다.일반적인 웹 애플리케이션의 경우 성능은 문제가 되지 않습니다.너무 일찍 최적화하지 마세요.
다른 팁
방금 미국에 있는 수백만 명의 고객이 있는 데이터베이스에 쿼리를 했습니다.
최대 이름 길이는 46이었습니다.저는 50으로 갑니다.(물론 그 중 500명만이 25세 이상이었고, 모두 데이터 가져오기로 인해 해당 분야에서 추가 정크가 발생하는 경우였습니다.)
성 이름과 비슷했다.
이메일 주소 62 자에서 최대화되었습니다.더 긴 것의 대부분은 실제로 세미콜론으로 분리 된 이메일 주소 목록이었습니다.
거리 주소 95 자에서 최대.긴 것들이 모두 유효했습니다.
맥스 도시 길이는 35였습니다.
이는 미국 사람들에게 적절한 통계적 확산이어야 합니다.현지화를 고려해야 한다면 수치가 크게 달라질 수 있습니다.
영국 정부 데이터 표준 카탈로그 이런 종류의 것에 대한 영국 표준을 자세히 설명합니다.이름과 성을 각각 35자, 전체 이름을 포함하는 단일 필드에 70자, 이메일 주소에 255자를 제안합니다.무엇보다도..
일부는 아마도 올바른 열 길이일 것입니다.
Min Max
Hostname 1 255
Domain Name 4 253
Email Address 7 254
Email Address [1] 3 254
Telephone Number 10 15
Telephone Number [2] 3 26
HTTP(S) URL w domain name 11 2083
URL [3] 6 2083
Postal Code [4] 2 11
IP Address (incl ipv6) 7 45
Longitude numeric 9,6
Latitude numeric 8,6
Money[5] numeric 19,4
[1] Allow local domains or TLD-only domains
[2] Allow short numbers like 911 and extensions like 16045551212x12345
[3] Allow local domains, tv:// scheme
[4] http://en.wikipedia.org/wiki/List_of_postal_codes. Use max 12 if storing dash or space
[5] http://stackoverflow.com/questions/224462/storing-money-in-a-decimal-column-what-precision-and-scale
개인 이름에 대한 긴 호언장담
개인 이름은 Polynym(다중 이름을 가진 이름)이거나 정렬 가능 구성 요소), Mononym(구성 요소가 하나만 있는 이름) 또는 Pictonym(그림으로 표시되는 이름 - Prince와 같은 사람들 때문에 존재함)이 있습니다.
사람은 LEGAL, MARITAL, MAIDEN, PREFERRED, SOBRIQUET, PSEUDONYM 등과 같은 역할을 수행하는 여러 이름을 가질 수 있습니다."한 사람이 한 번에 하나의 법적 이름만 가질 수 있지만 동시에 여러 개의 가명을 가질 수 있습니다"와 같은 비즈니스 규칙이 있을 수 있습니다.
몇 가지 예:
names: [
{
type:"POLYNYM",
role:"LEGAL",
given:"George",
middle:"Herman",
moniker:"Babe",
surname:"Ruth",
generation:"JUNIOR"
},
{
type:"MONONYM",
role:"SOBRIQUET",
mononym:"The Bambino" /* mononyms can be more than one word, but only one component */
},
{
type:"MONONYM",
role:"SOBRIQUET",
mononym:"The Sultan of Swat"
}
]
또는
names: [
{
type:"POLYNYM",
role:"PREFERRED",
given:"Malcolm",
surname:"X"
},
{
type:"POLYNYM",
role:"BIRTH",
given:"Malcolm",
surname:"Little"
},
{
type:"POLYNYM",
role:"LEGAL",
given:"Malik",
surname:"El-Shabazz"
}
]
또는
names:[
{
type:"POLYNYM",
role:"LEGAL",
given:"Prince",
middle:"Rogers",
surname:"Nelson"
},
{
type:"MONONYM",
role:"SOBRIQUET",
mononym:"Prince"
},
{
type:"PICTONYM",
role:"LEGAL",
url:"http://upload.wikimedia.org/wikipedia/en/thumb/a/af/Prince_logo.svg/130px-Prince_logo.svg.png"
}
]
또는
names:[
{
type:"POLYNYM",
role:"LEGAL",
given:"Juan Pablo",
surname:"Fernández de Calderón",
secondarySurname:"García-Iglesias" /* hispanic people often have two surnames. it can be impolite to use the wrong one. Portuguese and Spaniards differ as to which surname is important */
}
]
이름, 중간 이름, 성은 다음과 같은 여러 단어로 구성될 수 있습니다. "Billy Bob" Thornton
, 또는 Ralph "Vaughn Williams"
.
나는 높은 편에서 실수를 하고 싶다.아마도 varchar를 사용하게 될 것이므로 허용하는 추가 공간은 누군가가 필요로 하지 않는 한 실제로 추가 공간을 사용하지 않습니다.이름(이름 또는 성)은 최소 50자 이상, 이메일 주소는 최소 128자 이상으로 설정하세요.정말 긴 이메일 주소가 있습니다.
내가 좋아하는 또 다른 일은 다음과 같은 곳으로 가는 것입니다. Lipsum.com 텍스트를 생성하도록 요청하세요.이렇게 하면 100바이트가 어떻게 생겼는지에 대한 좋은 아이디어를 얻을 수 있습니다.
다른 숫자가 고객에게 특별한 의미를 갖는 고객 대면 인터페이스와 같이 사용하지 않을 타당한 이유가 없는 한 나는 거의 항상 2의 거듭제곱을 사용합니다.
2의 거듭제곱을 고수하면 제한된 공통 크기 집합 내에서 유지되며, 이는 그 자체로 좋은 것이며, 접할 수 있는 알려지지 않은 물체의 크기를 더 쉽게 추측할 수 있게 해줍니다.나는 꽤 많은 사람들이 이 일을 하고 있는 것을 보았고, 거기에는 미학적으로 기분 좋은 일이 있었습니다.이것을 볼 때 일반적으로 좋은 느낌을 줍니다. 디자이너가 엔지니어나 수학자처럼 생각하고 있다는 뜻입니다.소수만 사용된다면 아마도 걱정이 될 것입니다.:)
나는 동일한 것을 찾고 싶었고 허용된 답변에 언급된 영국 정부 데이터 표준이 이상적으로 들렸습니다.그러나 이들 중 어느 것도 더 이상 존재하지 않는 것 같았습니다. 확장된 검색 끝에 다음 아카이브에서 찾았습니다. http://webarchive.nationalarchives.gov.uk/+/http://www.cabinetoffice.gov.uk/govtalk/schemasstandards/e-gif/datastandards.aspx.zip을 다운로드하고 압축을 푼 다음 html 폴더에서 default.htm을 열어야 합니다.
이름 :35 마지막 이름 :35 이메일 :255 URL :서버 및 브라우저 시티에 따르면 60+ :45 주소 :90
내 이메일 아카이브를 살펴보면 꽤 긴 "이름" 이름이 많이 있습니다(물론 첫 번째가 의미하는 바는 문화에 따라 다릅니다).한 가지 예는 Krishnamurthy로, 길이는 13자입니다.이를 기반으로 하면 20~25글자가 적당하다고 추측할 수 있습니다.이메일은 다음과 같아야 합니다. 많이 firstname.lastname@somedomain.com이 있을 수 있으므로 더 오래 걸립니다.또한 gmail 및 기타 메일 프로그램을 사용하면 firstname.lastname+sometag@somedomain.com을 사용할 수 있습니다. 여기서 "sometag"는 수신 이메일을 정렬하는 데 사용할 수 있도록 입력하려는 항목입니다.나는 태그를 고려하지 않고 전체 이메일 주소를 입력할 수 없는 웹 양식을 자주 접합니다.따라서 고정된 이메일 필드가 필요한 경우 총 90자에 대해 25.25+15@20.3 문자가 될 수 있습니다(계산을 올바르게 했다면!).
이것은 누군가에게 유용할 수 있습니다.
youtube max channel length = 20
facebook max name length = 50
twitter max handle length = 15
email max length = 255
http://www.interoadvisory.com/2015/08/6-areas-inside-of-linkedin-with-character-limits/
나는 보통 다음과 같이 간다:
이름:30자
성:30자
이메일:50자
주소:200자
이름의 긴 필드가 걱정된다면 이름 필드에도 50을 사용하는 경우가 있습니다. 요즘에는 저장 공간이 거의 문제가 되지 않기 때문입니다.
현지화를 고려해야 하고(미국 외 지역의 경우!) 귀하의 환경에서 가능하다면 다음을 제안합니다.
이름의 각 구성 요소에 대한 데이터 유형을 정의합니다. 참고:일부 문화권에는 이름이 두 개 이상 있습니다!그런 다음 전체 이름에 대한 유형을 지정하고
그러면 현지화가 간단해집니다(이름에 관한 한).
주소에도 동일하게 적용됩니다. BTW - 다른 형식입니다!
varchar 맞죠?따라서 50을 사용하든 25를 사용하든 상관 없습니다. 안전하고 50을 사용하는 것이 좋습니다. 즉, 제가 본 것 중 가장 긴 것은 약 19 정도라고 생각합니다.성(姓)이 더 길다