0

インストラクターと学生の間に自己参照関係のあるユーザーテーブルがあります。現在、学生はinstructor_idforeign_keyを介してインストラクターと関係があります。学生には常にインストラクターがいて、インストラクターが学生になることはありません。

とはいえ、承認の観点から、ユーザーがinstructor_idフィールドに値を持っているかどうか、またはその逆の場合、ユーザーが学生であるかどうかを単純に判断することは問題ありませんか?または、ユーザーロールを明示的に定義する必要がありますか?

4

1 に答える 1

2

まず、自己参照しないようにする方法を見つけようとします。おそらく、personsテーブルだけを作成し、別のテーブルをリンクにすることで(users.instructor_idリンクにinstructorsは、フィールドinstructor_iduser_idinstructors.instructor_idが使用されusers.instructor_id、現在のインストラクターのリストを取得するためにクエリを実行できますSELECT * FROM users WHERE EXISTS (SELECT * FROM instructors WHERE instructors.user_id = users.user_id))、または最良の場合は学生がいますテーブルとインストラクターテーブル。

インストラクターがinstructor_idを持たないことが確実な場合は、そのフィールドがnull(または-1などのデフォルト)であるため、ユーザーが学生であるかどうかを確認できるはずです。

テーブル構造を再構築して自己参照しないようにすることをお勧めします。これは、長期的には、インストラクターが別のインストラクターに割り当てられている場合や、学生が何らかの理由で教えている場合に役立ちます。

于 2012-10-01T20:24:37.753 に答える