성과 이름을 별도로 모델링


32

새로운 시스템을 설계 할 때 어떤 주장을 고려해야하며 사람의 이름을 하나의 필드로 저장하거나 이름 / 성으로 별도로 저장해야합니까?

단일 필드의 장점 :

  • 더 간단한 UI
  • 매우 긴 이름을 가진 사람의 이름을 입력하려고 할 때 모호함이 없습니다 (종종 성 / 이름 임).
  • 제목을 처리 할 때 복잡성이 줄어 듭니다 (예 : "MD"또는 "Dr."을 입력하기 위해 별도의 필드가 필요 없음)

분할 필드의 장점 :

  • "Dear Mr X"또는 "Dear Julie"와 같은 개인 커뮤니케이션이 가능합니다.
  • 소비 된 웹 서비스에 성 / 이름이 별도로 필요한 경우 쉽게 제공 할 수 있습니다.
  • 엄격한 식별 요구 사항 (예 : 의료, 정부 등)이있는 모든 산업에 더 적합
  • 항상 단일 현장 대안으로 돌아갈 수 있으므로 더 안전한 선택

당신은 어떤 보는가 추가 위에 나열되지 않은 인수를?

업데이트 : 문제는 각 솔루션에 대해 추가 (= 질문에 나열되지 않음) 인수 를 나열 할 수 있다는 것입니다. 가능한 장단점 대신 의견을 제시하면 토론이 잘못된 방식으로 진행된다고 생각합니다. 각 개발자는이 문제에 대한 결정을 내려야합니다.이 질문의 목적은 필요한 경우 평가할 수있는 사소한 인수 목록을 작성하는 것입니다.


11
그 이름으로 무엇을하려고합니까? 법적 요구 사항이 있습니까? 사용자 이름을 표시 하는 것 외에 다른 결과가 있습니까?
Darkhogg

9
이름 / 성 구별은 "Cher"와 같은 단일 이름을 가진 사람들을 지원하지 않습니다.
JacquesB

77
다음 기사를 읽어 보길 권한다 : kalzumeus.com/2010/06/17/… 이름을 생각할 때 정말 눈에 띄는 사람이다.
Pieter B

10
사용자 경험 에 대해이 질문을 고려할 수 있습니다.이 커뮤니티는 본질적으로 사용자 인터페이스 문제에 대해 다른 관점을 제공 할 수 있습니다.
11684

9
@PieterB이 기사의 일부 요점은 의문의 여지가 있으며 때로는 일을 끝내기 위해 가정해야합니다. 이 기사에서는 이름을 처리하는 방법에 대한 유용한 조언을 제공하지 않습니다. 이름에 유니 코드가 아닌 문자가 포함 된 경우 어떻게해야합니까? 사용자가 사진을 업로드 할 수 있습니까? 비 시각적 측면이있는 경우 사운드가있는 비디오를 허용합니까? 이름이 공연 예술이며 홍콩 자정에만 공연 할 수 있다면 어떨까요? 언젠가는 사용자 기반에서 결코 겪을 수없는 이론적 인 코너 사례를 다루는 대신 실제 문제를 해결하고 문제를 해결해야합니다.
Monica Reinstate Monica

답변:


50

이름과 성은 유용한 개념이 아닙니다. 국가마다 이름이 다르게 작동합니다. 대부분의 아시아 국가에서 이름은 먼저 작성되지만 여전히 정렬에 사용되므로 이름을 입력하면 정렬이 잘못되거나 성으로 표시되어 표시됩니다. 그리고 아이슬란드와 같이 가족 이름을 전혀 사용하지 않고 아버지의 이름을 사용하는 국가가 있습니다. 그래서 그들은 단순히 주어진 이름으로 정렬합니다.

“이름”과“성”(또는“성”)이라는 용어는 이와 관련하여 더 낫지 만 절대적으로 필요한 경우가 아니라면 여전히 피할 수 있습니다 (예 : 여권과 같은 공식 문서에 필요한 경우). 그들은 단지 일을 더 복잡하게 만듭니다.

  • "Dear Mr X"또는 "Dear Julie"와 같은 개인 커뮤니케이션이 가능합니다.

주어진 사람을 이름, 성 또는 무엇으로 전화할지 모를 경우를 제외하고. 그리고 비난을받는 언어로 시작하지 마십시오 . 일반적으로 명사에서 비난을 받을 수는 없습니다 . 아니요, 단순히 사용자에게 무엇을 호출해야하는지 묻는 것이 좋습니다.

  • 소비 된 웹 서비스에 성 / 이름이 별도로 필요한 경우 쉽게 제공 할 수 있습니다.

