하나 이상의 '성'을 모델링하는 방법은 무엇입니까?


11

스페인어 권 국가에서는 다음과 같이 하나 이상의 성을 사용합니다.

이름 ↘ ↙ 성
                Pedro Arturo Rodríguez Loyola
        중간 이름 ↗ ↖ (?)

환자 이름에 대한 데이터를 모델링하려고합니다. 우리나라에서는 중요하므로 두 번째 성은 무시할 수 없지만 특히 영어권 국가의 다른 개발자에게 적합한 응용 프로그램을 만들고 싶습니다.


English.SE 에서 비슷한 질문을 만들었습니다 . 두 값을 모두 유지하는 것이 왜 중요한지에 대한 통찰력이 있습니다.


15
"성"값에 공백이 없어야하는 사소한 이유가 있습니까? 일부 유스 케이스에서는 하나의 성을 사용하고 다른 유스 케이스에서는 모든 성을 사용 하시겠습니까? 그렇지 않은 경우 문제가 표시되지 않습니다. 사용자가 입력 한대로 "성"을 그대로 두십시오.
Kilian Foth

3
네덜란드어에서는 "van de Iets"유형 이름이 일반적입니다. 성 필드에 공백을
ratchet freak

2
단일 name필드를 가질 수없는 이유가 있습니까?
asfallows

2
@asfallows : 환자 목록을 인쇄하면 성으로 정렬해야하기 때문입니다. 예를 들어, 귀하의 이름이 "José Carlos Fernando Almodóvar Soto"인 경우 "Almodóvar"가 성이라는 것을 미리 어떻게 알 수 있습니까?
Pablo Olmos de Aguilera C.

2
@FedericoPoloni : 성으로 환자를 찾는 사람은 아마도 환자의 성을 알고있을 것입니다.
Mooing Duck

답변:


19

Q : DBA는 어떻게 계산됩니까?

A : 0, 1, 많은

개인은 하나 이상의 이름과 하나 이상의 가족 이름 및 제목을 가질 수 있습니다. 이 이름들은 순서가 있습니다. 개인을 참조하는 방법을 결정하는 것은 현지화와 문화에 달려 있습니다.

ContactId
NamePart { "John", "Smith", ...}
이름 유형 {title, given, family, ???}
주문 {1, 2, 3, ...}

위해 Pedro Arturo Rodríguez Loyola(연락처 # 1), 네 개의 행을 할 것이다 :

1 / 페드로 / 주어진 / 1
1 / 아르투로 / 주어진 / 2
1 / Rodríguez / 가족 / 3
1 /로 y 라 / 가족 / 4

이 방법은 주어진 구조에 제한되지 않고 여전히 주어진 접촉에 대해 의미가 있습니다. 이름이 3 또는 4 인 사람이나 가족 이름이있는 경우 어떻게합니까? 또는 처녀 이름?

이 답변의 이전 개정판에서 주문을 변경했습니다. 주문은 일부 문화권에서는 가족 이름이 먼저 오므로 분할 된 이름이 있기 때문에 이름 유형 내의 주문이 아닌 전체 이름에 대한 주문입니다 제목 부분 "Sir John Smith II".

추가 자료


2
+1 그러나이 프로그래머는 많은 해외 ​​팀 멤버들과 함께 일했지만, 내가 본 가장 긴 이름은 여전히 ​​"Pablo Diego José Francisco de Paula Juan Nepomuceno María de los Remedios Crispiniano de la Santísima Trinidad Ruiz y Picasso"입니다. 아동 학대?
Elliott Frisch

@Darkhogg utnapistim은 그의 답변에서 첫 번째 'This'링크로 사용했습니다. 그 '결정적인 가이드'중 하나입니다.

나는 아이디어를 개념으로 좋아하지만 실제 이름을 쓸 것이라고 사용자에게 제시하는 것이 조금 어렵지 않습니까? 내가 올 수있는 유일한 것은 "GMail"연락처 필드와 같은 이름의 일부를 "추가"하는 것입니다. 실제로 이러한 종류의 데이터 모델을 사용하는 방법에 대해 생각해 보셨습니까?
Pablo Olmos de Aguilera C.

1
@Peteris는 의료 응용 프로그램 (원래 질문에 '환자'가 언급되어 있음)에서 종종 다른 시스템과 통합하기 위해 구조화 된 이름을 전달해야합니다. 구조화되지 않은 데이터가 있다는 것은 환자를 한 병원에서 다른 병원으로 옮기거나 보험 청구를 위해 양식 필드를 채우는 것과 같은 다른 시스템과 통합하기가 상당히 어렵다는 것을 의미합니다. 따라서 필요한 모든 방식으로 데이터를 조작 할 수있는 방식으로 데이터를 구성하는 방법에 대한 문제가 있습니다.

1
@ 응용 프로그램이 가족 이름으로 정렬해야하거나 구급차에서 병원으로 (또는 그 반대로) 환자를 이송하기 위해 기존 EDI 시스템과 인터페이스하려고 할 때 자유 텍스트 필드가 제대로 작동하지 않습니다. 다양한 보험 청구 양식의 해당 필드. 이것들은 사실 뒤에 의미를 부여하는 것보다 이름의 각 부분을 지정하는 약간의 데이터를 갖는 것이 더 쉬운 모든 핵심 영역입니다. 자유 텍스트 필드는 훌륭하지만 때로는 다른 시스템과 작업하기위한 옵션이 아닙니다.

10

도움 될 수 있습니다. 게시물은 유머이지만 통찰력이 있습니다.

[이름] [성]은 일반적인 이름 규칙이 아닙니다. 당신이 사는 곳은 흔한 일입니다. 이 규칙을 적용하면 조만간 시스템에 추가 할 수없는 사람들이 생깁니다.

기본적으로 가능한 한 적은 제한을 적용하고 실제 저장된 이름과 추가 이름 사이에 유연성을 허용해야합니다.

나는 이런 식으로 갈 것입니다 :

  • 표시 이름 (양식 / 데이터를 표시 할 때 일관된 이름으로) : ([first] [last] 여야 함).
  • 다른 이름 / 이름 (검색,보다 정확한 일치 등) 여기에서 사용자는 주어진 길이까지 무엇이든 쓸 수 있습니다. 길이는 합리적으로 충분해야한다고 생각하는 것보다 길어야합니다. 예를 들어 40 자로 충분하다고 생각되면 500 :)).
  • 주소 지정 (Mr, Mrs, Ms, Jr, Sr, -san, 맞춤 값 (예 : Tov.) 등).
  • 내부 ID (이 ID는 응용 프로그램 내의 모든 사람을 고유하게 식별하여 이름 충돌을 방지해야합니다).

