我的数据库中有3个表,一个用于学生,另一个用于课程,第三个用于存储每个学生从课程中选择的内容。我想阻止学生不止一次选择相同的课程。我应该在第三个表的Insert语句中提供什么条件?
由于
答案 0 :(得分:5)
您的StudentCourse表应该对(StudentId,CourseId)表有唯一约束。
作为替代方案,您可以在StudentCourse表上创建主键作为(StudentId,CourseId)上的复合键。
答案 1 :(得分:1)
虽然数据库中的每个表都必须具有主键约束,但在执行大多数数据库维护任务时,自动生成的值通常很有用。但是,主键本身不会保护您免受可能包含重复的用户生成或用户捕获的数据的影响。输入“唯一”约束!这是一个非常强大的表级约束,您可以根据所选的表列应用于表,这可以极大地帮助防止数据中的重复。例如,假设您有一个“用户”表,并且在其中有一个EmailAddress列,捕获具有相同电子邮件地址的1或2个用户肯定会很奇怪。