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