多个数据列设置主键和FOREIGN KEY

多个数据列设置主键和FOREIGN KEY

作者:LAMP小白  点击:2473  发布日期:2012-10-17 00:56:00  返回列表
建表
mysql> CREATE TABLE score
-> (
-> student_id INT UNSIGNED NOT NULL,
-> event_id INT UNSIGNED NOT NULL,
-> score INT NOT NULL,
-> PRIMARY KEY (event_id, student_id),
-> INDEX(student_id),
-> FOREIGN KEY (event_id) REFERENCES grade_event (event_id),
-> FOREIGN KEY (student_id) REFERENCES student (student_id)
-> ) ENGINE = InnoDB;
Query OK, 0 rows affected (0.04 sec)

我们将两个数据列的组合设置为一个PRIMARY KEY 这样可以确保我们不会重复插入重复的event_id 和 student_id的组合,而他们单独使用时,我们不要求他们的唯一性

其次就是FOREIGN了
他的语法结构为:FOREIGN KEY (本表的数据列名) REFERENCES 哪个表(哪个数据列)
我们需要为每个ID数据列设置一条FOREIGN KEY子句来定义它应该遵守的约束条件,这个子句的REFERENCES部分用来指定数据列应该与哪个表里的哪个数据列对应

这样 PRIMARY KEY 能保证我们不会创建重复的数据行,而FOREIGN KEY可以确保我们插入的ID不会是虚假的

那么为什么在student_id上面会有一个索引呢?

因为,对于出现在FOREIGN KEY定义里面的每一个数据列上的,他要么本身有一个索引,要么是某个多数据列索引中第一个出现的数据列,而student_id不是PREMARY KEY中第一个出现的,所以就只能为他单独建立一个索引了


上一篇:ENUM枚举 下一篇:快递查询API
0