만약 . 다른 서비스에 의존하는 경우 잘못된 선택에 잠겨 있습니다. 자신의 디자인에는 이점이 없습니다.

  • 엄격한 식별 요구 사항 (예 : 의료, 정부 등)이있는 모든 산업에 더 적합

아니요, 이것에 대한 잘못된 선택입니다. 공식 문서는 일반적으로 "이름"과 "성"(또는 "가족 이름")이라는 용어를 사용하는데, 이는 덜 모호합니다.

  • 항상 단일 현장 대안으로 돌아갈 수 있으므로 더 안전한 선택

실제로 아시아 이름이 모호하기 때문에 그렇게 할 수는 없습니다.


2
앱이 세계의 다른 지역에서 사용되는 경우 필드 레이블을 결합 / 사용 방법과 함께 현지화해야합니다.
JeffO

5
@JeffO, 진짜 문제는 요즘 같은 시스템에 다른 나라의 사람들이있을 가능성이 높기 때문에 시스템을 만들고 다른 문화의 이름을 시스템에 삽입하여 합리적으로 일관되게 작동시키는 방법을 찾아야한다는 것입니다 . 실제로 필요한 경우가 아니면 토끼 구멍에 들어 가지 마십시오.
Jan Hudec

4
@IstvanDevai 신용 법에 "성"이 요구되어 계약이 무효로 선언 된 캘리포니아에서 법적 사건이있었습니다. 그 사람은 이중 히스패닉 성을 가지고 있었지만 성을 물었을 때 첫 번째 (부모) 성이 주어졌습니다. 계약상의 이름이 그의 "성"이 아니기 때문에 다른 당사자는 징수 사건을 잃었습니다. 첫 번째 / 마지막으로 혼동을 일으키는 방법의 예는 이름 / 가족 이름과 완전히 동의어가 아닙니다.

6
@Casey-중간 이름은 주어진 이름 필드에 포함되어야합니다. 왜냐하면 그것이 2 차적으로 주어진 이름이기 때문입니다. 매번 1 달러의 돈이 있다면 중간 이름이없는 히스패닉계 사람을 보았지만 이중 성은 중간 이름 필드에 첫 번째 (가장 중요한) 성을 얻었습니다. 나는 이미 은퇴했을 것입니다. 사람에게 전화를 걸려면 이름과 별도로 필드를 작성하십시오. 그런 다음 Bartholomew Frank Edward Smith Wellington이 Bart이라고 부를 수 있습니다. 우리는 영어를 할 수 있지만 영어를 사용하지 않는 곳에서 온 사람들이 있으며 그들의 이름도 입력됩니다.

4
-1. 답 자체가 완전히 틀린 것은 아니지만, 당면한 질문에는 그다지 의미가 없습니다. OP는 사람 이름으로 하나의 필드 또는 두 개의 필드를 사용하기위한 추가 인수를 찾습니다. "첫 번째 / 마지막"또는 "주어진 / sur"라고하는 것이 초점이 아니라 OP가 염두에 둔 레이블 일뿐입니다. 다른 모든 요점은 저에게 많은 의견을 가지고 있으며, 대규모 고객을위한 응용 프로그램을 만들고 배포하는 개인적인 경험에서 OP의 가정은 완전히 정상적이며 그렇게 됩니다. 이 답변은 질문의 매개 변수를 논쟁하려고합니다.
AnoE

31

중요한 유일한 주장은 시스템의 요구 사항은 무엇입니까?

하나의 문화 만 다루어야합니까? 그렇다면 그 문화를 따르십시오. 그렇지 않으면 다른 사람들이 지적했듯이 국제화 계획을 세우십시오.

정부 양식, 건강 관리 또는 기타 법적 / 시스템 요구 사항을 처리하기위한 데이터가 필요합니까? 그 지시를 따르십시오. 그것이 성과 이름을 의미한다면 그렇게하십시오. 다른 의미가 있다면 그렇게하십시오.

이름과 성을 가진 API에 대한 요구 사항이 있습니까 (또는 YAGNI를 무시할만큼 충분한가)? 거기에 맞는 것을하십시오.

개인화 된 커뮤니케이션이 필요한 경우 누군가에게 선호하는 이름을 물어 보는 것이 합리적입니까?

시스템 요구 사항에 따라 수행 할 작업이 결정됩니다. 해야 할 일을하고 나머지는 YAGNI하십시오.


7
더 이상 "한 문화"와 같은 것은 없습니다. 가장 작은 공동체조차도 문화적 규범과 언어가 혼합되어 있습니다.
BobDalgleish

