Argumen mana yang harus dipertimbangkan seseorang ketika merancang sistem baru dan harus menyimpan nama seseorang sebagai satu bidang atau secara terpisah sebagai nama depan / belakang?
Pro untuk bidang tunggal:
- UI yang lebih sederhana
- Tidak ada ambiguitas ketika mencoba memasukkan nama seseorang, yang memiliki nama yang sangat panjang (seringkali tidak jelas yang merupakan nama belakang / nama depan ..)
- Kompleksitas yang kurang saat menangani judul (mis. Tidak perlu bidang terpisah untuk memasukkan "MD" atau "Dr.")
Pro untuk bidang perpecahan:
- Komunikasi yang dipersonalisasi dimungkinkan "Dear Mr X" atau "Dear Julie"
- Jika layanan web yang dikonsumsi memerlukan nama depan / belakang secara terpisah, ia dapat disediakan dengan mudah.
- Pilihan yang lebih baik untuk industri apa pun dengan persyaratan identifikasi yang ketat (misalnya medis, pemerintah, dll.)
- Pilihan yang lebih aman, karena Anda selalu dapat kembali ke alternatif bidang tunggal
Apakah Anda melihat argumen tambahan yang tidak tercantum di atas?
Pembaruan: pertanyaannya adalah, argumen tambahan apa (= yang tidak tercantum dalam pertanyaan) dapat dicantumkan untuk setiap solusi. Saya pikir memberikan pendapat dan bukannya kemungkinan pro dan kontra mendorong diskusi dengan cara yang salah. Setiap pengembang harus membuat keputusan tentang masalah ini, tujuan dari pertanyaan ini adalah untuk mengumpulkan daftar argumen non-sepele yang dapat dievaluasi jika diperlukan.
database-design
data
domain-model
data-modeling
Istvan Devai
sumber
sumber
Jawaban:
Nama depan dan nama belakang bukanlah konsep yang berguna. Nama-nama bekerja secara berbeda di berbagai negara. Di sebagian besar negara-negara Asia, nama keluarga ditulis terlebih dahulu, tetapi masih digunakan untuk menyortir — jadi Anda dapat memasukkannya dalam nama depan, dan penyortiran akan salah, atau dalam nama belakang, dan tampilan akan. Dan kemudian ada negara-negara seperti Islandia di mana mereka tidak menggunakan nama keluarga sama sekali, tetapi sebaliknya diberi nama ayah. Jadi mereka hanya mengurutkan berdasarkan nama yang diberikan.
Istilah "nama yang diberikan" dan "nama keluarga" (atau "nama keluarga") lebih baik dalam hal ini, tetapi saya masih akan menghindarinya kecuali benar-benar diperlukan (yaitu dokumen resmi seperti paspor memilikinya, jadi Anda memerlukannya), karena mereka hanya membuat segalanya lebih rumit.
Kecuali Anda tidak tahu apakah akan memanggil orang yang diberikan dengan nama depan mereka, atau nama belakang atau apa. Dan jangan mulai saya dengan bahasa yang memiliki akusatif — Anda tidak bisa mendapatkan akusatif dari nominatif secara umum. Tidak, lebih baik jika Anda hanya bertanya kepada pengguna apa yang harus memanggil mereka.
Jika . Jika Anda bergantung pada layanan lain, Anda terkunci pada pilihan buruk mereka. Tidak ada keuntungan untuk desain Anda sendiri.
Tidak, ini pilihan yang salah untuk ini. Dokumen resmi umumnya menggunakan istilah "nama yang diberikan" dan "nama keluarga" (atau "nama keluarga"), yang kurang ambigu.
Sebenarnya, karena ambiguitas dengan nama-nama Asia, tidak begitu jelas Anda bisa.
sumber
Satu-satunya argumen yang penting adalah apa saja persyaratan sistem Anda?
Apakah Anda perlu berurusan dengan satu budaya saja? Jika demikian, sesuaikan dengan budaya itu. Kalau tidak, rencanakan untuk internasionalisasi (seperti yang ditunjukkan orang lain).
Apakah Anda perlu mendapatkan data untuk berurusan dengan formulir pemerintah, layanan kesehatan atau persyaratan hukum / sistem lainnya? Ikuti apa pun yang dikte itu. Jika itu berarti nama depan dan belakang, lakukanlah. Jika itu berarti sesuatu yang berbeda, lakukan itu.
Apakah Anda memiliki persyaratan untuk API dengan nama depan dan belakang (atau apakah cukup masuk akal, cukup untuk menjamin mengabaikan YAGNI)? Lakukan apa yang masuk akal di sana.
Jika Anda membutuhkan komunikasi yang dipersonalisasi, apakah masuk akal untuk hanya meminta seseorang nama yang mereka sukai dan menyimpannya?
Persyaratan sistem Anda harus menentukan apa yang Anda lakukan. Lakukan apa yang harus Anda lakukan dan YAGNI sisanya.
sumber
Jika Anda memiliki lebih dari satu cara untuk menampilkan dan / atau menggunakan nama, maka Anda mungkin perlu bidang yang terpisah. Seiring dengan entri data, Anda dapat memberikan umpan balik untuk menunjukkan kepada pengguna bagaimana itu akan digunakan. Bagaimana Anda menggabungkan mereka, dapat menyebabkan konversi ke satu bidang di masa depan.
Miliki beberapa label yang menunjukkan: Salam atau Nama Tampilan: Nama Depan + Nama Belakang Pengorganisasian / Penyortiran: Nama Belakang, Nama Depan
Saat Anda tidak yakin bagaimana ini akan digunakan di masa depan, mulailah dengan nama terpecah dan kemudian Anda bisa menggabungkannya menjadi satu bidang ketika Anda menyadari bahwa hanya itulah yang benar-benar Anda butuhkan. Bukannya sulit untuk menulis algoritma untuk membagi bidang nama tunggal menjadi nama depan dan belakang, tetapi Anda akan membuat kesalahan pada beberapa dan orang-orang benar-benar tidak suka kesalahan dengan nama mereka. Dengan bidang yang dibagi, pengguna dapat menyesuaikan bagaimana mereka memasukkan nama mereka ketika mereka melihat bagaimana itu digunakan. Menggabungkan mereka dalam bidang nama tunggal permanen tidak terlalu berisiko.
sumber
Saya setuju dengan banyak apa yang dikatakan @JanHudec, meskipun saya ingin sedikit memperluas:
Terminologi itu Penting
Istilah seperti nama dan nama keluarga atau nama keluarga tertentu memiliki makna semantik, dan basis data Anda harus selalu mencerminkan semantik data Anda. Istilah seperti nama depan dan nama belakang memiliki makna posisi, biasanya didasarkan pada ide-ide bahasa Inggris dan Amerika tentang cara kerja nama. Gunakan terminologi yang tepat untuk semantik data Anda.
Seberapa jauh Anda perlu memecahnya?
Ada konsep judul (Tn. Dr. Mrs. dll.) Atau ordinal (Jr., Sr., III, dll.), Dan bahkan sertifikasi (PhD, MS, PCAM, dll.) Yang dapat menjadi penting tergantung pada konteks dan tujuan.
Banyak lokal memiliki konsep beberapa nama keluarga (ayah dan ibu), dan beberapa tidak punya. Saat mengisi formulir, kadang-kadang orang harus membuat pilihan sulit tentang nama mana yang akan digunakan, misalnya menggunakan nama keluarga ayah untuk "nama keluarga" dalam bentuk Amerika, atau muncul dengan nama belakang berdasarkan nama ayah (Janson ).
Sementara di Amerika adalah umum untuk memiliki satu atau lebih nama tengah, sering diabaikan di luar keluarga Anda.
Penyortiran
Ini membantu untuk memiliki bidang khusus untuk nama sortir. Dengan cara itu Anda bisa mendua aturan ketika Anda membuat catatan. Ini juga memastikan Anda memiliki nama yang diurutkan dalam urutan yang benar melintasi batas internasional.
Praktek Umum
Persyaratan nyata Anda menentukan seberapa benar Anda perlu tentang nama. Jika Anda membuat situs web pemerintah atau perbankan, maka Anda memiliki lebih banyak persyaratan untuk menyimpan dan menangani nama daripada sesuatu yang informal seperti Facebook.
Pedoman Informal
Pedoman Semi Formal
Pedoman Formal
sumber
Terlepas dari apa yang telah ditunjukkan oleh @JanHudec dan yang saya setujui, perlu juga dicatat bahwa di banyak negara orang memiliki lebih dari satu nama belakang, sehingga bidang nama belakang tunggal mungkin tidak relevan. Misalnya di Spanyol orang memiliki dua nama belakang, dan mereka hanya menggunakan satu atau keduanya tergantung pada situasinya.
Selain itu, Anda tidak boleh mempersonalisasikan komunikasi berdasarkan asumsi Anda karena dalam beberapa budaya Anda mungkin terlihat tidak sopan ketika memanggil orang dengan nama belakang mereka dan dalam kasus orang lain mungkin sebaliknya.
Juga, beberapa budaya menekankan pada bentuk-bentuk seperti 'Nyonya' vs 'Nyonya', dan mereka juga dapat menggabungkan kata ini dengan nama depan atau belakang tergantung pada kasus tertentu.
Jadi saya akan condong ke solusi di mana Anda memiliki bidang nama tunggal dan mungkin bidang tambahan yang diisi pengguna yang mengisyaratkan cara beralih ke pengguna - sesuatu yang mirip dengan apa yang dilakukan banyak maskapai saat Anda membeli tiket online. Ini juga dapat memecahkan masalah tentang cara membagi nama jika Anda membutuhkannya untuk layanan web eksternal yang telah Anda sebutkan.
sumber
Pada menambahkan lebih ke apa yang telah ditunjukkan oleh @JanHudec dan @KjMag, bahkan dalam budaya / bahasa yang sangat dekat dengan bahasa Inggris, ini menjadi masalah. Ambil Jerman misalnya. Anda memiliki konsep Vornamen, Nama depan, Nachnamen, Nama belakang, dan Rufname, nama Anda dipanggil. Ambil contoh ayah saya, ia memiliki 3 nama depan, pada akte kelahirannya mereka terdaftar dalam urutan Christoph Stephan Andreas. Dan dia memiliki satu nama belakang. Menurut Anda apa namanya dia dipanggil?
Jawaban yang benar: Andreas. Itulah Rufname-nya, di Amerika ia menempatkan itu sebagai nama pertamanya yang cocok dengan templat Amerika. Jadi Anda mungkin menganggap di Jerman nama belakang Anda yang pertama adalah nama Anda dipanggil tetapi kemudian Anda memiliki saudara lelaki saya: Christoph Sebastian Herbert Maria. (Sekarang saya telah memberikan kami orang Bavaria) Atau saudara perempuan saya Christine Gabriele. Menurut Anda, nama apakah itu namanya? Sebastian dan Christine masing-masing.
Saya akan ketiga jawaban yang mengatakan satu bidang untuk nama lengkap. Dan saya akan menambahkan itu: mungkin menambahkan bidang lain untuk nama keluarga / nama keluarga dan mengajukan pertanyaan: dengan nama apa Anda akan diurutkan dalam daftar? Dan kemudian bidang terakhir untuk: bagaimana Anda ingin ditangani?
sumber
Jika seseorang pergi untuk aplikasi global, orang mungkin akan memodelkan nama seseorang sebagai array string. Misalnya, perhatikan nama presiden di film Idiocracy:
Itu nama lengkapnya. Nama mengandung 6 elemen dalam array. Untuk budaya AS, nama depan adalah elemen pertama dalam array (Dwayne) dan nama belakang adalah elemen terakhir dalam array (Camacho). Namun itu tidak selalu terjadi.
Seseorang dapat menerapkan aturan khusus budaya untuk menentukan nama "pertama" jika nama depan sebenarnya adalah elemen terakhir dan sebagainya tergantung pada bagaimana nama bekerja di berbagai budaya / lokal.
Juga, dalam kasus AS, kami memiliki kasus ketika elemen terakhir bukan nama belakang seperti:
Jadi, mungkin bidang sufiks nama atau seseorang harus menguraikan elemen terakhir mencari sufiks yang diketahui berdasarkan budaya untuk mendapatkan nama belakang yang benar.
Jadi, Anda sebaiknya menyimpan nama dalam satu elemen (Nama lengkap) dan kemudian menerapkan rutin "standardisasi / sanitasi" untuk menguraikan elemen tertentu sesuai kebutuhan. Ada strategi serupa untuk alamat. Mereka biasanya dikumpulkan sebagai satu string dan kemudian dikirim ke layanan untuk mengurai bagian-bagian.
sumber