MySQL之表的关系
表的关系:
一对一:1:1
eg:一个人只有一个身份证
注:通过添加关键字段的方式来实现 一对一 关键字段加哪个都可以
-- 方法一 CREATE TABLE t_Person( id INT PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(10) ); CREATE TABLE t_card( id INT PRIMARY KEY AUTO_INCREMENT, start_time DATE, end_time DATE, pid INT UNIQUE, //关键字段 这个字段是惟一的 FOREIGN KEY (pid) REFERENCES t_Person(id) //创外键保证数据的完整性和合法性 ); -- 方法二 CREATE TABLE t_card2( card_id INT PRIMARY KEY AUTO_INCREMENT, start_time DATE, end_time DATE, FOREIGN KEY (card_id) REFERENCES t_Person(id) );
一对多:1:n
eg:一个学生有多门成绩
注:通过添加关键字段的方式来实现 一对多 关键字段要加在多的那个上面
-- 一对多 -- 一个学生有多门成绩 CREATE TABLE t_student( id INT PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(10) ); CREATE TABLE t_scores( id INT PRIMARY KEY AUTO_INCREMENT, num INT, stu_id INT, //关键字段 FOREIGN KEY (stu_id) REFERENCES t_student(id) );
多对多:n:n
eg:多个老师教多个学生
注:通过添加关键字段的方式来实现 多对多 需要新建一个表 把两个关键字段都添加进去
-- 多对多 CREATE TABLE t_teacher( id INT PRIMARY KEY AUTO_INCREMENT, tname VARCHAR(10) ); CREATE TABLE t_student( id INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(10) ); CREATE TABLE t_stu_tea( id INT PRIMARY KEY AUTO_INCREMENT, stuid INT, //关键字段 teaid INT, //关键字段 FOREIGN KEY (stuid) REFERENCES t_student(id), FOREIGN KEY (teaid) REFERENCES t_teacher(id) );