ユーザーデータベースの標準的な実装はありますか?


14

Webサイトに基本的なパーソナライズされたユーザー機能を実装する必要があります。このタイプのデータベースの標準構造はありますか?すべてのユーザー情報とデータを単一のテーブルに入れて、各ユーザーが独自の行を持っているのが一般的な慣行であるか、この情報を異なるテーブルに分割して一緒にリンクする必要があります(おそらく効率のためですか?)この時点で、しかし、私は明らかにあまりにも早くパスワードの暗号化をしたいと思うでしょう。

私はグーグルで探していたものを見つけようとしましたが、役に立ちませんでした。質問にさらなる説明などが必要かどうかをお知らせください。

回答:


17

典型的な正規化標準を使用することをお勧めします。行ごとに1人のユーザー。

  • ユーザーID(増加するbigint)
  • ユーザーの一般名(サイトに表示される)
  • ユーザーのメールアドレス
  • パスワードソルト(すべてのユーザーに固有、アカウントの作成時に挿入)
  • パスワード(ソルトでハッシュ-MD5またはSHA1、お好み)
  • アカウントが作成された日付

残りはあなたのビジネスルールを与えられたあなた次第です。


8

「依存する」大きな古いファッションのために行かなければなりません。

もちろん、このテーブルには何らかのキーが必要になります。UserIDから始めることができます。これは単なる増分INT(または210万人を超えるユーザーがいる場合はbigint)になります。

多くのデータベースがメインのユーザーIDとしてGUIDも使用しているのを見てきました。しかし、それはPKのGUIDを使用して、まったく異なるワームの缶を開きます。

次に、データベースをどのように正規化するかを決定する必要があります。ユーザーに複数のメールを許可しますか?複数の電話番号?その場合、それらは別のテーブルにある必要があります。

メインユーザーテーブルは次のように保持します。

  • 使用できる何らかのIDまたはPK
  • 名/姓または単なるユーザー名
  • ユーザーのある種のステータス(アクティブ、無効など)-(ステータステーブルにリンクしているTinyint)
  • 作成日

それが出発点になるはずです。

そこから、保存する内容に基づいて他の列を追加できます。電子メールは、電子メールテーブルへのリンク、アドレステーブルへのアドレスなどにリンクできます。パスワードにはhash + saltを使用できますが、openidを検討しましたか?

-私は非常にあなたがが、この記事読んでお勧めしますhttp://www.sqlservercentral.com/articles/data-modeling/71725/を


0

ユーザーの認証に関するものであれば、LDAPを使用します。すでにデータベースを使用しており、他のテーブル(注文、製品など)がある場合は、ユーザー用に個別のデータベースを作成しないでください。これらのテーブルを結合することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.