次の(架空の)テーブルがあります。
╔════════════════════╗ ╔════════════════════╗
║ Course ║ ║ Person ║
╠══════╦═════════════╣ ╠══════╦═════════════╣
║ ID ║ int ║ ║ ID ║ int ║
║ Name ║ varchar(50) ║ ║ Name ║ varchar(50) ║
╚══════╩═════════════╝ ╚══════╩═════════════╝
╔════════════════════╗ ╔═════════════════════╗
║ Occupation ║ ║ B_Occupation_Person ║
╠══════╦═════════════╣ ╠══════════════╦══════╣
║ ID ║ int ║ ║ Person_ID ║ int ║
║ Name ║ varchar(50) ║ ║ Ocupation_ID ║ int ║
╚══════╩═════════════╝ ╚══════════════╩══════╝
╔═════════════════╗
║ B_Course_Person ║
╠═══════════╦═════╣
║ Course_ID ║ int ║
║ Person_ID ║ int ║
╚═══════════╩═════╝
Occupation
テーブルには、 と の 2 つの行がありStudent
ますTeacher
。
B_Occupation_Person
結合テーブルを使用すると、すべての人に職業を与えることができ、結合B_Course_Person
テーブルを使用すると、教師をコースに関連付けることができます。
私の問題はB_Course_Person
、教師のみを含めることができるようにしたいということです。
私の最初のアイデアは、このテーブルにチェック制約を追加することでしたが、UDF を使用してテーブルから人の職業を取得することによってのみ実行できB_Occupation_Person
ます。ここで読んだことから、チェック制約でUDFを使用するのは悪いことです。
Occupation
私の2番目のアイデアは、テーブルに列を追加することB_Course_Person
でしたが、データの冗長性が得られました...
ここで、最善の方法は何ですか?
ありがとう、