まず、自己参照しないようにする方法を見つけようとします。おそらく、personsテーブルだけを作成し、別のテーブルをリンクにすることで(users.instructor_idリンクにinstructorsは、フィールドinstructor_idとuser_id、instructors.instructor_idが使用されusers.instructor_id、現在のインストラクターのリストを取得するためにクエリを実行できますSELECT * FROM users WHERE EXISTS (SELECT * FROM instructors WHERE instructors.user_id = users.user_id))、または最良の場合は学生がいますテーブルとインストラクターテーブル。
インストラクターがinstructor_idを持たないことが確実な場合は、そのフィールドがnull(または-1などのデフォルト)であるため、ユーザーが学生であるかどうかを確認できるはずです。
テーブル構造を再構築して自己参照しないようにすることをお勧めします。これは、長期的には、インストラクターが別のインストラクターに割り当てられている場合や、学生が何らかの理由で教えている場合に役立ちます。