会員登録で必要なID、パスワード、メールアドレスあるとします。

ログイン時はIDとパスワードを使ってログインします。

MySQL(またはその他のDB)でのフィールド構成はどのようにしていますか?

私は下記のようにしています。
+----------------------+---------------+--------------+---------+
| (テーブル名)_id | user_id | password | email |
+----------------------+---------------+--------------+---------+


別の方法や、「こうした方が良い」等の
ご指摘・アドバイスがありましたら、教えていただければと思います。

回答の条件
  • 1人2回まで
  • 登録:2007/09/04 19:00:16
  • 終了:2007/09/06 11:39:39

回答(4件)

id:KUROX No.1

KUROX回答回数3542ベストアンサー獲得回数1402007/09/04 19:06:27

ポイント23pt
(テーブル名)_id user_id password email

利用目的が不明だが、(テーブル名)_id は必要ないと思う。

id:kt26

利用目的は個々にゆだねます。あくまでも会員登録時の「例」ですので。


それから、(テーブル名)_idはauto_incrementで識別番号を振る為に用意しています。

2007/09/04 19:32:15
id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982007/09/04 20:31:07

ポイント23pt

パスワードは、万が一のため、暗号化して保存したほうがいいでしょう。

デコードの仕組みも、一部の人にしか わからないものにしたほうがいいです。

質問にあがっている項目は、それでいいと思います。

あとは、最終ログイン日付などあったほうがいいかもしれません。

または、ログイン回数など。

そのシステムの内容や目的によって 必要な項目は変わってきます。

id:b-wind No.3

b-wind回答回数3344ベストアンサー獲得回数4402007/09/04 21:30:24

ポイント22pt

フィールド構成ってどこまでを指しているのかは良く分からないけど、とりあえずそれぐらいのフィールドは大体作る。他はサイトによって異なる。

あえて言うなら、last_login を datetime 型で作るぐらいか。

id:matsu-boolean No.4

matsu-boolean回答回数43ベストアンサー獲得回数72007/09/05 00:42:58

ポイント22pt

 自分が作るときは(テーブル名)_idはつけないですね。ただし、user_idが変更される可能性のあるカラムなら、(テーブル名)_idを主キーとしてつけると思います。

 パスワードは、ハッシュ関数(SHA1とか)で、元に戻せない状態にして保存すればいいと思います。また、パスワードが同じ人がいるときにハッシュ値が同じになるのが良くないので、実際には user_id+passwordの値をハッシュ化して格納すればいいと思います。

 認証処理では入力されたuser_id+passwordをハッシュ化したものと、passwordカラムに保存された値を比較すればよいということです。

 この方式の場合、万一 password カラムが覗かれてもパスワードが分かず、ユーザー認証画面からの不正ログインが出来ない利点があります。(まあ、DB覗かれてる時点でダメなんですが…)

  • id:kt26
    みなさん、回答ありがとうございます。ただ、今回は構造と言うよりも「フィールド名の付け方」の方が自分の意図にあったかも知れません。単純にみなさんがよく使うフィールド構成(フィールド名も含めて)を知りたかったというのがありますので。だから自分がよく使うパターンを例に出しました。

    質問の仕方・書き方が悪かったみたいで、すみません。
  • id:taknt
    フィールド名は、質問にあるものでいいと思いますよ。

    気をつけるとしたら 予約語などを 使わないようにするということですね。

    あと使えない文字なども。

  • id:KUROX
    >それから、(テーブル名)_idはauto_incrementで識別番号
    >を振る為に用意しています。

    user_idでユニークをとらないと駄目だとおもうので、
    ここの項目は必要ないと思います。


  • id:b-wind
    >>それから、(テーブル名)_idはauto_incrementで識別番号
    >>を振る為に用意しています。
    >user_idでユニークをとらないと駄目だとおもうので、
    >ここの項目は必要ないと思います。

    自分もそうする事が多いけど、設計によっては必要かも。
    user_id 項目がログインの入力項目で変更可能にするときとか。
    その場合項目名は login_id か login_name が妥当でしょうけど。
    この場合退会ができたりするとユニークですらなかったりする場合も。
  • id:KUROX
    理由があれば良いと思いますよ。
    ないのなら、後々面倒なことになりかねないので。
    どう見ても、主キーとかに設定されかねない感じが
    するので。

    +++++++++++++++++++++++++++++++++++++++++++++++
    >ログイン時はIDとパスワードを使ってログインします。
    の条件で、user_id が一意でないと認証できないと
    考えました。

    画面に入力する項目がユニークでない限り駄目だと
    思います。
    ---------------------------------------------
    (テーブル名)_id
    auto_incrementで識別番号
    とのことですが、利用目的が分からないので、本来はなんとも
    いえないですが、これを主キーにするとはまると思うので
    ないほうが良いと考えました。

    あと、(テーブル名)_を頭につけるあたりは、昔の古い
    RDBじゃない設計の名残のような感じもしました。

    もし残すのなら、目的は不明ですが、
    [テーブル名][auto_ID]のようにフィールドを分けたほうが
    使い勝手が良いと思います。そういう設計は見たことがあります。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません