zoukankan      html  css  js  c++  java
  • 多表

    分析步骤:
    #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)
    );
     
  • 相关阅读:
    SQL Server中六种数据移动的方法
    SQL Server数据导入导出技术概述与比较
    深入浅出SQL之左连接、右连接和全连接
    安装SQL server提示安装不上,挂起之类
    如何在SQL Server中快速删除重复记录
    SQL Server数据导入导出工具BCP详解
    深入浅出SQL教程之嵌套SELECT语句
    使用osql执行sql脚本
    sql server 分组统计
    php常用几种设计模式的应用场景
  • 原文地址:https://www.cnblogs.com/ch2020/p/12891576.html
Copyright © 2011-2022 走看看