web-dev-qa-db-ja.com

姓名を別々にモデリングする

新しいシステムを設計するときに誰かが考慮すべき引数はどれですか。人の名前を1つのフィールドとして保存するか、姓名として個別に保存する必要がありますか。

単一分野の長所:

  • よりシンプルなUI
  • 非常に長い名前を持っている人の名前を入力しようとするとき、あいまいさはありません(多くの場合、姓/名などは明白ではありません。)
  • タイトルを処理する際の複雑さが軽減されます(たとえば、「M.D」または「Dr.」を入力するための個別のフィールドは不要です)

分割フィールドの長所:

  • パーソナライズされたコミュニケーションが可能「Dear Mr X」または「Dear Julie」
  • 使用するWebサービスで姓名が個別に必要な場合は、簡単に提供できます。
  • 厳格な識別要件(医療、政府など)を持つあらゆる業界に適した選択肢
  • 常に単一のフィールドの選択肢に戻ることができるため、より安全な選択

上記にリストされていない追加引数がありますか?

更新:問題は、どのソリューションに対して追加(=質問にリストされていない)引数をリストできるかです。賛否両論ではなく意見を述べると、議論が間違った方向に進むと思います。各開発者はこの問題について自分の決定を下す必要があります。この質問の目的は、必要に応じて評価できる重要な引数のリストを作成することです。

33
Istvan Devai

名と姓は有用な概念ではありません。名前は国によって異なる働きをします。ほとんどのアジアの国では、姓が最初に書かれますが、それでも並べ替えに使用されます。つまり、姓で並べ替えると、並べ替えが誤ったり、姓で表示されたりします。そして、アイスランドのように、姓をまったく使用せず、父親の名を使用する国もあります。したがって、指定された名前で並べ替えるだけです。

この点では、「名」と「姓」(または「姓」)という用語の方が適していますが、絶対に必要な場合(つまり、パスポートなどの公式文書にあるため、必要になります)を除いて、これらは避けます。それらは物事をより複雑にするだけです。

  • パーソナライズされたコミュニケーションが可能「Dear Mr X」または「Dear Julie」

あなたが与えられた人を彼らの名、姓、または何で呼ぶべきかわからない場合を除いて。そして、私が対格を持つ言語について始めないでください。あなたはできない一般的に、主格から対格を導き出します。いいえ、単にユーザーに何を呼び出すかを尋ねた方がよいでしょう。

  • 使用するWebサービスで姓名が個別に必要な場合は、簡単に提供できます。

If。別のサービスに依存している場合、あなたは彼らの悪い選択に縛られています。独自の設計にはメリットがありません。

  • 厳格な識別要件(医療、政府など)を持つあらゆる業界に適した選択肢

いいえ、これは間違ったの選択です。公式文書では一般に、あいまいさの少ない「名」と「姓」(または「姓」)という用語を使用します。

  • 常に単一のフィールドの選択肢に戻ることができるため、より安全な選択

実際、アジアの名前のあいまいさのために、あなたができることはそれほど明確ではありません。

50
Jan Hudec

重要な唯一の議論はシステムの要件は何ですか?

1つの文化だけを扱う必要がありますか?もしそうなら、その文化に準拠してください。それ以外の場合は、国際化を計画します(他の人が指摘したとおり)。

政府のフォーム、ヘルスケア、その他の法的/システム要件に対応するためにデータを取得する必要がありますか?それらが指示するものは何でもフォローしてください。それが姓名を意味する場合は、それを行います。それが別のことを意味する場合は、それを行います。

姓と名のAPIの要件はありますか(または、YAGNIを無視するのに十分なほど妥当か)そこで意味のあることをしてください。

パーソナライズされたコミュニケーションが必要な場合は、誰かに自分の好きな名前を尋ねて保存するのが合理的ですか?

システムの要件によって、実行する内容が決まります。あなたがしなければならないことを行い、残りはYAGNIです。

32
Becuzz

名前を表示および/または利用する方法が複数ある場合は、おそらく別々のフィールドが必要になります。データ入力とともに、フィードバックを提供して、それがどのように利用されるかをユーザーに示すことができます。それらをどのように組み合わせると、将来、単一のフィールドに変換される可能性があります。

次のようなラベルを付けます:あいさつまたは表示名:名+姓整理/分類:姓、名

これが将来どのように使用されるかわからないときは、分割名から始めて、本当に必要なすべてだとわかったら、それらを1つのフィールドに結合できます。単一の名前フィールドを姓と名に分割するアルゴリズムを作成するのは難しいことではありませんが、いくつかを間違えると、人々は名前の間違いを嫌いになります。分割フィールドを使用すると、ユーザーは名前がどのように使用されるかを確認するときに、名前の入力方法を調整できます。それらを永続的な単一の名前フィールドに結合することはリスクが低くなります。

5
JeffO

