作者:LAMP小白 点击:2595 发布日期: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