数据库表关系(单表、一对一、一对多、多对多)

  写在开头

    一直搞不清楚数据库表之间的关系,看了很多博客还是有些弥漫,没有具体的例子辅助。所以写了下面的内容,此文中的案例以学校为例,个人理解,可能会有诸多不妥之处,仅供参考

一、两个重要概念:

  什么是主键?外键?

  1.主键:主键是表的一个特殊字段,可以唯一地标识表中的每条信息。比如:身份证号。一个表中可以有一个或多个主键。
      作用:唯一标识、快速查找
  2.外键:如果表B的一个字段(外键)依赖于表A的主键。则成表A为父表,表B为子表。
      原则:外键必须依赖于数据库中已经存在的父表的主键,外键可以为空
      作用:建立该表与父表的关联关系

二、表关系

    包括单表、多表(一对一、一对多、多对多)

  1.单表

      就是一张表,所有的数据都在一张表中。

      例:下面这张表,学习信息都存在一张表中。

                 

  2.多表

      2.1一对一   (不常用)

        A 表中的一行最多只能匹配于 B 表中的一行

        应用场景:

          1.单表太大,一分为二

          2.由于安全原因而隔离表的一部分

        例:为了收集学生的联系方式,又建了一张学生联系表,如下图。

        联系表(子表)中的外键(学号),必须依赖于信息表(父表)中的主键(学号)存在。

                            

      2.2一对多

         A 表中的一行可以匹配 B 表中的多行,但是 B 表中的一行只能匹配 A 表中的一行

        例:学生到校后,需要分班,下面的两张表就产生了。一个班有多个学生,一个学生只能归属一个班级,

        

        

      2.3多对多

       多对多就是两个一对多

        A 表中的一行可以匹配 B 表中的多行,反之亦然。要创建这种关系,需要定义第三个表,称为结合表,它的主键由 A 表和 B 表的外键组成。

       例:办级分好之后学生就该选课了。我们需要一张课程表。一个学生可以选择多门科,一门课也可以多名同学上。此时我们通过第三张表来映射这种关系。

      课程表:     

       

    学生分班表:

        

     选课结果(第三张表):    

       

猜你喜欢

转载自www.cnblogs.com/rockley/p/9339756.html