Restricitng学生重新出现在他们已经出现在在线考试系统的测试中

时间:2016-06-09 17:03:52

标签: php mysql

我正在尝试制作在线考试系统。我有三张桌子。表“学生”有学生的详细信息,列ID唯一标识学生。表“tests”包含所有可用测试的详细信息,并且列id包含测试的id。然后我有包含问题和答案的测试表。

现在我希望如果有任何学生出现在测试中,它就不能再次出现在那个测试中。我怎样才能做到这一点?请帮忙。提前谢谢。

1 个答案:

答案 0 :(得分:0)

啊哈。如果您需要创建关系表...首先创建一个关于student_id和test_id的表。执行此操作后,您可以在多个列上创建主键:

CREATE TABLE students_tests
( 
FOREIGN KEY student_id REFERENCES student(id) ,
FOREIGN KEY test_id REFERENCES tests(id)
PRIMARY KEY (student_id,test_id)
)

但是,如果已经有一个带主键的关系表,则可以使用ALTER TABLE ... ADD UNIQUE命令使键的对(或元组)成为唯一的集合。这个问题已在这里得到解答:

How do I specify unique constraint for multiple columns in MySQL?