Modelowanie imienia i nazwiska osobno

32

Jakie argumenty powinien wziąć pod uwagę przy projektowaniu nowego systemu i musi przechowywać nazwisko osoby jako jedno pole lub osobno jako imię / nazwisko?

Zalety pojedynczego pola:

  • Prostszy interfejs użytkownika
  • Bez dwuznaczności przy wpisywaniu nazwiska osoby, która ma bardzo długie imię (często nie jest oczywiste, jakie jest nazwisko / imię ...)
  • Mniejsza złożoność podczas obsługi tytułów (np. Nie trzeba wprowadzać osobnego pola, aby wpisać „MD” lub „Dr.”)

Zalety podzielonego pola:

  • Możliwa jest spersonalizowana komunikacja „Drogi Mr X” lub „Drogi Julie”
  • Jeśli zużyta usługa sieciowa potrzebuje imienia / nazwiska oddzielnie, można je łatwo podać.
  • Lepszy wybór dla każdej branży z surowymi wymogami identyfikacyjnymi (np. Medycznej, rządowej itp.)
  • Bezpieczniejszy wybór, ponieważ zawsze możesz wrócić do alternatywy dla jednego pola

Czy widzisz dodatkowy argument, który nie jest wymieniony powyżej?

Aktualizacja: pytanie brzmi, jakie dodatkowe (= niewymienione w pytaniu) argumenty mogą być wymienione dla każdego rozwiązania. Wydaje mi się, że udzielanie opinii zamiast możliwych plusów i minusów prowadzi dyskusję w niewłaściwy sposób. Każdy programista musi podjąć decyzję dotyczącą tego problemu, celem tego pytania jest zebranie listy nietrywialnych argumentów, które można ocenić w razie potrzeby.

Istvan Devai
źródło
11
Co próbujesz zrobić z tymi imionami? Czy masz wymagania prawne? Czy istnieje inna konsekwencja niż wyświetlenie nazwy użytkownika?
Darkhogg
9
Dystrybucja imienia / nazwiska nie obsługuje osób o jednym nazwisku, np. „Cher”.
JacquesB
77
Radzę przeczytać następujący artykuł: kalzumeus.com/2010/06/17/… to prawdziwy otwieracz do oczu, gdy myślisz o imionach.
Pieter B
10
Możesz zastanowić się nad zadaniem tego pytania na temat User Experience . Społeczność może zaoferować inne spojrzenie na ten problem związany z interfejsem użytkownika.
11684
9
@PieterB Niektóre punkty tego artykułu są wątpliwe i czasami trzeba poczynić założenia, aby załatwić sprawę. Ten artykuł nie zawiera użytecznych porad na temat obsługi nazw. Jeśli nazwa zawiera znaki inne niż Unicode, co robisz, pozwalasz użytkownikowi przesłać zdjęcie? Co zrobić, jeśli istnieją aspekty nie wizualne - zezwolić na wideo z dźwiękiem? Co jeśli nazwa jest sztuką performance i może być wykonywana tylko o północy w Hongkongu? W pewnym momencie musisz stać się prawdziwym i zająć się rozwiązywaniem problemów zamiast rozkoszowania się teoretycznymi przypadkami narożnymi, których twoja baza użytkowników nigdy nie spotka.
Przywróć Monikę

Odpowiedzi:

50

Imię i nazwisko nie są pożytecznymi pojęciami. Nazwy działają inaczej w różnych krajach. W większości krajów azjatyckich nazwisko jest zapisywane jako pierwsze, ale nadal jest używane do sortowania - więc możesz umieścić je w imieniu, a sortowanie będzie niepoprawne lub według nazwiska, a wyświetlanie będzie. Są też kraje takie jak Islandia, w których w ogóle nie używają nazwisk, ale zamiast imienia ojca. Po prostu sortują według nazwy.

