数据库建表问题:两张多对多的表该怎么建!

比如说一个老师有多个学生,一个学生也有多个老师,老师和学生这两张表该怎么相互关联!

多对多  的情况下,  需要一个中间关联表


例如下图:   

一个用户,可以有多个角色, 

一个角色下面, 有多个用户。


追问

可以直接给我SQL语句吗!就以学生和老师为例。学生和老师只有id和名字!

追答

CREATE TABLE 老师 ( id int primary key, 名字 varchar(20) );
CREATE TABLE 学生 ( id int primary key, 名字 varchar(20) );

CREATE TABLE 师生关系 ( 老师id int , 学生id int );

查询 张老师 教的学生

SELECT
学生.*
FROM
学生 , 师生关系, 老师
WHERE
学生.id = 师生关系.学生id
AND 老师.id = 师生关系.老师id
AND 老师. 名字 = '张老师'

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-27
多对多需要用中间表来表示。
------------------------------------------------------------------------------------
student(student_id,user_name....)
teacher(teacher_id,teacher_name)
student_teacher(student_teacher_id,student_id,teacher_id)
和上面给图的哥们一样
-----------------------------------------------------------------------------------
select 加上你需要查询的字段
from student as s,teacher as t, student_teacher as st
where s.student_id = st.student_id and t.teacher_id=st.teacher_id
and s.studnet_id = 1;//表示学生1对应的老师。
------------------------------------------------------------------------------------
select 加上你需要查询的字段
from student as s,teacher as t, student_teacher as st
where s.student_id = st.student_id and t.teacher_id=st.teacher_id
and t.teacher_id = 1;//表示老师1对应的学生。
--------------------------------------------------------------------------------------本回答被网友采纳
第2个回答  2013-04-25
多建一个关联表,关联表里面,只需存老师的id,对应上学生的id即可追问

可以直接给我SQL语句吗!就以学生和老师为例。学生和老师只有id和名字!

第3个回答  2013-04-25
其实很简单,建立两个表比如学生表有: IdStu(学生ID),。。。。(学生信息)
老师表: IdStu(老师Id),。。。。。(老师信息),idStus(学生表中的学生IDS)

这是最简单的,但是对数据库压力很大,还有比较难的,你要是还想知道跟多的话,可以联系我追问

恩 想知道 想知道 说说嘛!

追答

一对一张表的关系和一对多张表的关系,很复杂的,慢慢你会明白
一张表对一张表性能消耗大,但是理解简单,如果是多张表对多张表,你的数据库还要用到二维数组,很麻烦,不是说说就能清楚的。 多看书吧,以后工作你就明白了

相似回答