7
@BobDalgleish True이지만 때로는 중요하지 않습니다. 때때로 여러 문화를 지원하는 비용으로 인해 비즈니스 사람들은 거부합니다.
Becuzz

9
@BobDalgleish 아마도 응용 프로그램이 개발되는 시장에서 어떤 문화가 지배적일까요? 나는 이것이 실제로 그 신비하거나 희귀하다고 생각하지 않습니다.
Casey

3
@BobDalgleish- "문화"는 관련이 없습니다. 문서를 발행 할 때 아무도 귀하의 문화에 대해 묻지 않습니다. 세르비아 만 지원해야한다면 (현재있는 곳에서)이 국가에서 발행 된 모든 문서에 정의 된대로 이름과 성을 포함해야합니다. 문화가 무엇이든 상관 없습니다. 여권, 운전 면허증 등에는 이름과 성, 기간이 있습니다.
Davor Ždralo

2
@icirellik 어떤 방법으로 잘못 되었습니까? 우주를 완벽하게 모델링하려는 경우 그러한 것들 (길이 제한 등)이 잘못 되었습니까? 확실히. 그러나 나는 우주와 누군가가 이름을 고르고 싶어 할 수있는 모든 가능한 방법을 완벽하게 모델링하라는 요청을받은 적이 없습니다. Klingon 이름을 설명합니까? 아뇨 그런데 왜 안되죠? 누군가 언젠가 그렇게 할 수도 있습니다 (누군가 지금 그렇게해도 솔직히 놀라지 않을 것입니다). 그러나 모델에서 작동하지 않는 것들이 있다는 것을 알게 될 시점이 있습니다. 그리고 모든 가능성을 처리 할 수있는 여분의 개발 시간은 그만한 가치가 없습니다. (계속 ...)
Becuzz

5

이름을 표시 및 / 또는 활용하는 방법이 두 가지 이상인 경우 별도의 필드가 필요할 수 있습니다. 데이터 입력과 함께 사용자에게 데이터 활용 방법을 보여주는 피드백을 제공 할 수 있습니다. 이들을 결합하면 향후 단일 필드로 변환 될 수 있습니다.

인사말 또는 표시 이름 : 이름 + 성 구성 / 분류 : 성, 이름으로 표시되는 레이블이 있습니다.

나중에 이것이 어떻게 사용 될지 확실하지 않으면 분할 이름으로 시작한 다음 실제로 필요한 모든 것을 알면 단일 필드로 결합 할 수 있습니다. 단일 이름 필드를 성과 이름으로 나누는 알고리즘을 작성하는 것은 어렵지 않지만, 소수의 사람들은 실수를 저지르고 사람들은 실제로 자신의 이름을 가진 실수를 좋아하지 않습니다. 분할 필드를 사용하면 사용자는 이름이 어떻게 사용되는지 볼 때 이름을 입력하는 방법을 조정할 수 있습니다. 영구적 인 단일 이름 필드에 그것들을 결합하는 것은 덜 위험합니다.


5

@JanHudec이 말한 많은 것에 동의하지만, 조금 확장하고 싶습니다.

  • 실제 요구 사항이 무엇인지 알아야하지만 정보를 다시 결합한 후 분리하는 것보다 정보를 결합하는 것이 더 쉽습니다.
  • 로케일과 문화에 따라 규칙이 다를 수 있으므로 정렬은 항상 어려운 문제입니다.
  • 많은 문화권이 당신의 문화와 맞지 않아서 잘못된 가정으로 이어집니다. (이것은 1 월의 가장 큰 포인트입니다)

용어는 중요하다

같은 조건 지정된 이름 또는 가족의 이름은 의미 론적 의미를 가지고 있고, 데이터베이스는 항상 데이터의 의미를 반영해야한다. 이름성과 같은 용어는 일반적으로 이름의 작동 방식에 대한 영어와 미국의 아이디어를 기반으로하는 위치 적 의미를 갖습니다. 데이터 의미론에 적절한 용어를 사용하십시오.

얼마나 분해해야합니까?

의 개념이 있습니다 제목 (씨 박사 부부 등) 또는 서수 (주니어, 시니어, III 등), 심지어 인증 에 따라 중요 할 수 있습니다 (박사, 석사, PCAM 등) 맥락과 목적.

많은 로케일에는 여러 가족 이름 (부모 및 모성)이라는 개념이 있으며 일부에는 없습니다. 양식을 작성할 때, 때때로 사람들은 어떤 이름을 사용할 것인지에 대해 어려운 선택을해야합니다. 예를 들어 미국식에서 "성"에 대한 친자 이름을 사용하거나 아버지의 이름 (Janson)에 따라 성 ).