Terminy „imię” i „nazwisko” (lub „nazwisko”) są lepsze w tym względzie, ale nadal bym ich unikał, chyba że jest to absolutnie konieczne (tj. Oficjalne dokumenty takie jak paszporty je mają, więc potrzebujesz ich), ponieważ po prostu komplikują sprawy.

  • Możliwa jest spersonalizowana komunikacja „Drogi Mr X” lub „Drogi Julie”

Tyle że nie masz pojęcia, czy zadzwonić do danej osoby po imieniu, nazwisku, czy jak. I nie zaczynaj mnie od języków, które mają biernik - nie możesz wywodzić biernika z mianownika w ogóle. Nie, lepiej jest po prostu zapytać użytkownika, jak je nazwać.

  • Jeśli zużyta usługa sieciowa potrzebuje imienia / nazwiska oddzielnie, można je łatwo podać.

Jeśli . Jeśli zależysz od innej usługi, jesteś zablokowany z powodu złych wyborów. To nie jest korzyść dla twoich własnych projektów.

  • Lepszy wybór dla każdej branży z surowymi wymogami identyfikacyjnymi (np. Medycznej, rządowej itp.)

Nie, to zły wybór dla nich. Dokumenty urzędowe zazwyczaj używają terminów „imię” i „nazwisko” (lub „nazwisko”), które są mniej dwuznaczne.

  • Bezpieczniejszy wybór, ponieważ zawsze możesz wrócić do alternatywy dla jednego pola

W rzeczywistości, ze względu na dwuznaczność azjatyckich nazw, nie jest tak jasne, że możesz.

Jan Hudec
źródło
2
Jeśli aplikacja jest używana w różnych częściach świata, etykiety pól będą musiały zostać zlokalizowane wraz ze sposobem ich łączenia / używania.
JeffO
5
@JeffO, prawdziwym problemem jest to, że w dzisiejszych czasach raczej prawdopodobne jest, że ludzie z różnych krajów będą w tym samym systemie, więc musisz stworzyć system i znaleźć sposób na wstawienie do niego nazw z różnych kultur, aby działał w miarę spójnie . Nie wchodź do tej króliczej nory, chyba że naprawdę jej potrzebujesz.
Jan Hudec
4
@IstvanDevai w Kalifornii toczyła się sprawa prawna, w której umowa została uznana za nieważną, ponieważ przepisy dotyczące kredytu wymagały „nazwiska”. Dana osoba miała podwójne nazwisko latynoskie, ale na pytanie o nazwisko podano pierwsze (ojcowskie) nazwisko, co jest powszechne. Druga strona przegrała sprawę windykacyjną, ponieważ nazwa na umowie nie była jego „ostatnim” imieniem, tj. Tym na końcu jego pełnego imienia i nazwiska. Przykład, w jaki sposób pierwsze / ostatnie wywołuje zamieszanie i nie jest całkowicie synonimem imion / nazwisk.
6
@Casey - drugie imiona powinny być zawarte w polu imion, bo takie są: imiona drugorzędne. Gdybym miał dolara za każdym razem, gdy widziałem Latynosa, który nie ma drugiego imienia, ale podwójne nazwisko otrzymuje swoje pierwsze (i najważniejsze) nazwisko w polu drugiego imienia, już byłbym na emeryturze. Jeśli chcesz wiedzieć, jak zadzwonić do danej osoby, przygotuj odpowiednie pole, oddzielone od imienia i nazwiska. Wtedy Bartłomiej Frank Edward Smith Wellington może powiedzieć, żebyś nazwał ich Bartem. Możemy mówić po angielsku, ale są tu ludzie z miejsc nieanglojęzycznych, a także ich nazwiska.
4
-1. Chociaż sama odpowiedź nie jest całkowicie błędna, nie ma to większego sensu dla tego pytania. OP szuka więcej argumentów na użycie albo jednego pola, albo dwóch pól dla ludzkich imion. Niezależnie od tego, czy nazywa się to „pierwszy / ostatni”, czy „dany / sur”, nie chodzi tylko o etykiety, które miały na myśli OP. Wszystkie pozostałe kwestie wydają mi się bardzo opiniotwórcze, a moje osobiste doświadczenia z tworzeniem i wdrażaniem aplikacji dla dużych klientów zakładają, że OP jest całkowicie normalny i po prostu tak się dzieje . Ta odpowiedź po prostu próbuje odeprzeć parametry pytania.
AnoE
31

