0

私は、教師とその他の 2 種類のユーザーを持つ Web アプリケーションを持っています。accountinfo が存在するユーザーテーブルを作成しました。アカウント情報とは、メールアドレス、ユーザー名、パスワード、lastactivitydate などを意味します。各ユーザーにはプロファイルがあり、プロファイルには年齢、自己紹介、住所などのデータが含まれているため、この情報はユーザー テーブルにあるものとは本質的に異なります。ユーザー テーブルを指す UserId の FK を持つ別の UserProfile テーブルを用意します。

私はこのデザインに非常に満足していましたが、教師のプロフィールには他の人よりも多くのフィールドがあることに気付きました (他の人は将来、教師のプロフィールとは異なるフィールドを追加する可能性があります)。教師の場合、たとえば彼の学校などが必要です。したがって、追加のデータを含む追加の TeacherProfile テーブルが必要です。つまり、教師のすべてのデータを取得するために、3 つのテーブル間で結合を行うことになります: User、BaseUserProfile、TeacherProfile。したがって、基本ユーザープロファイルデータを別のテーブルに分離するのが良い考えだったかどうか疑問に思っています.そのテーブルをユーザーテーブルとマージする必要がありますか? この問題には他にどのようなオプションがありますか?

4

1 に答える 1

1

2種類のユーザー

これらは通常 と呼ばれrolesます。したがって、通常は次のテーブルがあります。

  • tblUser
    • ユーザー ID (PK)
    • 役割 ID (外部キー)
    • Eメール
    • 最終ログイン
    • パスワードハッシュ
  • tblUserProfile
    • ユーザープロファイル ID (PK)
    • ユーザー ID (外部キー)
    • 教師と生徒の両方の列が含まれています。一部の値はNULL生徒用です
  • tblUserRole
    • 役割 ID (PK)
    • 役割名

これは学習作業になる可能性が高いことは理解していますが、それでも優れたセキュリティ プラクティスの使用を開始します。パスワードは (暗号化されているかどうかに関係なく) まったく保存しないでください。代わりに、ハッシュの生成に使用されるパスワードとソルトの安全なハッシュを保存します。

于 2013-06-10T14:58:28.090 に答える