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.
database-design
data
domain-model
data-modeling
Istvan Devai
źródło
źródło
Odpowiedzi:
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.
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 . 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.
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.
W rzeczywistości, ze względu na dwuznaczność azjatyckich nazw, nie jest tak jasne, że możesz.
źródło
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.
źródło
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.
źródło
Zgadzam się z wieloma wypowiedziami @JanHudec, choć chciałbym rozwinąć nieco tę kwestię:
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
Półformalne wytyczne
Formalne wytyczne
źródło
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.
źródło
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ąć?
źródło
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:
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:
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.
źródło