我有以下(虚构的)表:
╔════════════════════╗ ╔════════════════════╗
║ 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
表中,有两行: Student
和Teacher
。
B_Occupation_Person
绑定表允许我为所有人分配职业,而B_Course_Person
绑定表允许我将教师与课程关联起来。我的问题是,我想确保
B_Course_Person
只包含教师。我的第一个想法是在这个表上添加一个检查约束,但我只能通过使用UDF从
B_Occupation_Person
表中获取人的职业来实现。从我读到的这里来看,在检查约束中使用UDF是不好的。我的第二个想法是在
B_Course_Person
表中添加一个Occupation
列,但这样会导致数据冗余...那么,这里最好的方法是什么?
谢谢,
[feature-request]
的话题。 - Ben