外键约束(重要)

7.6、外键约束(foreign key,简称FK) (重要)

    外键约束涉及到:

      外键约束

      外键字段

      外键值

  业务背景:请设计数据库表,来描述“班级和学生”的信息?

    第一种方案:班级和学生存储在一张表中

    

 

     上述方案数据冗余,空间浪费

    第二种方案:班级一张表,学生一张表

      

 

       没有给cno班级编号添加约束,可能会导致数据无效,可能出现一个102,但是102不存在

      所以为了保证cno字段中的值是100和101,需要诶cno字段添加外键约束。

      那么:cno字段就是外键字段,cno字段中的每一个值都是外键值

      注意: 

        t_class是父表

        t_student是子表

        删除表的顺序?

        先删子,再删父

        创建表的顺序?

        先创父,后创子

        删除数据的顺序?
        先删子,后删父

        插入数据的顺序?

        先创父,后创子  

      drop  table if exists t_student;

      drop table if exists t_class;

      create table t_class(

          classno int primary key,

          classname varchar(255)

      );

      create table t_student(

          no int primary key auto_increment,

          name varchar(255),

          cno int,

          foreign key(cno) references t_class(classno) //引用外键约束

      );

      insert into t_class(classno,classname) values(100,'...');

      insert into t_class(classno,classname) values(101,'...');

      

      思考:子表中的外键引用父表中的某个字段,被引用的这个字段必须是主键吗?

        不一定是主键,但至少具有unique约束

      思考:外键可以为NULL吗?

        外键值可以为NULL

        

 

posted @ 2022-01-23 16:05  doremi429  阅读(71)  评论(0编辑  收藏  举报