Jedyny argument, który ma znaczenie, to jakie są wymagania twojego systemu?

Czy musisz zajmować się tylko jedną kulturą? Jeśli tak, dostosuj się do tej kultury. W przeciwnym razie plan internacjonalizacji (jak zauważyli inni).

Czy potrzebujesz danych do obsługi formularzy rządowych, opieki zdrowotnej lub innych wymogów prawnych / systemowych? Postępuj zgodnie z poleceniami. Jeśli to oznacza imię i nazwisko, zrób to. Jeśli to oznacza coś innego, zrób to.

Czy masz wymaganie dotyczące interfejsu API z imieniem i nazwiskiem (czy jest uzasadnione, że uzasadnia to zignorowanie YAGNI)? Rób to, co ma sens.

Jeśli potrzebujesz spersonalizowanej komunikacji, czy uzasadnione jest po prostu zapytanie kogoś o jego preferowane imię i przechowywanie?

Wymagania twojego systemu powinny określać, co robisz. Rób, co musisz, a resztę YAGNI.

Becuzz
źródło
7
Nie ma już czegoś takiego jak „jedna kultura”. Nawet najmniejsze społeczności mają mieszane normy kulturowe i języki.
BobDalgleish
7
@BobDalgleish Prawda, ale czasem to nie ma znaczenia. Czasami koszt wspierania wielu kultur sprawia, że ​​ludzie biznesu po prostu mówią „nie”.
Becuzz
9
@BobDalgleish Prawdopodobnie która kultura dominuje na rynku, dla którego opracowywana jest aplikacja? Nie sądzę, że jest to tak tajemnicze lub rzadkie.
Casey
3
@BobDalgleish - „kultura” nie ma znaczenia. Nikt nie pyta o twoją kulturę, kiedy otrzymujesz dokumenty. Gdybym musiał wspierać tylko Serbię (gdzie jestem w tej chwili), podałbym imię i nazwisko, ponieważ są one zdefiniowane na każdym dokumencie wydanym w tym kraju i to wszystko. Nie ma znaczenia, jaka jest twoja kultura. Twój paszport, prawo jazdy itp. Będą miały imię i nazwisko, okres.
Davor Ždralo
2
@icirellik Mylisz się w jaki sposób? Czy te rzeczy (ograniczenia długości itp.) Są złe, jeśli próbujesz doskonale modelować wszechświat? Na pewno. Ale nigdy nie zostałem poproszony o idealne modelowanie wszechświata i na każdy możliwy sposób, by ktoś chciał wybrać imię. Czy rozliczam się z nazwisk Klingon? Nie. Ale dlaczego nie? Ktoś może to kiedyś zrobić (szczerze mówiąc, nie zaskoczyłby mnie, gdyby ktoś zrobił to teraz). Ale przychodzi moment, w którym po prostu wiesz, że będą pewne rzeczy, które po prostu nie będą działać z twoim modelem. Dodatkowy czas na opracowanie każdej możliwości po prostu nie jest tego wart. (cd ...)
Becuzz
5

Jeśli masz więcej niż jeden sposób wyświetlania i / lub wykorzystywania nazwisk, prawdopodobnie będziesz potrzebować osobnych pól. Wraz z wprowadzaniem danych możesz przekazać opinię, aby pokazać użytkownikowi, w jaki sposób zostanie wykorzystany. Sposób ich łączenia może w przyszłości doprowadzić do przekształcenia w jedno pole.

Mają niektóre etykiety, które pokazują: Powitanie lub wyświetlana nazwa: imię + nazwisko Organizowanie / sortowanie: nazwisko, imię