예를 들어, 루마니아 특정 분음 부호로 인해 대부분의 유럽 언어로 내 이름을 올바르게 쓸 수 없습니다 (따라서 내 나라 밖에서 내 이름을 쓸 때 기술적으로 잘못 쓰면 사람들이 읽고 발음 할 수 있습니다).

흥미로운 이름 예제와 링크 :

http://en.wikipedia.org/wiki/Nicholas_Barbon

http://en.wikipedia.org/wiki/Prince_%28musician%29

http://en.wikipedia.org/wiki/P_diddy

http://en.wikipedia.org/wiki/Burmese_name


고려해야 할 또 다른 사항은 정렬입니다. 사람들의 이름을 성 (또는 성 또는 이름의 첫 단어 등)별로 정렬하는 것이 종종 바람직합니다. 응용 프로그램이이를 수행해야하는 경우 "정렬 이름"을 식별하는 방법이 필요합니다.
BenM

그러나 나는이 아이디어를 전반적으로 좋아한다. 문화적 가정을 기반으로 이름을 나타내는 대신 시스템에서 수행해야하는 기능을 기반으로 이름을 나타냅니다.
BenM

나는 당신의 대답을 좋아합니다. 나는 이것이 어떻게 이름을 붙이는 데 도움이 될 수 있는지 이해하지 못합니다. 예를 들어 정렬해야합니다. 우리는 일반적으로 성을 사용합니다. 예를 들어 "다른 이름"또는 "표시 이름"이라는 필드 / 열에 배치하면 어떻게 도움이 될 수 있습니까? 그러나 버마어 이름에 대한 명성. 대박.
Pablo Olmos de Aguilera C.

@pablox, 내 요점은 개념적으로 사람의 이름을 신원으로 취급하지 말고 신원에 대한 메타 데이터로 취급해야한다는 것입니다 (그리고 ID는 고유 코드 여야 함). 애플리케이션의 요구에 따라 메타 데이터가 체계화 된 것으로 간주 할 수 있습니다. 예를 들어, "이름 토큰 그룹"에서 "이름 정렬"역할을 두 번째 이름 (있는 경우)으로, 첫 번째 토큰으로 "표시 이름"역할 및 "주소 이름"역할을 선택할 수 있습니다. "Dr. | Mr. | Ms. | etc"+ "표시 이름".
utnapistim

이름 정렬은 일반적으로 "전화 번호부 정렬"이 될 것입니다. 여기서 이름에 대한 다양한 추가를 무시하고 중요한 부분을 정렬합니다. 예를 들어 "van de Bogart"는 "van"이 아니라 "Bogart"에 정렬됩니다. 여러 부분으로 된 히스패닉 이름을 다루는 방법은 문화적으로 의존 할 것입니다. 어디에서 사용되고 있으며 어떻게 사용 하는가
Phil Perry

0

복잡한 일이 아닙니다 ..... 또는 뭔가 빠졌습니다.

name(varchar), lastname(varchar) 필드를 사용하십시오 .

그런 다음 폼은 전체 이름, 예를 채우기 위해 Jorge Patricio마지막 이름을 Pèrez Gonzáles.

검색에는 MySQL과 같은 많은 비교 연산자 like가있어서 찾는 데 도움이됩니다.

대부분의 성은 항상 순서대로되어 있습니다. Pérez González대부분 성의 이름은 반대 순서로 표시되지 않습니다.