미국에서는 하나 이상의 중간 이름을 갖는 것이 일반적이지만 가족 외부에서는 종종 무시됩니다.

정렬

정렬 이름 전용 필드를 갖는 데 도움이됩니다. 그렇게하면 레코드를 만들 때 규칙을 명확하게 할 수 있습니다. 또한 국제 경계에 걸쳐 올바른 순서로 이름이 정렬되도록합니다.

일반적인 관행

실제 요구 사항에 따라 이름에 대한 정확성이 결정됩니다. 정부 또는 은행 웹 사이트를 만드는 경우 Facebook과 같은 비공식적 인 것보다 이름을 저장하고 처리하는 데 더 많은 요구 사항이 있습니다.

비공식 가이드 라인

  • 사용자가 어떻게 알고 싶어하는지 설명하는 필드가 하나 있습니다.
  • 정렬 및 표시는 하나의 이름을 사용합니다

반 정규 지침

  • 닉네임에 대한 하나의 필드 또는 사용자의 주소 지정 방법
  • 이름과성에 대해 하나씩 두 개의 필드가 있습니다 (성은 선택 사항이어야 함).
  • 로케일과 주어진 / 성 콤보를 기준으로 정렬 필드 계산
  • 사용자에게 직접 주소를 지정할 때 닉네임을 사용하십시오
  • 사람을 나열 할 때 정식 이름을 사용하십시오.

공식적인 지침

  • 지원하는 엔터티에 대한 기존 정책 및 절차에 따라 결정됩니다.
  • 지원할 최대 이름 부분 수만큼 필드가 필요하며 의미에 따라 이름이 지정됩니다.
  • 반 정형 경우와 마찬가지로 정렬을 처리하는 정렬 필드를 포함합니다.
  • 또한 디스플레이는 일반적으로 기존 정책 및 절차에 따라 결정됩니다. 그들에게 익숙해 져야합니다.

downvoter가 정교하게 관리해야합니까? 아마도 내가 뭔가를 놓쳤습니까?
Berin Loritsch

이것은 나에게 포괄적이고 가장 실용적인 조언으로 보입니다.
Jesse Clark

4

@JanHudec이 지적하고 동의하는 것 외에도 많은 국가에서 사람들이 하나 이상의 성을 가지고 있으므로 단일 성 필드는 관련이 없을 수 있습니다. 예를 들어 스페인의 사람들은 두 개의 성이 있으며 상황에 따라 둘 중 하나만 사용합니다.

또한 일부 문화권에서는 사람들이 성으로 전화 할 때 무례한 것처럼 보일 수도 있고 다른 경우에는 반대 일 수도 있으므로 가정에 따라 커뮤니케이션을 개인화해서는 안됩니다.

또한 일부 문화권에서는 'Mrs'vs 'Ms'와 같은 형식에 중점을 두며 특정 경우에 따라이 단어를 이름 또는 성과 결합 할 수도 있습니다.

따라서 단일 이름 필드와 사용자가 사용자에게 넘기는 방법을 암시하는 추가 필드가있는 솔루션을 기대합니다. 온라인으로 티켓을 구입할 때 많은 항공사가하는 것과 유사합니다. 이렇게하면 언급 한 외부 웹 서비스에 필요한 경우 이름을 분할하는 방법의 문제를 해결할 수도 있습니다.


1
실제로 현지화하는 경우 다른 언어에 대해 다른 템플릿을 사용할 수 있습니다
Casey

4

@JanHudec과 @KjMag가 지적한 것에 더 덧붙이면 영어와 매우 가까운 문화 / 언어에서도 이것이 문제가됩니다. 예를 들어 독일어를 사용하십시오. Vornamen, First name, Nachnamen, Last names 및 Rufname이라는 개념이 있습니다. 예를 들어 아버지를 예로 들면, 그는 3 개의 이름을 가지고 있으며, 그의 출생 증명서에는 Christoph Stephan Andreas 순서로 나열되어 있습니다. 그리고 그는 성이 하나 있습니다. 그 사람의 이름이 무엇이라고 생각하십니까?

정답은 Andreas입니다. 그것은 그의 Rufname이며, 미국에서는 그것을 미국식 템플릿에 맞는 그의 첫 번째 이름으로 넣습니다. 그래서 당신은 독일에서 당신의 이름의 마지막 이름은 당신이 불린 이름이지만 내 동생이 있다고 Christoph Sebastian Herbert Maria라고 가정 할 수 있습니다. (이제 우리는 바바리아 인이다.) 또는 나의 여동생 크리스틴 가브리엘. 그들이 이름이 뭐라고 생각합니까? 세바스찬과 크리스틴.