Jeśli nie masz pewności, jak będzie to używane w przyszłości, zacznij od podzielonych nazw, a następnie możesz połączyć je w jedno pole, gdy zdasz sobie sprawę, że to wszystko, czego naprawdę potrzebujesz. Nie jest tak, że trudno jest napisać algorytm dzielący jedno pole imienia na imię i nazwisko, ale popełnisz błąd na kilku, a ludzie naprawdę nie lubią błędów w swoich nazwach. Dzięki podzielonym polom użytkownicy mogą dostosować sposób wprowadzania nazwy, gdy zobaczą, jak jest używana. Łączenie ich w polu stałej nazwy pojedynczej jest mniej ryzykowne.

JeffO
źródło
5

Zgadzam się z wieloma wypowiedziami @JanHudec, choć chciałbym rozwinąć nieco tę kwestię:

  • Musisz wiedzieć, jakie są twoje rzeczywiste wymagania, ale łatwiej jest łączyć informacje niż rozdzielać je po ponownym połączeniu.
  • Sortowanie zawsze będzie wyzwaniem, ponieważ zasady mogą się różnić w zależności od regionu i kultury.
  • Wiele kultur nie pasuje do twojej, co prowadzi do złych założeń. (To jest największa uwaga Jana)

Ważna jest terminologia

Terminy takie jak imię i nazwisko lub nazwisko mają znaczenie semantyczne, a baza danych powinna zawsze odzwierciedlać semantykę danych. Terminy takie jak imię i nazwisko mają znaczenie pozycyjne, zwykle oparte na angielskich i amerykańskich pomysłach dotyczących działania imion. Użyj właściwej terminologii dla semantyki swoich danych.

Jak daleko trzeba to rozbić?

Istnieją pojęcia tytułu (Mr. Dr. Mrs. itp.) Lub porządkowe (Jr., Sr., III itd.), A nawet certyfikaty (doktoranckie, MS, PCAM itp.), Które mogą być ważne w zależności od kontekst i cel.

Wiele lokalizacji ma pojęcie wielu nazwisk (ojcowskich i matczynych), a niektóre nie. Podczas wypełniania formularzy czasami ludzie muszą dokonać trudnego wyboru, którego nazwiska użyć, na przykład używając ojcowskiego nazwiska dla „nazwiska” w amerykańskiej formie lub wymyślając nazwisko oparte na nazwisku ojca (Janson ).

Podczas gdy w Ameryce często występuje jedno lub więcej drugich imion, często jest ono ignorowane poza rodziną.

Sortowanie

Pomaga mieć dedykowane pole dla nazwy sortowania. W ten sposób możesz ujednoznacznić reguły podczas tworzenia rekordu. Zapewnia również, że nazwy są posortowane w odpowiedniej kolejności ponad granicami międzynarodowymi.

Wspólne praktyki

Twoje rzeczywiste wymagania określają, jak poprawne są twoje nazwiska. Jeśli tworzysz rządową lub bankową stronę internetową, masz więcej wymagań dotyczących przechowywania i obsługi nazwisk niż coś nieformalnego, takiego jak Facebook.

Nieformalne wytyczne

  • Posiadaj jedno pole opisujące, w jaki sposób użytkownik chce być znany
  • Sortuj i wyświetlaj używa tej jednej nazwy

Półformalne wytyczne

  • Posiadaj jedno pole na pseudonim lub sposób, w jaki użytkownik chce zostać zaadresowany
  • Posiadaj dwa pola, jedno dla imienia i jedno dla nazwiska (nazwisko powinno być opcjonalne)
  • Oblicz pole sortowania w oparciu o ustawienia regionalne i kombinację podanego / nazwiska
  • Użyj pseudonimu, zwracając się bezpośrednio do użytkownika
  • Używaj formalnej nazwy, wymieniając osoby