@JanHudecが言ったことの多くに同意しますが、少し詳しく説明したいと思います。

  • 実際の要件は何かを知る必要がありますが、情報を再度組み合わせた後で分割するよりも、情報を組み合わせる方が簡単です。
  • ルールはロケールや文化によって異なる可能性があるため、並べ替えは常に課題となります。
  • 多くの文化はあなたの文化と一致しないため、悪い仮定につながります。 (これがヤンの最大のポイントです)

用語は重要です

与えられた名前のような用語には意味的な意味があり、データベースは常にデータのセマンティクスを反映する必要があります。 などの用語は、通常、名前の機能に関する英語とアメリカの考えに基づいて位置的な意味を持ちます。データのセマンティクスには適切な用語を使用してください。

どこまで分解する必要がありますか?

title(Mr. Dr. Mrs.など)またはordinal(Jr.、Sr.、III、など)、さらには証明書(PhD、MS、PCAMなど)であり、状況や目的によっては重要になる場合があります。

多くのロケールには、複数の姓(父方と母親)の概念があります。フォームに記入するとき、アメリカのフォームで「姓」の父方の姓を使用したり、父親の名前(Janson )。

アメリカではミドルネームが1つ以上あるのが一般的ですが、家族以外では無視されることがよくあります。

ソート

ソート名専用のフィールドがあると便利です。これにより、レコードを作成するときにルールを明確にすることができます。また、国境を越えて名前が正しい順序でソートされていることも確認します。

一般的な慣行

実際の要件は、名前についてどの程度正確である必要があるかを決定します。政府や銀行のWebサイトを作成している場合は、Facebookのような非公式なものよりも、名前を保存および処理するための要件が​​多くなります。

非公式のガイドライン

  • ユーザーが知りたい方法を説明する1つのフィールドを持っている
  • 並べ替えて表示するのにその1つの名前を使用する

セミフォーマルガイドライン

  • ニックネームのフィールド、またはユーザーの対応方法
  • 姓と名の2つのフィールドがあります(姓はオプションにする必要があります)
  • ロケールと名/姓のコンボに基づいてソートフィールドを計算します
  • ユーザーに直接連絡するときにニックネームを使用する
  • 人をリストするときに正式な名前を使用する

正式なガイドライン

  • これらは、サポートしているエンティティの既存のポリシーと手順によって決まります
  • サポートする名前パーツの最大数と同じ数のフィールドが必要です。フィールドは、それらが何であるかについて意味的に名前が付けられます。
  • セミフォーマルの場合と同様に並べ替えを処理する並べ替えフィールドを含める
  • 表示は通常、既存のポリシーと手順によっても決定されます。あなたはそれらに慣れる必要があります。
5
Berin Loritsch

@JanHudecが指摘したことと同意することは別として、多くの国では複数の姓があるため、1つの姓フィールドは無関係である可能性があることにも注意する必要があります。例えば。スペインでは、姓が2つあり、状況に応じてどちらか一方または両方を使用します。

また、文化によっては、姓で電話をかけると失礼に見える人もいれば、逆の場合もあるので、想定に基づいてコミュニケーションをパーソナライズするべきではありません。

また、一部の文化では「Mrs」と「Ms」のような形式に重点を置いており、特定のケースに応じてこのWordを姓または名と組み合わせる場合もあります。

だから私はあなたが単一の名前フィールドとおそらくユーザーが入力する追加のフィールドを持っているソリューションに傾倒します-ユーザーに向ける方法のヒント-オンラインでチケットを購入するときに多くの航空会社がするのと同じようなものです。これにより、前述の外部Webサービスで必要な場合に名前を分割する方法の問題も解決する場合があります。

4
KjMag

@JanHudecと@KjMagが指摘したことにさらに加えて、英語に非常に近い文化/言語でも、これは問題になります。ドイツ語を例にとろう。あなたは、Vornamen、First names、Nachnamen、Last name、およびRufnameと呼ばれる名前の概念を持っています。私の父を例にとると、彼には3つの名があり、出生証明書には、Christoph Stephan Andreasの順にリストされています。そして、彼には姓が1つあります。彼の名前は何と呼ばれていると思いますか?

正解:アンドレアス。それが彼のルフネームです。アメリカでは、それを彼のファーストネームとしてアメリカのテンプレートに合わせています。ドイツでは、姓の最後があなたの名前だと思っているかもしれませんが、私の兄弟はChristoph Sebastian Herbert Mariaです。 (私はバイエルン人です)または妹のクリスティン・ガブリエレ。それらが呼ばれる名前は何だと思いますか?それぞれセバスチャンとクリスティーン。

氏名の1つのフィールドを言う答えを3番目にします。そして、私はそれに追加します:姓/姓の別のフィールドを追加して、質問を提起します。リストではどの名前で並べ替えますか?そして最後のフィールド:どのように対処したいですか?

4
Hangman4358