zoukankan      html  css  js  c++  java
  • 10-外键的变种 三种关系

     

     

    本节重点:

    • 如何找出两张表之间的关系
    • 表的三种关系

    一、介绍

    因为有foreign key的约束,使得两张表形成了三种了关系:

    • 多对一
    • 多对多
    • 一对一

    二、重点理解如果找出两张表之间的关系

    复制代码
    分析步骤:
    #1、先站在左表的角度去找
    是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id)
    
    #2、再站在右表的角度去找
    是否右表的多条记录可以对应左表的一条记录,如果是,则证明右表的一个字段foreign key 左表一个字段(通常是id)
    
    #3、总结:
    #多对一:
    如果只有步骤1成立,则是左表多对一右表
    如果只有步骤2成立,则是右表多对一左表
    
    #多对多
    如果步骤1和2同时成立,则证明这两张表时一个双向的多对一,即多对多,需要定义一个这两张表的关系表来专门存放二者的关系
    
    #一对一:
    如果1和2都不成立,而是左表的一条记录唯一对应右表的一条记录,反之亦然。这种情况很简单,就是在左表foreign key右表的基础上,将左表的外键字段设置成unique即可
    复制代码

    三、表的三种关系

    (1)书和出版社

      一对多(或多对一):一个出版社可以出版多本书。看图说话。

      关联方式:foreign key

     

     书和出版社(多对一)

    (2)作者和书籍的关系

      多对多:一个作者可以写多本书,一本书也可以有多个作者,双向的一对多,即多对多。看图说话。

      关联方式:foreign key+一张新的表

     作者与书籍关系(多对多)

    (3)用户和博客

      一对一:一个用户只能注册一个博客,即一对一的关系。看图说话

      关联方式:foreign key+unique

     用户和博客(一对一)
    幻想毫无价值,计划渺如尘埃,目标不可能达到。这一切的一切毫无意义——除非我们付诸行动。
  • 相关阅读:
    eclipse中不能找到dubbo.xsd
    CentOS7部署tomcat
    mybatis中的foreach
    mybatis中批量添加orcale
    mybatis中的like使用方式
    mybatis默认参数_parameter和_databaseId
    mybatis中的resultMap
    mybatis操作oracle,插入null值时报错 with jdbctype OTHER
    mybatis 中 #{} 和 ${} 的区别
    mybatis Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [0, 1, param1, param2]
  • 原文地址:https://www.cnblogs.com/TodayWind/p/13122046.html
Copyright © 2011-2022 走看看