数据库外键设计时,一般会遇到两个问题,无法创建外键,一个是联动删除。
拿班级表(t_class)和学生表(t_student)来说吧,t_class是父表,t_student是子表。t_student表的class_id关联着t_class表的id。
无法创建外键一般来说是因为子表中需要关联父表的字段,即class_id字段有t_class表的id没有的数据,或者为空("")。注意:空和null不一样,你填了东西再删除时空,你没填过东西是null。
联动删除的话,我用的是mysql,图形化管理工具是navicat,建立外键时有个“删除时”和“更新时”
外键建立
里面有四个选项:RESTRICT(默认):表示子表中有数据,相应父表中删除之前必须删除子表中数据;CASCADE:表示父表中删除该数据时,子表也删除相应字段下的当条数据;
CASCADE:跟RESTRICT一样;
SET NULL:表示父表中删除该数据时,子表关联字段变为null;
很容易理解,不演示了。