会員登録を行い、登録会員が掲示板などのサービスを利用できる様にしたいと考えています。


このような目的の場合の会員管理部分のテーブル作成について教えてください。

登録したい内容
・番号
・登録時刻
・登録時のIP
・ユーザーID
・名前
・メールアドレス
・自己紹介
・生年月日
・住所
・自己紹介写真ファイルの有無

希望条件
・MySQL 4.x で使用
・ユーザーIDは登録後も変更できるようにしたい
・写真は画像ファイルとして別に保存したい
・項目はサービスの追加に伴い追加しやすい様にしたい
・登録数は1万件程度と仮定してください。

上記条件でテーブルを作るとした場合、一般的にはどのようにするかを教えてください。
テーブルは一つにするのか、複数に分けるのか、分けるとしたらどの項目で分けるのか
どの項目を主キーにし、データ型はどうするのか
ユーザーIDを変更できる様にしたいがやめた方が良いのか
会員管理を行う場合、他に追加した方が良い項目があるのか
登録時刻やIPはトラブルが発生時の為にと考えているのですが不要なのか

条件はあくまでも希望です。
定石やご提案もありましたらお願いします。

回答の条件
  • 1人1回まで
  • 登録:2008/05/10 21:50:24
  • 終了:2008/05/17 21:55:03

回答(3件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/05/10 22:52:31

ポイント35pt

思いついたことを列挙します。

  • リレーションを張れる項目は無さそうなので、1つのテーブルで良いと思います。
  • [番号] と [ユーザーID] は両方ともユニークキーだと思うので、[ユーザーID] に統一し、[ユーザーID] を主キーにしたらどうでしょうか。
  • 登録時刻については、DBサーバが世界中どこにあっても対応できるよう、Date型より String で RFC 3339 形式で登録されることをお勧めします。
  • 更新時刻もあった方がいいでしょう。
  • 名前は姓/名を分け、各々にフリガナも加えたほうがいいと思います。
  • メールアドレスは複数登録(例:PCと携帯)する必要はないでしょうか。
  • 住所は、都道府県/市町村/それ以降/ビル・マンション名の4フィールドにすることが多いです。都道府県や市町村は標準コードが定められているので、コード参照にしてもいいと思います。「市町村コード一覧」を参考にしてください。
  • 連絡先電話番号は必要ないでしょうか。
  • 日本語で登録する氏名や自己紹介については、文字コードに注意してください。
  • この他、会員用ログインパスワードが必要でしたら、それはテーブルを分けたほうが良いです。ユーザーIDでリンクする形にしますが、パスワードそのものは非可逆暗号をかけて登録するのが定石です。
  • また、パスワード・リマインド機能があるなら、質問と回答を登録するテーブルも、パスワードと別に用意する必要があります。
id:worldtravel

ありがとうございます。

勉強になる情報が沢山ありました。

番号とユーザーIDに関しましては、あとから変更が簡単にできる様に番号と分けようと考えているのですがどうでしょうか。

IDに統一してしまうと、仮に複数の掲示板への書き込みがあったとした場合、全ての書き込み者のIDを書き換えなければならず大変かなと思いましたので...

番号を投稿者としておけば、IDを変えても掲示板のデータは何も変更する必要がないかと...

どうなのでしょうか。

2008/05/10 23:00:14
id:ken33jp No.2

ken33jp回答回数928ベストアンサー獲得回数132008/05/10 22:59:59

ポイント23pt

>どの項目を主キーにし、データ型はどうするのか

番号を主キー

>ユーザーIDを変更できる様にしたいがやめた方が良いのか

別にOK。ただ重複IDができないようにユニーク属性をつけておいたほうが

安全

>登録時刻やIPはトラブルが発生時の為にと考えているのですが不要なのか

とりあえず記録しておくほうがよい。

id:worldtravel

ありがとうございます

2008/05/10 23:04:09
id:hirotow No.3

hirotow回答回数131ベストアンサー獲得回数102008/05/12 09:08:19

ポイント22pt

最低限必要な情報(ID、パスワード、メールアドレス、ニックネーム、秘密の質問等)と付加的な情報(住所氏名電話番号など)はテーブルを分割すべきだと教わったことがありますので、これを参考にして、

User_Basic:

User_ID AutoNumber(8) Primary Key

User_Name VarChar(16) Unique

User_Handle NVarChar(16) Unique

User_Password Number(2) //SHA128

User_Reminder_ID Number(1) //別途秘密の質問マスタで管理

User_Reminder_Answer Text(256)

User_Additional:

User_ID Number(8) Foreign Key→User_Basic.User_ID

//その他

のような感じでいいと思います。

パスワードなどはハッシュで管理しておき、回答ではなく再指定としておくと、初心者受けは悪いですが中級者以上には堅牢なイメージをもたれます。

住所などは他の方が記述されているので割愛しますが、事業所やビル固有の郵便番号(霞ヶ関のビルや大学の寮など)にも対応しておくとよいです。

id:worldtravel

ありがとうございました。

2008/05/12 09:55:21
  • id:pahoo
    > 番号を投稿者としておけば、IDを変えても掲示板のデータは何も変更する必要がないかと
    それであれば、ken33jp さんが回答しているとおり、番号を主キーにすべきですね。
    私も、重複IDができないようにしておいた方がいいと思います。

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

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

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

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