u012575301
哈哈哈嘿嘿嘻嘻
2014-11-20 02:32
采纳率: 4.3%
浏览 5.4k

数据库中的关系表有什么作用 求大神解惑

其中一张表叫做关系表,它内部只有两个字段,但全是id,一个是cid,一个是uid
其中两个id都是其他表的主键 我只想问这样记录下他们的id有什么用 或者 说这样关系表存在的意义是什么啊 真心求大神解答

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

10条回答 默认 最新

  • caozhy

    实现了一个1:1的关系,这种设计可能是为了把一个表拆开,也可能有历史原因而需要保持原来表的结构不变而增加新的字段。

    点赞 评论
  • meiqingsong
    梅青松 2014-11-20 02:47

    可以实现1对多和多对多的关联
    例如:a表为用户表 b表为角色表 c表为关系表 通过c表可以实现 一个用户有多个角色,一个角色有多个用户

    点赞 评论
  • zilaishuichina
    zilaishuichina 2014-11-20 02:49

    这是为了实现 n:n的关系

    举个例子,一个学生可以学n门课程,一个课程有n个学生选择

    学生表 有 学生id
    课程表 有 课程id
    学生选课表 则为 id,学生id,课程id

    点赞 评论
  • u010792467
    仦石頭 2014-11-20 03:06

    避免字段冗余,加入uid为用户表主键,cid为课程表主键,我需要用户时,查询用户表即可,需要课程表查询课程即可,需要查看那个用户选了那几门课程时,就可以通过uid关联到cid来查询,如果写在一块的话,字段太多,造成冗余...

    点赞 评论
  • q107770540
    兔子党-督察 2014-11-20 03:29

    这是为了实现多对多关系用的吧

    点赞 评论
  • jdjz123
    jdjz123 2014-11-20 03:44

    是这样的,关系表中某一个字段对应着另一个表的字段,他们是有意义的 ,不要从作用成上面的理解它,要从意义上去理解它,
    用一个家庭来做比喻吧, 数据库是家庭, 里面有2张表,一张是父母表,一张儿女是表, 父母表有3个字段分别为ID ,姓名,年龄, 儿女表里面有 5个字段分别是 ID 姓名 年龄 父亲 母亲 , 你是不是 需要把 父亲关联到那张表的主键字段上去? 把你母亲关联到那张表的主键字段上去? ,然后这样还有一个约束, 就是 你父母表里面没有的数据,儿女表产生关联的2个字段是添加不进去的。

    点赞 评论
  • eshujiushiwo
    eshujiushiwo 2014-11-20 03:46

    HI 题主你好
    由于你的问题描述较为概括,我只能大致说下可能的用处。

    用于做**关联**,至于为何要单独做一个表而**不是放到原表的字段中**,**可能的原因是**:新增字段**成本较高**,**业务不能收到影响**,如果是5.6以上的mysql 可以online ddl,以下的可以用percona的tools 但是可能贵公司的一些考虑,就放弃了在线新增 字段的想法。
    故需要一个关联表来做关联。

    希望能够有所帮助。

    点赞 评论
  • wgw335363240
    O溺水的鱼0 2014-11-20 03:53

    关系表是为了维护两个实体对象的关系的,比如你说的uid应该是用户id,cid是班级id,每个学生都会属于一个班级,即:一个uid对应一个cid。在数据库设计的时候,可以百度下第一、第二和第三范式的设计思路,通常会建三个表:即:用户表User(主键为uid)、班级表(class)和用户班级表(uid与cid的对应关系),根据用户班级表就可以很容易找到一个 用户所属的班级,或者一个班级有哪些用户。关系表主要为了解决业务场景的需要而设立的。在大型系统中,由于用户班级表存储的都是整形数据,占用的空间相对较小,可以完全放到内存中来维护,缩短业务的查询时间。

    点赞 评论
  • liu13722785488
    棒怡情 2014-11-20 05:09

    应该是为了两个表进行关联,对于数据库设计可能是为了满足范式的要求。同时对于一些查询统计之类的,从这个表应该更直观更方便。

    点赞 评论
  • juwuhen
    Lucky_fishy 2014-11-21 07:04

    关系表主要就是用于表间多对多关联
    举个简单的例子,用户与角色的多对多关系,在创建表的时候,用户表里一般不会考虑角色相关字段,角色表也一样。当我们需要建立2个表的对应关系的时候,这时就可以创建一个关系表,只有用户ID和角色ID两个字段,并作为联合主键,将2表关联起来

    点赞 评论

相关推荐