mysql多對多關係的理解,由一對多看向多對多

2021-09-28 15:02:23 字數 2875 閱讀 2992

先看一對多

學生表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),

);

多對多關係

實體模型中相關的模型之間為了方便查詢需要做到你中有我 我中有你 一對多表設計上是在多方應用少方的主鍵作為外來鍵約束 模型上需要在多方加入乙個少方模型物件的屬性,在少方加入乙個多方物件的列表 語法 少方物件 db.relationship 少方模型名 backref db.backref xxlist...

hibernate 多對多關係(一)

什麼是多對多關係呢?關聯式資料庫中兩個表之間的一種關係,該關係中第乙個表中的乙個行可以與第二個表中的乙個或多個行相關。第二個表中的乙個行也可以與第乙個表中的乙個或多個行相關。比如在常見的訂單管理資料庫當中 產品 表和 訂單 表之間的關係。單個訂單中可以包含多個產品。另一方面,乙個產品可能出現在多個訂...

Flask sqlalchemy多對多關係

from flask import flask from flask sqlalchemy import sqlalchemy article tag db.table article tag db.column article id db.integer,db.foreignkey article...