2012-03-07 3 views
1

私のデータベースのテーブル構造をモデル化するのに助けが必要です。MySQLの構造をモデル化して認証を処理するには?ユーザー情報を分離して

教師と学生の2つのテーブルがあります。そして、認証に対処するために、私は という別のテーブルを持っています:ユーザー。私は教師に関する情報と、ログイン(ユーザテーブル)に関する情報を別々にした 学生を維持したいと思っています。例えば

:2つの表に分離

 teacher 
----------------- 
| id | name | 
----------------- 
| 10 | lorem | 
| 20 | ipsum | 
| 30 | dolor | 
----------------- 


    student 
----------------- 
| id | name | 
----------------- 
| 5 | amet | 
| 6 | sitt | 
| 7 | dolum | 
----------------- 

情報。 ユーザテーブル:私はそれだと思った

 user 
----------------------------------------------------------------- 
| id | teacher_id | student_id | login | password | 
----------------------------------------------------------------- 
| 1 |  10  |    | lorem_lo | ******* | 
| 2 |  20  |    | ipsum_lo | ******* | 
| 3 |  30  |    | dolor_lo | ******* | 
| 4 |    |  5  | amet_lo | ******* | 
| 5 |    |  6  | sitt_lo | ******* | 
| 6 |    |  7  | dolum_lo | ******* | 
----------------------------------------------------------------- 

ソリューション。私はあなたの意見を聞いています。 それは良い解決策ですか?

ありがとうございます。

P.Sは:私は、MySQL(InnoDBテーブル)を使用してい

答えて

2

ユーザテーブルから空のフィールドを排除するために、あなたがこれを行うことができます:

-------------------------------------------------- 
| id | user | level | login | password | 
-------------------------------------------------- 

userは、すべての生徒と教師IDのとlevelが含まれて教師と学生のための2ため1が含まれています。

この場合、レベルの列を使用してアプリでアクセスを作成できます。

もう1つの方法は、生徒と教師のトラフレベルを区別するテーブルですが、ベストプラクティスではありません。

+0

ちょうど私が言うことをしようとしていたもの:D – Th0rndike

+0

はい:私はアプリケーションのページにアクセスするためのレベル(役割)とログインモジュール – Crsr

+1

が必要なので、最高の解決策だと思います(@ Th0rndikeと@Crsr)は非常に高速です。答えをありがとう。解決策は非常に興味深いです! – Tulio

0

はい、これは満足に見えます。

ログイン後に行う必要があるのは、teacher_idまたはstudent_idがあるかどうかをチェックして適切に処理することだけです。

2

正規化構造は少し異なるはずです。私は別の方法でログインテーブルを作成します:id、person_id、ロール、ログイン、パスワード。そうすれば、教師と生徒を分けることなく、idカラムを1つだけ持つことができます。ロールの列には、ある人物が学生か教師かを示し、各行にperson_idの外部キーのみを使用します。

関連する問題