銀行口座番号をどの型で保存するべきか
現在、RailsでMySQLを用いたデータベース設計を考えています。
一度、Integer型で保存する形で実装しましたが、先頭が0から始まる銀行口座番号の場合はゼロが消えてしまいます(あたりまえなのですが・・・)
一般的に銀行口座番号をデータベースで管理する場合、設計としては文字列型として管理するのが一般的なのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答7件
0
計算しない項目は文字型。というセオリーがあります。
投稿2016/08/09 12:35
総合スコア876
0
「文字列」派の回答ばかりですので、あえて(笑)別の意見を提示させていただきます。
以下のリンクはデータベース実践入門などの著者である奥野 幹也氏のブログです。
(リンク内では学籍番号を話題にしています)
http://nippondanji.blogspot.jp/2013/12/blog-post_8.html
桁数とは、本質的には表示の問題である。
(中略)学籍番号は数値なのだからデータベース上では数値として表現するべきであり、表示の問題はアプリケーションに任せるべきなのだ。
なぜ「数値は数値として表現するべき」なのかというと、以下が理由になると思います。
さらに言うと、学籍番号にとって適切なドメインとは有限個の自然数(0を含まない非負の整数)の集合であって文字列ではないということだ。
私の解釈では、学籍番号(や、口座番号)のドメインは「0を含まない非負の整数」なのだから、DB上のカラムもその通りに定義しないと、例えば
- アプリケーションの不具合によって負数や数字以外の文字が混入してしまう事態を防げない
- "1"、"001"、"0000001"を同じ口座番号とみなすことが難しくなる
などの不都合が生じる可能性がある、ということだと思います。
ちなみに、実は私も「どちらでも良いと思う」派です(笑)。
それぞれのメリット・デメリットを把握した上で、
azuno_mix 様が構築されようとしているシステムにとって都合の良い方を選択すれば良いと思います。
蛇足ながら、ドメイン設計に関して参考になりそうなリンクを、いくつか紹介させていただきます。
http://nippondanji.blogspot.jp/2013/12/blog-post_4.html
http://nippondanji.blogspot.jp/2013/12/id.html
投稿2016/08/09 10:29
総合スコア4791
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/10 14:29
2016/08/13 01:31
2016/08/13 04:18
0
私も文字型で保存すべきと考えます。
口座番号ということは、顧客データレコードに付随する項目かと推察いたしますが、
そうであれば、かなりのレコード件数になるかと存じます。
当然、顧客データレコードにはシーケンスキーが割り当てられてているかと思いますので、そちらのほうを数値データとしていれば、数値データから口座番号にたどり着く方法と、文字検索から口座番号にたどり着く方法をとることができます。
気おつける点としては、口座番号の仕様にもよりますが、数字の文字列のみということであれば、データベースに登録前に、プログラム側で数字以外の文字列が混ざっていないかと、他のレコードの口座番号と重複していないかをチェックする必要があるかと存じます。
投稿2016/08/09 09:21
総合スコア440
0
どちらでも良いと思いますが、文字列のほうが扱いやすそうですね。
重要なのは、他システムと連携する際の扱いです。
他システムと連携するときのI/F仕様は予め决定できないので、その際にどのように受け渡すかを
先方と調整する必要があります。
参考までに、全銀協規定フォーマットです。
http://www.hyogokenshin.co.jp/internet_bk/pdf/format1.pdf
投稿2016/08/09 09:00
総合スコア6621
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/10 14:32