일반인 필드에 대한 모범 사례 (이름, 이메일, 주소, 성별 등) [닫기]


44

다음과 같은 공통 필드에서 길이 및 데이터 유형에 대한 가장 일반적인 모범 사례는 무엇입니까?

  • 이름
  • 주소
  • 이메일
  • 섹스
  • 상태
  • 시티
  • 국가
  • 전화 번호

기타....


이 질문은 WAYYY입니다. 제거하고 삭제해야합니다.
Evan Carroll

답변:


50

이 분야의 대부분에서 악마는 세부 사항에 있기 때문에 나는 보편적 인 모범 사례를 매우 의심하는 경향이 있습니다. 정보가 비교적 일반적이기 때문에 응용 프로그램이 다른 응용 프로그램과 동일한 방식으로 데이터를 사용한다는 의미는 아닙니다. 이는 데이터 모델이 약간 다를 수 있음을 의미합니다.

  • 이름 및 성 : 왜 이름을 캡처하고 있습니까? 개인의 실명 (예 : 법적 문서 또는 출생 증명서를 준비 중)을 캡처해야하는 경우, 사람의 이름을 요구할 때보 다 사람들이 입력 할 수있는 공간을 더 많이 확보하려고 할 수 있습니다. 새 웹앱에서 호출 할 것이 있습니다.
  • 주소 : 주소로 무엇을 하시겠습니까? 어떤 종류의 주소를 저장하고 있습니까? 모기지를 만드는 미국의 부동산 주소를 저장하는 경우 완전히 표준화 된 주소를 얻는 데 매우 신경을 쓸 것입니다.이 경우 데이터 모델은 주소에 관계없이 잘 다듬을 수 있습니다. 표준화 도구가 반환됩니다. 사람들이 주소를 입력하여 제품을 전달할 수있게하려면 자유형 텍스트를위한 몇 줄이면 충분합니다. 행의 길이는 인쇄 주소 레이블과 같은 작업을 수행하는 다운 스트림 프로세스의 요구 사항에 따라 달라질 수 있습니다.
  • 상태 : 유효한 상태 값을 식별 할 수 있다고 가정하면 STATE테이블을 생성하고 STATEADDRESS테이블 간에 외래 키 관계를 만드는 것이 좋습니다. 그러나 유효한 값을 식별 할 수 있다는 것은 유효한 주소 집합을 적어도 특정 국가 집합으로 제한하고 있음을 의미합니다. 많은 사이트에는 문제가 없지만 새로운 국가를 지원하기 위해 약간의 노력을 기울여야합니다.
  • 도시 : 잠재적으로 도시 수준의 규정이있는 데이터 (예 : 도시에 따라 적용되는 여러 종류의 세율이있는 데이터)를 다루는 경우이를 주와 같이 취급하고 CITY유효한 도시 CITYADDRESS테이블 사이의 외래 키 관계가있는 테이블. 반면에, 당신이 제품을 배달하려고하는데 테이블에 같은 도시의 다양한 버전이 있는지에 대해 신경 쓰지 않는다면, 사용자가 자유 형식의 텍스트를 입력하는 것으로 충분합니다. 물론 외래 키를 저장하는 경우 유효한 값을 모두 확보하기 위해 상당한 양의 작업이 필요합니다. 그러나 요점은 회사가 이미 그 작업을 수행 한 제품 (예 : 판매 세 데이터베이스)이 있습니다.
  • 전화 : 전화 번호로 무엇을하고 있으며 왜 그런가요? 일부 응용 프로그램은 사용자가 전화 번호를 입력하기로 결정한 모든 형식의 전화 번호를 사용하여 모든 후속 쿼리에 대해 해당 형식을 유지하려고합니다. 사용자가 전화 번호를 저장하고 표시하는 방법에 대한 고유 한 환경 설정이있는 개인 주소록을 디자인하는 경우 일반적입니다. 다른 응용 프로그램에서는 입력 한 형식을 무시하고 숫자 만 추출한 다음 검색시 데이터의 형식을 지정하여 모든 전화 번호의 형식이 비슷합니다. 업체에 서비스를 제공하는 경우 사용자가 내선 번호를 입력하기위한 별도의 필드를 원할 수 있습니다. 발신 통화 프로세스를 지원하려는 경우 지역 코드와 국가 코드를 별도의 열에 저장하려고 할 수 있습니다.
  • 성별 : 많은 응용 프로그램의 경우 성별 코드 ( 'M'또는 'F')를 테이블에 저장하는 것이 합리적입니다. 반면에 추가 옵션 (기타, 인터 섹스, 트랜스젠더)을 원하거나 출생시의 성별 및 현재의 성별과 같은 것을 저장해야하는 경우가 있습니다.

