数据库一对一、一对多、多对多关系理解(转载)

版本一


一、首先给出三种关系的实例
1、一对一关系实例
   * 一个人对应一张身份证,一张身份证对应一个人
2、一对多关系实例
   * 一个班级拥有多个学生,一个学生只能够属于某个班级
3、多对多实例
   * 一个学生可以选修多门课程,一个课程可以被多个学生选修

二、一对一关系

一对一关系是最好理解的一种关系,在数据库建表的时候可以将人表的主键放置与身份证表里面,也可以将身份证表的主键放置于人表里面

三、一对多关系


班级是1端,学生是多端,结合面向对象的思想,1端是父亲,多端是儿子,所以多端具有1端的属性,也就是说多端里面应该放置1端的主键,那么学生表里面应该放置班级表里面的主键

四、多对多关系

对于多对多关系,需要转换成1对多关系,那么就需要一张中间表来转换,这张中间表里面需要存放学生表里面的主键和课程表里面的主键,此时学生与中间表示1对多关系,课程与中间表是1对多关系,学生与课程是多对多关系

四、总结

总而言之,最重要的关系就是1对多关系,根据面向对象思想在建表的时候将1端主键置于多端即可。

 

版本二

 

关联映射:一对多/多对一 

存在最普遍的映射关系,简单来讲就如球员与球队的关系; 

一对多:从球队角度来说一个球队拥有多个球员 即为一对多 

多对一:从球员角度来说多个球员属于一个球队 即为多对一 

数据表间一对多关系如下图: 

 

关联映射:一对一 

一对一关系就如球队与球队所在地址之间的关系,一支球队仅有一个地址,而一个地址区也仅有一支球队。
数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。图示如下: 

一对一外键关联: 

 

一对一主键关联:要求两个表的主键必须完全一致,通过两个表的主键建立关联关系 

 

关联映射:多对多 

多对多关系也很常见,例如学生与选修课之间的关系,一个学生可以选择多门选修课,而每个选修课又可以被多名学生选择。 
数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多。 
数据表间多对多关系如下图: 

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值