先看一对多
学生表
create table student(
id int primary key auto_increment,
name varchar(20)
);
一个班级对应许多同学
//一个同学属于一个班级,外键写在同学里
create table student(
id int primary key auto_increment;
sn int unique,
name varchar(20) default'不知道'
classes_id int,//所属班级
foreign key(classes_id) references classes(id)
);
//classes_id int,
/foreign key(classes_id) references classes(id)这就把两张表关联起来了,学生的class_id属性对应到班级表的id里
学生表和车票
create table student(
id int primary key auto_increment,
name varchar(20)
);
create table ticket(
id int primary key auto_increment,
name varchar(20)
);
create table student_ticket(
id int primary key auto_increment,
//一个学生有很多车票
student_id int,
foreign key(student_id) references student(id),
//一个车票有很多学生
ticket_id int,
foreign key(ticket_id) references ticket(id)
);
拆分为两个一对多
一个车票有很多学生,拿着学生去找车票
student_id int,
ticket_id int,
foreign key(ticket_id) references ticket(id)
一个学生有很多张车票,拿着车票找学生
ticket_id int,
student_id int,
foreign key(student_id) references student(id),
二合一就变成student和ticket的中间表了就是多对多了
写一个老师和学生的关系:多对多
create table teacher(
id int primary key auto_increment,
name varchar(20)
);
create table student(
id int primary key auto_increment,
name varchar(20)
);
create table student_teacher(
id int primary key auto_increment,
//一个学生有很多老师(老师对应哪些同学)
student_id int,
foreign key(student_id) references student(id),
//一个老师有很多学生 (学生对应哪些老师,学生去找老师)
teacher_id int,
foreign key(teacher_id) references teacher(id)
);
学生和课程的中间表(二合一的一个过程)
学生表
create table student(
id int primary key auto_increment,
name varchar(20)
);
课程表
create table course(
id int primary key auto_increment,
name varchar(20)
);
create table student_course(
id int primary key auto_increment,
//一个学生对应多个课程(把这个表当做课程表)(该课程属于哪些同学,拿课程去找同学)
student_id int,
foreign key(student_id) references student(id),
//一个课程对应多个学生(把这个表当做学生表)(该同学有哪些课程)
course_id int,
foreign key(course_id) references course(id) 8
);
图书,学生具有一个借阅场景(借阅记录表作为中间表)
create table student(
id int primary key auto_increment,
name varchar(20)
);
create table book(
id int primary key auto_increment,
name varchar(20)
);
create table record(
id int primary key auto_increment,
拿着书student_id属性去同学表里找找有哪些同学借过书
student_id,
foreign key(student_id) references student(id),
拿着同学的student_id去找书的表里面查找该同学借过哪些书
book_id,
foreign key(student_id) references student(id),
);
本文通过实例解析了数据库中的一对多和多对多关系。从学生表和班级表的一对多关系开始,逐步引入多对多关系,如学生和车票的关系,以及老师和学生的关系。通过创建中间表,展示了如何实现和管理多对多关联,包括学生课程表、学生教师表和借阅记录表等例子。
570

被折叠的 条评论
为什么被折叠?



