数据库如何表达M:N关系结合python结合SQLAlchemy
1. 关系型数据库的标准做法
假设有两个实体:学生(Student)和课程(Course),一个学生可以选多门课,一门课也可以有多个学生。
表结构设计
Student(学生表):student_id(主键),nameCourse(课程表):course_id(主键),titleStudent_Course(中间表):student_id,course_id
中间表(关联表)
Student_Course 表的每一行都表示一个学生和一门课程的关联。
| student_id | course_id |
|---|---|
| 1 | 101 |
| 1 | 102 |
| 2 | 101 |
student_id外键关联Studentcourse_id外键关联Course- 通常
student_id + course_id作为联合主键
SQL 示例
CREATE TABLE Student (student_id INT PRIMARY KEY,name VARCHAR(50) );CREATE TABLE Course (course_id INT PRIMARY KEY,title VARCHAR(50) );CREATE TABLE Student_Course (student_id INT,course_id INT,PRIMARY KEY (student_id, course_id),FOREIGN KEY (student_id) REFERENCES Student(student_id),FOREIGN KEY (course_id) REFERENCES Course(course_id) );
SELECT c.title FROM Course c JOIN Student_Course sc ON c.course_id = sc.course_id WHERE sc.student_id = 1;
查询某门课有哪些学生:
SELECT s.name FROM Student s JOIN Student_Course sc ON s.student_id = sc.student_id WHERE sc.course_id = 101;
漫思
