关系主要有三种,一对一,一对多(多对一),多对多
一对一
例如
有一张保存账号密码的表,还有一张保存个人信息的表,他们通过wid关联,只是一对一关系
create table Wechat(
wid int PRIMARY key,
wpassword varchar(20)
);
create table Wechat_person(
wid int PRIMARY key,
wname varchar(20),
sex enum('男','女')
);
ALTER table Wechat_person add CONSTRAINT yueshu1 FOREIGN key(wid)
REFERENCES Wechat(wid);
一对多
一个学生表包含学生编号和学生姓名
一个成绩表包含学生编号,课程编号,课程成绩,因为有多个成绩,所以会有多个编号,
(ps:学生编号和课程编号可以组成联合主键)
现在学生表的学生编号,对成绩表的学生编号就是一对多
create table student(
sid varchar(10) PRIMARY key,
sname varchar(20)
);
CREATE TABLE score(
sid varchar(10),
courseid INT,
score DOUBLE
);
ALTER TABLE score ADD CONSTRAINT yueshu2 FOREIGN KEY(sid) REFERENCES student(sid);
多对多
一张学生表,包含学生编号和学生名字
一张老师表,包含老师编号和老师名字
一个学生对应多个老师,多个老师对应一个学生,所以相当于多个学生对应多个老师
一张表,包含学生编号和老师编号
create table teacher(
tid int PRIMARY key,
tname varchar(20)
);
create table student2(
sid int PRIMARY key,
sname varchar(20)
);
create table tea_stu2(
tid int,
sid int
);
ALTER TABLE tea_stu2 ADD CONSTRAINT 2_tid FOREIGN KEY(tid) REFERENCES teacher(tid);
ALTER TABLE tea_stu2 ADD CONSTRAINT 2_sid FOREIGN KEY(sid) REFERENCES student2(sid);