我正在尝试制作在线考试系统。我有三张桌子。表“学生”有学生的详细信息,列ID唯一标识学生。表“tests”包含所有可用测试的详细信息,并且列id包含测试的id。然后我有包含问题和答案的测试表。
现在我希望如果有任何学生出现在测试中,它就不能再次出现在那个测试中。我怎样才能做到这一点?请帮忙。提前谢谢。
答案 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?