4Python全栈之路系列之MYSQL外键



先来个例子来说明什么是外键以及外键的作用,so,XO公司现正处于一种迅速发展的状态,从最初的12人的团队发展到现在的300人,那么问题就来了,发展的越快,人员与部门就越来越多,这是老大要求我们做一个人员管理系统,用于查询入职人员的信息等。起初我们想用一个表来实现所有的人员统计,创建Personnel库,用于存放公司员工的信息,指令如下:然后在创建一个人员信息表,在这个person_info表中,idname列是联合主键,引擎是InnoDB,字符集是utf8格式的插入成员数据查看插入的数据so,我们只是插入了上面5条数据而已,那么如果有成千上万条的数据,department是不是都是重复的呢?因为么个人肯定都是属于一个部门的,还可能属于这个部门下面某个组的,而且上面的部门字段所占用的字符只有这个么几个,如果有个变态的老大,必须把部门名车个搞到很长很长,那么这样做是不是很占用空间呢?而且查询的时候也没有那么快。所以,外键的作用就出来了,那么现在的表设计就改变了,变成什么样的呢?person_info表被拆封成两个表,分为part部门表person_info人员信息表part表有nidcaption列,nid为主键并自增,caption存放公司所有的部门等。person_info依旧是人员信息表,拥有的字段和上面表中的设置是一样的,idname依旧是主键,id自增,唯一改变的就是part_nid列关联了part表中的nid列,表设计如下图:先删除之前创建的person_info表创建part职务表插入部门数据查看插入的部门信息创建person_info人员信息表设置开发云主机域名外键把person_info表中的part_nid列和part表中的nid列做一个外键关联,外键的名称为person_ibfk_1删除外键删除person_info表中的person_ibfk_1外键往成员表中插入6条数据上面插入的数据都是合法的,那么如果我们插入不合法的数据会怎样呢?比如说插入一条在part表中不存在的部门会怎样?so,是不是就报错了呢?没做,这就是外键的约束,如果说你插入的数据中,part_nid列中的数据在part表的nid列没有的话,那么是万万不可以的,上述是一对多的关系,多对多和连表查询会在下一篇文章中介绍,其实很简单
#Python全栈之路

相关推荐: 基于rhel7.2的Zabbix平台搭建和部署(四)

基于rhel7.2的Zabbix平台搭建和部署(四)一、实现zabbix添加监测项,添加对Linux主机的监控、说明:先在“配置”-“主机”里添加主机监控,监控os资源:内存,cpu,io,负载,带宽等.(1)登录zabbix,先在“配置”-“主机”里单击”创…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 06/07 17:58
Next 06/07 17:58

相关推荐