我有以下(虚构的)表格:
╔════════════════════╗        ╔════════════════════╗
║ 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在B_Course_Person表中添加一列,但随后我得到了数据冗余......
什么是最好的方法,在这里?
谢谢,