생각해야 할 것들이 많은 흥미로운 대답-사람들이 더 나아갈 수 있도록 도움이되는 유용한 아이디어가 부족합니다. 전화로 누군가에게 연락 할 수있는 곳일 수도 있고 다른 국가에도 적용되어야 할 수도 있습니다. 당신이 숫자 국가 접두사없이 / 함께 할 수있다 생각하지만, defintely이 경우 그래서 그래, 몇 문자의 차이가있을 것입니다 세계에서 가장 긴 전화 번호와 같은 일이이를 사용하여 플러스 몇은 대부분 매우 안전합니다 사례
Henning

24

샘플 데이터와 예상 대상을 기반으로 추측 할 수도 있습니다 . 위치에 따라 다릅니다.

몇 가지 참고 사항 :

구애:

이름 :

전화 번호 : 국제 코드, 길이, 휴대 전화 대 집, 휴대 전화 만 숫자로 허용


3
마지막 두 개의 링크 ( "성"및 "가장 긴 것은 ...")가 끊어집니다.
Marc L.

1
@MarcL. "성적 이름"링크를 수정했습니다 (수정 된 내용이 수락 된 경우). "가장 긴 것은 무엇입니까?"
도끼.


10

위의 위대한 답변 외에도 유니 코드 문자를 허용하는 것을 잊지 마십시오. 미국에 있다고해서 열에 외국 문자를 허용하고 싶지 않다는 의미는 아닙니다.

즉, 나는 보통 이름으로 50자를 권장합니다. 320은 이메일 주소보다 충분해야합니다 (ANSI 표준을 확인하십시오). 255 자로주의하여 주소 오류가 발생했습니다. 큰 주소가 필요하지는 않지만 C / O 라인과 같은 것들을 포함시킬 수 있습니다. 도시는 꽤 커야하고, 도시 이름이 꽤 길다. 국가의 경우 국가와 동일한 하위 테이블을 사용하십시오. 우편 번호의 경우 미국 우편 번호보다 긴 국제 우편 번호를 잊지 마십시오. 당신이 국제을 지원하지 않기 때문에 당신은 여전히있을 수 있습니다. 군대를 포함하여 다른 카운티에 사는 많은 미국 시민이 있습니다.

많은 국가에 주가 없기 때문에 주가 선택 사항이어야한다는 것을 잊지 마십시오.


마지막 프로젝트에서 국제 우편 표준에 관한 문서를 최대 줄 길이로 39로 표시했습니다. 프랑스에는 도시를 뒤 따르는 대량 수신자를위한 별도의 코드가 있습니다. 이 크기와 국가의 3 개 또는 4 개의 무료 형식 필드를 허용합니다.
BillThor

9

내 부랑자가 울타리에 앉으면 아프다. 그래서 나는 약간의 대답을 버리고 망각에 빠지지 않기를 희망한다. 건설적인 비판을 제공하십시오.

이메일 주소:

최소 : 6 (a@g.cn). 또는 3 로컬 도메인의 이메일 주소를 추적하려는 경우
최대 : (320) 254 (RFC)

이메일의 유효성을 검사하는 코드의 양은 실제로 미쳤으므로 "@"가 있으면 유효한 것으로 가정하겠습니다.

전자 메일 주소를 "통신 방법"으로 추상화하여 사용자와 통신 할 수있는 모든 방법을 쉽게 나열 할 수 있습니다.

성별

성별은 시간이 지남에 따라 변경 될 수 있으므로 중요한 경우이를 추적 할 수 있습니다. http://en.wikipedia.org/wiki/ISO/IEC_5218 팔로우

NOT_KNOWN(0),
MALE(1),
FEMALE(2),
NOT_APPLICABLE(9);

주소 : NORAM

싸구려 나가 북미 주소를 고수하겠습니다.

대부분 세금으로 인해 국가, 부서, 도시 및 카운티를 추상화하는 것이 편리합니다. 세금은 여러 수준으로 적용될 수 있으므로 추상 지리적 영역에서 세율을 지정할 수 있으면 황금색입니다.

지역 :

id: int  
type: {country, division, county, city, indian reservation}  
name: varchar(45)  [1]
abbreviation: nullable varchar(4)  
parent_id: nullable int  

주소 :

id: int  
postal_area_id: int, references GeographicArea  
county_or_city_id: int, references GeographicArea  
street_address: varchar(255)  
suite: nullable varchar(255)  