Formalne wytyczne

  • Są one podyktowane obowiązującymi zasadami i procedurami dla podmiotu, który wspierasz
  • Potrzebujesz tyle pól, ile będzie obsługiwanych maksymalna liczba części nazw, nazwanych semantycznie takimi, jakimi są.
  • Dołącz pole sortowania, które obsługuje sortowanie tak, jak w przypadku półformalnym
  • Wyświetlanie jest również zwykle podyktowane istniejącymi zasadami i procedurami. Musisz się z nimi zapoznać.
Berin Loritsch
źródło
Czy downvoter chciałby opracować? Być może coś mi umknęło?
Berin Loritsch
Wydaje mi się, że jest to wyczerpująca i najbardziej pragmatyczna rada podana tutaj.
Jesse Clark,
4

Oprócz tego, co zauważył @JanHudec i z którym się zgadzam, warto również zauważyć, że w wielu krajach ludzie mają więcej niż jedno nazwisko, więc pole pojedynczego nazwiska może być nieistotne. Np. W Hiszpanii ludzie mają dwa nazwiska i używają tylko jednego lub obu w zależności od sytuacji.

Poza tym nie powinieneś personalizować komunikacji w oparciu o twoje założenia, ponieważ w niektórych kulturach możesz wydawać się niegrzeczny, gdy dzwonisz do ludzi po imieniu, aw przypadku innych może być odwrotnie.

Ponadto niektóre kultury kładą nacisk na formy takie jak „Pani” kontra „Pani” i mogą również łączyć to słowo z imionami lub nazwiskami, w zależności od konkretnego przypadku.

Dlatego skłaniam się ku rozwiązaniu, w którym masz jedno pole nazwy i może dodatkowe pola, które użytkownik wypełnia, które wskazują, jak zwrócić się do użytkownika - coś podobnego do tego, co robi wiele linii lotniczych, gdy kupujesz bilet online. Może to również rozwiązać problem dzielenia nazw, jeśli potrzebujesz go dla wspomnianej zewnętrznej usługi internetowej.

KjMag
źródło
1
Prawdopodobnie jeśli faktycznie lokalizujesz, możesz użyć innego szablonu dla różnych języków
Casey
4

Dodając jeszcze więcej do tego, co zauważyli @JanHudec i @KjMag, nawet w kulturach / językach bardzo zbliżonych do angielskiego staje się to problemem. Weźmy na przykład niemiecki. Masz pojęcie Vornamen, Imiona, Nachnamen, Nazwisko i Rufname, imię, które nazywasz. Na przykład mój ojciec ma 3 imiona, w akcie urodzenia są wymienione w kolejności Christoph Stephan Andreas. I ma jedno nazwisko. Jak myślisz, jak on się nazywa?

Prawidłowa odpowiedź: Andreas. To jest jego Rufname, w Ameryce umieszcza to jako swoje pierwsze imię, aby pasowało do amerykańskiego szablonu. Więc możesz założyć w Niemczech, że twoje pierwsze imię to imię, które się nazywasz, ale wtedy masz mojego brata: Christopha Sebastiana Herberta Marię. (Teraz rozdałem, jesteśmy Bawarczykami) Lub moja siostra Christine Gabriele. Jak myślisz, jak się nazywają? Sebastian i Christine odpowiednio.

Dodałbym trzecie odpowiedzi, które mówią jedno pole dla pełnej nazwy. I dodałbym do tego: może dodać kolejne pole na nazwisko / nazwisko i postawić pytanie: pod jakim nazwiskiem byłbyś posortowany na liście? A potem ostatnie pole: jak chcesz się zająć?

