• 多表


    分析步骤:
    #1、先站在左表的角度去找
    是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id)

    #2、再站在右表的角度去找
    是否右表的多条记录可以对应左表的一条记录,如果是,则证明右表的一个字段foreign key 左表一个字段(通常是id)

    #3、总结:
    #多对一:
    如果只有步骤1成立,则是左表多对一右表
    如果只有步骤2成立,则是右表多对一左表

    #多对多
    如果步骤1和2同时成立,则证明这两张表时一个双向的多对一,即多对多,需要定义一个这两张表的关系表来专门存放二者的关系

    #一对一:
    如果1和2都不成立,而是左表的一条记录唯一对应右表的一条记录,反之亦然。这种情况很简单,就是在左表foreign key右表的基础上,将左表的外键字段设置成unique即可

    多对一    foreign  key

    学生     班级

    多个学生是一个班级的     学生表有一个外键   关联班级表

    书籍      作者

    多本书可以都是一个作者写的

    书籍表有一个外键  关联作者表

    书籍     出版社

    多本书可以同时是一个出版社的

    书籍表有一个外键  关联出版社表

    商品      订单

    多个商品可以在一个订单中

    商品表有一个外键    关联订单表

    多对多

        学生     班级   多对一

           多个学生是一个班级的     学生表有一个外键   关联班级表

        班级    学生    多对一   多个班级对应一个学生 

    一本书可以有多个作者

    一个作者可以写多本书

    一个订单可以有多个商品

    一个商品可以属于多个订单

    一对一  

           客户    学生

           unique         foreign  key   unique

    create table author2book(
    id int not null unique auto_increment,
    author_id int not null,
    book_id int not null,
    constraint fk_author foreign key(author_id) references author(id)
    on delete cascade
    on update cascade,
    constraint fk_book foreign key(book_id) references book(id)
    on delete cascade
    on update cascade,
    primary key(author_id,book_id)
    );
     
  • 相关阅读:
    kubernetes 将pod运行在某些特定的节点上,给节点打标签
    kubernetes 安装metrics-server
    数组基本内容,如有遗漏还请指出!
    ES6新属性(追加)
    ES6新属性笔记
    Flex 布局教程
    你知道js中的变量你会定义吗?那常量呢?
    ES6-01:常量与变量的声明
    三种方法实现js中类的继承
    JS完成页面跳转并传参的方法|附加:循环遍历对象
  • 原文地址:https://www.cnblogs.com/ch2020/p/12891576.html
Copyright © 2020-2023  润新知