关于数据库多对多关系表的联结问题?

tizll521 2011-01-15 09:30:02
前几天做一个项目 是在原有的基础上改的 以前的人是按一对多的关系做的

改到最后才发现原来三张表是多对多的关系(学员、老师、培训班)

我那个郁闷哪 一张关系表做的乱七八糟

我问了一下身边的人 多对多的关系表 一般都是在中间建立一张关系表

而我的则是在学员表里建了一个培训班的ID字段,培训班里建了一个学员ID字段

这样做会不会对以后的影响很大

另外多对多的关系表 最好的方式是不是中间新建一张关系表

还有大家建过的最复杂的关系表是哪种关系 应该怎么应对。

我用的是SQL2000
...全文
148 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tizll521 2011-01-17
  • 打赏
  • 举报
回复
6楼的
我只是想知道多对多关系表之间有多少种联结方式 哪一种更简洁、更效率
还有没有比这更复杂的表关系 如果有要怎样解决


我是想知道的更多点 为以后准备 有备无患吗
现在的那几个表之间的关系我已经弄好了 只是感觉很乱、很麻烦 现在知道有一种建中间表的方式对这种关系表更效率一点 不过也懒的改了 现在的勉强还能用
tizll521 2011-01-15
  • 打赏
  • 举报
回复
二楼的是用中间表的方式联结 写的很清晰 谢谢了

一楼的说多对多也可以不用中间表 我现在做的就是没用中间表 但是更新和管理起来非常麻烦 搞的头都大了

你说的不用中间表的情况是针对一对多的关系表吧
gw6328 2011-01-15
  • 打赏
  • 举报
回复



use db
go

create table student(
studentId int primary key identity(1,1)
,name varchar(10)
)
;
create table class(
classId int identity(1,1) primary key
,no varchar(10)
);
create table selClass(
studentId int
,classId int

primary key(studentId,classId)
)
go
insert into student select '小李' union all select '小张';
insert into class select 'A班' union all select 'B班';
-- select * from student
-- select * from class
insert into selClass select 1,1 union all select 1,2 union all select 2,1

-- select * from selClass

select * from student a left join selClass b on a.studentId=b.studentId
left join class c on b.classId=c.classId
/*
1 小李 1 1 1 A班
1 小李 1 2 2 B班
2 小张 2 1 1 A班

*/
-- 小李报了A,B班,小张报了A班
Shawn 2011-01-15
  • 打赏
  • 举报
回复
#1. 永远根据业务逻辑来建立表
#2. 一张表一般只描述一个对象:比如学员表,会包含学员的一些信息,学号,姓名,报了哪些班。老师表,包含姓名,负责哪些班。班表,包含班名,班的内容描述等
#3. 表和表之间的关系,可以用中间表,但一般情况下,并不需要中间表,只需要表中的某些属性字段即可关联。
dawugui 2011-01-15
  • 打赏
  • 举报
回复
最好给出完整的表结构,测试数据,计算方法和正确结果.否则耽搁的是你宝贵的时间。
如果有多表,表之间如何关联?


发帖注意事项
http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
王向飞 2011-01-15
  • 打赏
  • 举报
回复
就用2楼的,好理解
好维护
zp975800 2011-01-15
  • 打赏
  • 举报
回复
其实不用中间管理起来也不难,楼主加ID字段我觉得可行,不难管理。我平常都是这样做的

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