다른 방법으로 데이터베이스를 과도하게 디자인 할 것입니다.


1
가족 이름이 먼저 주어지면 어떻게합니까? 링크

1
@MichaelT, 어때요? 필드를 분해하고 이름 및 성 테이블에서 값의 발생을 검색하십시오. 항상 Google과 유사한 검색 필드가 있다고 가정하면 "이름 :"및 "성 :"
JorgeeFG

0

개인 이름에는 세 가지 유형이 있습니다 : Polynyms (여러 구성 요소가있는 이름), Mononyms (예 : 하나의 구성 요소가있는 이름, 예 : "Cher") 및 Pictonyms (그림으로 표시되는 이름, 예 : Artist ).

사람은 연주, 여러 이름을 가질 수 역할을 예를 들어 법적 이름 및 선호하는 이름에.

polynym에는 여러 개의 구성 요소가 있으며,이 중 주어진 이름과 성이 필요합니다. 성에는 몇 가지 종류가 있습니다.

  1. 일반 성 (존스)
  2. 이중 장벽 성 ( "본 윌리엄스"또는 "루이스-드레퓌스")
  3. 실제 복합 성 {givenName : "후안 파블로"성 : "Fernández de Calderón", secondarySurname : "García-Iglesias"}

3은 그가 Fernández de Calderón García-Iglesias가 아니라 Fernández de Calderón으로 언급 될 것이기 때문에 중요 합니다 .

따라서 기본적으로 필수 성 필드와 nullable secondarySurname 필드가 있습니다.


0

다른 사람 이름의 다양한 구성 요소를 어떻게 모델링합니까? 당신은하지 않습니다 . 다른 사람의 법적 이름의 모든 구성 요소에 대한 별도의 필드와 선호하는 인사말, 별명, 비공식 이름, 사용자 이름, 닉네임 및 핸들을 모델링하는 대신 관심있는 것만 모델링하십시오.

확률은 시스템이 누군가를 위해 최대 네 개의 "이름"에 대해서만 신경을 쓰는 것입니다.

  1. 시스템에 로그인했음을 알 수 있는 표시 이름 .
  2. 비공식 이름 당신이 전화 통화를 해결 만들 수있는.
  3. 정식 이름 있는 당신은 대응에 그들에게 참조합니다.
  4. 정렬 이름 이 목록에 정렬 될 수있는 방식으로 # 2를 표현한다.

많은 시스템은 단순히 # 1과 # 2에 누군가의 정식 이름을 사용하여 "사용자 이름을 나타내는 문자열"과 "이름을 어떻게 정렬해야 하는지를 나타내는 문자열"로 남겨 둡니다.

데이터 모델링 관점에서 실제로 필요한 값만 정의하십시오. 이러한 값의 스토리지를 최적화하는 가장 좋은 방법은 구현 세부 사항입니다. 과도하게 최적화 할 경우 두통을 유발할 수 있습니다. (이름과 성만 "저장"할 수는 있지만 이름이 하나 뿐인 사람은 어떻게 하시겠습니까?)


-1

이것을 다른 방식으로 고려해 봅시다.

시스템은 다른 시스템에 연결해야하지만 시스템이 유연하지 않은 경우에는 얼마나 유연해야합니다. 그렇다면 데이터를 전송해야하는 시스템의 기능은 무엇입니까?

진료 예약을 위해 의사에게 전화를 걸면 생년월일을 묻습니다. 그러면 시스템에 일치하는 사람의 목록이 표시됩니다. 그런 다음 내 이름을 묻습니다. 올바른 사람.

의사는 나와 대화 할 때 저의 이름을 알아야합니다. 그들은 나에게 편지를 쓰려면 이름을 알아야합니다.

따라서 공백을 허용하는 단일 텍스트 필드 만이 아닙니다. 동일한 방식으로 처리하지 않는 한 성과 이름을 구분할 이유가 없습니다.


3
보험 청구 양식을 작성 중입니다. "성"이 있습니다. 그 사람은 일본 출신입니다. 음역 버전이있는 동안 필드에 올바른 가족 이름을 입력해야합니다. 어떤 단어입니까?

@MichaelT, 모두가 가족 이름을 가지고 있다고 무엇을 말합니까?
Ian

2
일본에서 온 사람으로부터 이름을 얻거나 (또는 ​​많은 다른 이름을 가진 다른 이름 국가 가 먼저 주어집니다.) 그렇게하는 것이 의료 양식을 작성할 때 가족 이름과 이름이 달라야 할 수도 있습니다 필드-한 필드를 가져 와서 올바른 필드와 일치시키는 방법 다른 예는 가족 이름을 기준으로 정렬하고 "José Carlos Fernando Almodóvar Soto"가 Almodóvar아닌 다른 이름으로 정렬해야하는 경우 Fernando입니다.

@MichaelT이므로 Family Name을 별도로 처리해야하므로 자체 필드를 지정하고 세부 정보를 입력하는 사람이 동부 이름을 이해하기를 바랍니다.
Ian
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.