나는 전체 이름에 대한 하나의 필드를 말하는 답변의 세 번째입니다. 그리고 나는 그것에 덧붙일 것입니다 : 아마 성 / 가족 이름에 다른 필드를 추가하고 질문을 제기하십시오 : 당신은 어떤 이름으로 목록에 정렬됩니까? 그리고 마지막 필드는 어떻게 다루고 싶습니까?


1
"성"은 문자 그대로 마지막에 나오는 단어가 아니라 "성"의 또 다른 이름입니다. 나카야마 타로의 성은 "나카야마"입니다.
Casey

2
또 다른 사례를 추가하려면 : 내 할아버지는 "Antoon Leendert van Ingen Schenau"=> 이름으로 : "Antoon Leendert"; 호출 : "Leen"; 성 : "van Ingen Schenau"는 "Ingen"아래에 정렬됩니다. 발신자 이름이나 올바른 정렬을 이름 / 성 항목에서 쉽게 도출 할 수는 없습니다.
Bart van Ingen Schenau

1
누구에 따라 @Casey? 일본에서는 "성"이 아닌 "상위"입니다.
EIS

1
@eis 일본에서는 名字입니다. 그러나 여기서 영어를 사용하는 세계에서 "성"은 "성"과 동의어이며 문자 그대로 "누군가 이름의 마지막 단어"가 아닙니다.
Casey

1
@eis 나는 당신이 어떤 점을 만들고 싶은지 잘 모르겠습니다. 성 대신 데이터베이스 필드 last_name을 호출하면 사용자는 차이를 알 수 없습니다. 하나는 다른 하나의 동의어 일뿐입니다. 영어 이외의 언어 사용자에게 소프트웨어를 제공하려는 경우 "성"과 "성"이 모두 영어 단어이므로 페이지를 지역화하기 위해 어떤 언어로든 용어를 사용해야하므로 관련이 없습니다. 만약 당신이 영어를 모르는 사람들이 영어 페이지를 사용하기를 원한다면, 이것은 실제 문제를 해결하는 데 반쯤 빠져있는 것처럼 보입니다.
Casey

-2

전역 응용 프로그램을 사용하려는 경우 사람의 이름을 문자열 배열로 모델링 할 수 있습니다. 예를 들어 영화 관료주의에서 대통령의 이름을 생각해보십시오.

  • 드웨인 엘존도 마운틴 듀 허버트 카마초

그의 이름입니다. 이름은 배열에 6 개의 요소를 포함합니다. 미국 문화권의 경우 이름은 배열의 첫 번째 요소 (Dwayne)이고 성은 배열의 마지막 요소 (Camacho)입니다. 그러나 항상 그런 것은 아닙니다.

이름이 실제로 다른 요소 / 지역에서 작동하는 방식에 따라 이름이 실제로 마지막 요소 인 경우 "이름"이름을 결정하기 위해 문화 별 규칙을 적용 할 수 있습니다.

또한 미국의 경우 마지막 요소가 성과 다른 경우가 있습니다.

  • 드웨인 엘존도 마운틴 듀 허버트 카마초 주니어

따라서 이름 접미사 필드 또는 올바른 성을 얻기 위해 문화권을 기반으로 알려진 접미사를 찾는 마지막 요소를 구문 분석해야 할 수도 있습니다.

따라서 이름을 하나의 요소 (전체 이름)에 저장 한 다음 "표준화 / 위생"루틴을 적용하여 필요에 따라 특정 요소를 구문 분석하는 것이 좋습니다. 주소에도 비슷한 전략이 있습니다. 일반적으로 하나의 문자열로 수집 된 다음 서비스로 전송되어 파트를 구문 분석합니다.


3
단일 필드와 "파싱"은 정말 나쁜 생각입니다. "성"이라는 성을 가진 사람을 생각해보십시오. 어떻게 파싱합니까? 성으로 "델라 홀라"는 어떻습니까?
BobDalgleish

구문 분석 또는 이름 접미사 필드에 대해 언급했습니다. 일반적인 솔루션이 필요한 경우 이름 파서가 필요하므로 "Senior"및 "de la Jolla"와 같은 각 사례를 처리 할 수 ​​있습니다. AI를 사용하고 이름을 인식하는 방법을 훈련시킬 수 있습니다. 나는 그것이 충분히 큰 데이터 세트를 먹였다면 세계의 "델라 졸라"를 인식 할 수있을 것이라고 내기했다. 그러나 이것이 가능한 해결책입니다. 확실히 개별 부품을 수집하는 것도 가능하지만 단점이 있습니다.
Jon Raynor 17 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.