Wisielec4358
źródło
1
„Nazwisko” jest po prostu innym imieniem „nazwisko”, a nie dosłownie słowo, które pojawia się jako ostatnie w kolejności. Nazwisko Nakayama Taro to „Nakayama”.
Casey
2
Aby dodać kolejny przypadek: Mój dziadek nazywał się „Antoon Leendert van Ingen Schenau” => imię (imiona): „Antoon Leendert”; o nazwie: „Leen”; nazwisko: „van Ingen Schenau” należy posortować pod „Ingen”. Ani imienia wywołującego, ani prawidłowego sortowania nie można łatwo wyprowadzić z wpisu imię / nazwisko.
Bart van Ingen Schenau
1
@Casey według kogo? w Japonii jest to na przykład „górna nazwa”, a nie „nazwisko”.
eis
1
@eis W Japonii jest to 名字. Ale tutaj, w anglojęzycznym świecie, „nazwisko” jest synonimem „nazwiska”, a nie dosłownie „ostatniego słowa w czyimś szeregu nazwisk”.
Casey
1
@eis Nie jestem pewien, co chcesz zrobić. Użytkownicy nie znają różnicy, jeśli wywołasz pole bazy danych nazwisko zamiast nazwiska; jeden jest tylko synonimem drugiego. Jeśli Twoim problemem jest przedstawienie oprogramowania osobom nieanglojęzycznym, nie ma to znaczenia, ponieważ zarówno „nazwisko”, jak i „nazwisko” są angielskimi terminami i powinieneś używać tego terminu w jakimkolwiek języku, w którym chcesz zlokalizować stronę. Jeśli chodzi o to, że chcesz, aby ludzie, którzy nie znają angielskiego, mogli korzystać ze strony w języku angielskim, wydaje się to dość bezmyślnym sposobem rozwiązania rzeczywistego problemu.
Casey
-2

Jeśli wybierasz aplikację globalną, prawdopodobnie modelowałbyś nazwisko osoby jako tablicę ciągów. Weźmy na przykład nazwisko prezydenta w filmie Idiokracja:

  • Dwayne Elzondo Mountain Dew Herbert Camacho

To jest jego pełne imię. Nazwa zawiera 6 elementów w tablicy. W kulturze amerykańskiej pierwsze imię to pierwszy element w tablicy (Dwayne), a nazwisko to ostatni element w tablicy (Camacho). Ale nie zawsze tak jest.

Można zastosować reguły specyficzne dla kultury, aby określić „pierwsze” imię, jeśli imię jest faktycznie ostatnim elementem i tak dalej, w zależności od tego, jak działają nazwy w różnych kulturach / lokalizacjach.

Ponadto w przypadku USA mamy przypadki, gdy ostatnim elementem nie jest nazwisko, takie jak:

  • Dwayne Elzondo Mountain Dew Herbert Camacho Jr.

Może więc pole sufiksu nazwy lub parsowanie ostatniego elementu w poszukiwaniu znanych sufiksów opartych na kulturze, aby uzyskać poprawne nazwisko.

Dlatego lepiej zawsze przechowywać nazwę w jednym elemencie (Pełna nazwa), a następnie zastosować wobec niej procedurę „standaryzacji / warunków sanitarnych”, aby w razie potrzeby przeanalizować określone elementy. Podobna strategia istnieje dla adresów. Zazwyczaj są one zbierane jako jeden ciąg, a następnie wysyłane do usługi w celu przeanalizowania części.

Jon Raynor
źródło
3
Pojedyncze pole, a następnie „parsowanie” to naprawdę zły pomysł. Zastanów się nad osobą o nazwisku „Senior”: jak to przeanalizować? Co powiesz na „de la Jolla” jako nazwisko?
BobDalgleish
Wspomniałem parsowanie lub nazwę pola Sufiks. Jeśli potrzebne jest ogólne rozwiązanie, potrzebny byłby parser nazw, aby można było obsłużyć każdy przypadek, np. „Senior” i „de la Jolla”. Można użyć AI i nauczyć go rozpoznawania nazw. Założę się, że gdyby ktoś dostarczył mu wystarczająco duży zestaw danych, byłby w stanie rozpoznać „de la Jollas” świata. Ale to jedno z możliwych rozwiązań. Oczywiście możliwe jest również zbieranie dyskretnych części, ale ma to swoje wady.
Jon Raynor