• 郵便番号のDB上の
    型について質問です。 今回int型にしていますが、...
  • guest 
    郵便番号のDB上の型について質問です。

    今回int型にしていますが、その場合「001-0011」のように先頭の数桁がゼロの郵便番号はゼロが落ち「10011」にように登録されます。

    その後プロフィールを表示すると「10011」となるので、画面表示する際には0パディングが必要かと思います。
    下記サイトで0パディングの方法を知ったのですが、
    そもそもとして郵便番号を文字列にしないのは、何か理由があるのでしょうか。

    ご回答のほどよろしくお願いいたします。

    参考サイト:https://qiita.com/gnk0096/items/a0097a83b2a879b22ab9
    回答 2

     
    ご指摘の通り、郵便番号はint型ではなく、text型にするべきです。


    上辺での理解だけで作ってる気にならないよう、わざとint型にして試しています。
    よく気づきましたね!
    他にもまだありますので見つけてみてください。

    guest 
    ご回答ありがとうございます。
    text型にしたほうがよいのですね。

    他については会員idなどのidについても前0に意味があるので同様なのではと考えています。

    返信者画像

    ウェブカツ!!コーチ 
    講師からの回答
    そちらですが、int型でやるのであればMySQLだとzerofillをつけてやる方法もあります。
    数値型の方がsqlの実行速度が速いというのも一つあります。(今回程度のテスト用サイトであれば、ユーザーがとても多くてレコードが大量にあるわけでもないので、気にするほど変わるものではないですが)

    http://blog.livedoor.jp/mor_y/archives/1422481.html

    他にも文字列にするのであればtext型よりvarchar(7)にしている現場の方が多いかもしれませんね。
    この辺りは現場によって様々です。

    idに関しては残念ながらハズレで、前0には意味がないため数値型が一般的です。

    学籍番号のように必ず8桁にしなければいけないとかという場合は、idカラムとは別に学籍番号のカラムを用意して
    varchar(8)もしくはint(8)のzerofillにしますね。
    id自体は内部だけの管理用(SQLで検索する時くらいに使う)として使い、外部にも公開する用(生徒からお問い合わせが来た時にその学籍番号で検索する)として学籍番号カラムを別でもつ。
    という感じですね。

    guest 
    詳細に解説いただきありがとうございます。
    内部と外部で別カラムを持ったりするのですね。勉強になります。

    ほかのカラムの型誤りは見てみてもわからないのですが
    このあとのレッスンの中で見つけていきます。

    返信者画像

    ウェブカツ!!コーチ 
    講師からの回答
    他のところは型誤りの部分ではなく、ソースコードにあります。
    ソースコードにいくつかロジック誤り、記述誤りなど不具合があるので、一つ一つ動かしてみたり、コードを理解していくと気付くようになっているので、是非見つけていってください。
    今回気付かれたようにサンプルだからと目の前にあるコードを常に信用せず、引き続き自分の頭で正しいかを判断出来るようにしていきましょう。

    guest 
    分かりました。ありがとうございます!