필요한 경우 line2와 line3을 추가하십시오.

http://en.wikipedia.org/wiki/Address_(geography)를 참조하십시오 .

이제 주소는 주소입니다. 여러 사람이 한 주소에 살 수 있고 한 사람이 동시에 여러 주소를 가질 수 있으므로 시간이 지남에 따라 여러 테이블이 필요합니다.

파티 주소

party_id: int references Party  
address_id: int references Address  
purpose: {home, work, ...}  

시간이 지남에 따라 추적하는 경우 from_date및 nullable을 추가하십시오 to_date.

전화 번호

당사자는 여러 전화 번호를 가질 수 있으며 전화 번호는 여러 사람이 사용할 수 있습니다. 전화 번호는 팩스, 전화 통화, 모뎀 등에 사용될 수 있으며 내선 번호를 가질 수 있습니다. 이것들은 모두 시간이 지남에 따라 변할 수 있습니다.

전화 번호

id: int  
value: varchar(15) - the max allowed by the ITU  

최소값은 3 ( "911"의 경우)이거나 7 일 수 있습니다 ( "310-4NET", 지역 번호를 입력 할 수없는 특수한 종류의 지역 번호 임)

필요한 경우 이것을 국가 코드 등으로 나눌 수 있습니다.

http://en.wikipedia.org/wiki/E.164 표준을 사용해야합니다

PartyPhoneNumber

party_id: int references Party  
phone_number_id references PhoneNumber  
extension: nullable varchar(11) - ITU max  
purpose: {home, work, fax, modem, ...}  

이름

이름이 힘들다. 이유는 다음과 같습니다.

  1. 어떤 사람들은 한 단어로만 합법적 인 이름을 가지고 있습니다. http://en.wikipedia.org/wiki/List_of_legally_mononymous_people

  2. 어떤 사람들은 http://en.wikipedia.org/wiki/Wolfe%2B585,_Senior 라는 단어가 많은 이름을 가지고 있습니다

  3. 일부 사람들은 동시에 여러 이름을 가지고 있습니다 (예를 들어, 내 대학에는 많은 아시아 학생들이 있지만 "선호하는"보다 서구화 된 이름을 사용하는 것을 좋아합니다)

  4. 때로는 성명이나 결혼 한 성명과 같이 시간이 지남에 따라 사람들의 이름을 추적해야합니다.

  5. 다양한 이유로 개인과 조직을 추상화하려고합니다.

    테이블 파티 생성 (id bigserial primary key);

    테이블 만들기 party_name (id bigserial 기본 키, party_id bigint가 null을 참조하지 않음 party (id), smallint가 null을 참조하지 않음 형식 party_name_type (id)-생략 됨, 예 : "maiden", "legal");

    테이블 생성 name_component (id bigserial 기본 키, party_name_id bigint가 null이 아닌 참조 참조 party_name (id), smallint가 null이 아닌 참조 참조 name_component_type (id),- "exvened"이름 텍스트가 null이 아님);


3

이전 답변보다 약간 다른 관점에서, 그리고 이후 는 LDAP에 대해 얘기하고 확인을 보인다 , RFC 4519 - "의 LDAP (Lightweight Directory Access Protocol) : 스키마 사용자 응용 프로그램 용은" 관심이있을 수 있습니다.

응용 프로그램을 이러한 디렉토리에 매핑해야하는 경우 유용 할 수 있습니다. 그렇지 않으면 요구 사항에 맞지 않을 수 있습니다.

이러한 정의는 단순한 데이터가 아니라 필드에서 사용할 수있는 일부 연산자에 대한 것입니다. postalAddress예를 들어입니다 caseIgnoreListSubstringsMatch. 이 스키마를 엄격하게 준수해야한다는 제안은 아니지만 특히 원칙을 살펴보면 특히 응용 프로그램의 이름과 주소를 비교하여 데이터베이스 디자인과 관련이있는 방법이 흥미로울 수 있습니다.


3

이름에 대해서는 큰 따옴표를 사용하여 아일랜드어 또는 이탈리아어 이름 (예 : O'Hara 또는 D' Amato)에서 아포스트로피를 피할 필요가 없습니다.

또한 사용할 정규 표현식 세트를 얻는 것이 좋습니다. 따라서 이름 필드의 일부 (예 : 첫 이니셜, 닉네임, Jr / Sr 등)를 출력 할 수 있습니다.


1
아니면 내 성과 같은 네덜란드어 이름.
Colin 't Hart
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.