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

     用户和博客(一对一)
    幻想毫无价值,计划渺如尘埃,目标不可能达到。这一切的一切毫无意义——除非我们付诸行动。
  • 相关阅读:
    Bundle类
    intent.putExtra()方法参数详解
    6级技巧(一)
    6级核心词汇
    安卓应用运营知识:VersionCode和VersionName
    关于HTML、XHTML、CSS、XML的区别
    SQL记录-Linux CentOS配置ORACLE 12c
    Spark记录-Scala多线程
    Spark记录-Scala异常与处理
    Spark记录-Scala类和对象
  • 原文地址:https://www.cnblogs.com/TodayWind/p/13122046.html
Copyright © 2011-2022 走看看