mysql 约束条件 外键 forigen key 介绍
外键 forigen key作用 :建立表之间的关系
什么是外键
员工信息表有这些字段:id号 姓名 性别 员工所在部门名 部门描述信息
公司有3个部门,但是有1个亿的员工,那意味着 员工所对应的部门 这个字段需要重复存储,部门名字越长,越浪费
1.员工所对应的部门 出现重复问题 数据出现重复
2.如果改部门名字段 例如技术部门改为IT ,那要找到所有技术部门的人字段 ,全部改为IT
存在空间问题,管理问题
把两张表独立分开
把部门和id 单独建立一张表 每个部门对应一个id字段 每个部门存储一个就可以了
我们把表拆分成两张表,隔离的两张表,两张表没有任何关系,但是业务要求员工有部门信息,我们可以在emp表新增一个dep_id字段,关联着dep表的id字段。
我们完全可以定义一个部门表,左边是员工表,右边是部门表
然后让员工信息表关联部门表,如何关联,即foreign key 外键
把员工表emp的dep_id字段关联到 dep表的id字段 从而两张表就建立关系
在dep_id 字段加上forigen key
mysql 约束条件 外键 forigen key 介绍的更多相关文章
- MySQL建立外键(Foreign Key)
如果在最初建立表的时候就建立外键这样一般不会有什么问题,顺便说一下建立外键的时候,需要注意的地方. cascade方式在父表上update/delete记录时,同步update/delete掉子表的匹 ...
- MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作)
MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作): a.创建2张表 create table userinfo(nid int not nul ...
- MySQL定义外键的方法
MySQL定义外键的方法是每个学习MySQL的人都需要掌握的知识,下文就对MySQL定义外键的语句写法进行了详细的阐述,供您参考. 外键为MySQL带来了诸多的好处,下面就为您介绍MySQL定义外键的 ...
- MySQL删除外键定义的方法
MySQL外键在定以后,如果我们不再需要这个外键,可以进行删除操作,下面就为您介绍MySQL删除外键定义的方法,供您参考. 不知道大家有没有发现,在定义外键的时候articles.member_id外 ...
- 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)
1. 数据库有六大约束 主键(primary key) 外键(foreign key):被参照的键必须有唯一约束或是主键 非空(not null) 默认(default) 检查(check):orac ...
- 关于mysql设置外键,实现参照性完整性约束,以及workbench上的一个bug(?)
一.本次数据库中有student,course,sc表,其设置情况 -- 创建course表 CREATE TABLE `course` ( `cno` ) NOT NULL, `cname` ) D ...
- mysql添加外键无法成功的原因
最近很忙,碰到很多问题都忘了发上来做个记录,现在又忘了,FUCK,现在碰到一个问题, 就是mysql添加外键总是无法成功,我什么都试了,就是没注意signed和unsigned,FUCK,因为我用my ...
- Database学习 - mysql 数据库 外键
外键 外键约束子表的含义:如果在父表中赵达不到候选键,则不允许在子表上进行insert/update 外键预约对父表的含义:在父表上进行update/delete以更新或删除子表中有一条或多条对应匹配 ...
- MySQL数据库--外键约束及外键使用
什么是主键.外键关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯 ...
随机推荐
- 在express项目中使用formidable & multiparty实现文件上传
安装 formidable,multiparty 模块 npm install formidable,multiparty –save -d 表单上传 <form id="addFor ...
- ftp命令行工具如何 连接 非标准21端口(其他端口)的ftp服务器
windows: step1:ftp命令进入ftp交互环境 step2:ftp>open ip空格port 然后...
- _variant_t和_bstr_t
_variant_t和_bstr_t这两个类分别封装并管理VARIANT和BSTR这两种数据类型, VARIANT和BSTR这两种类型是COM中使用的数据类型. 实现_variant_t向int,St ...
- VC++:Debug出错,提示错误在findfile.cpp (Line 369)
调试程序的Debug版本,出现断言框,定位于库文件findfile.cpp 第369行: void CFileFind::AssertValid() const { // if you trip th ...
- javascript与 ios通讯解决办法
阔别1年半之久,一个JavaScript和ios通讯的想法终于被实现了(我不知道别人有没有早就实现过~). 记得早期ios内嵌html做通讯时,貌似做好的办法只能是 ios通过url来截取页面发送消息 ...
- Android:控件布局(相对布局)RelativeLayout(转)
相对布局常用属性: 子类控件相对子类控件:值是另外一个控件的id android:layout_above----------位于给定DI控件之上android:layout_below ------ ...
- 最近maven开发中遇到的一些bug。
1.WebxContextLoaderListener 等tomcat启动报错.大部分原因都是jar包问题. 检查方式,在tomcat的webapps/WEB-INF/lib下有没有想对应的jar包 ...
- python cx_oracle单个表中批量插入数据
- Linux ulimit 命令
ulimit命令用来限制系统用户对 shell 资源的访问,常见用法如下: [root@localhost ~]$ ulimit -a # 查看当前所有的资源限制 [root@localhost ~] ...
- 嵌入式系统UBOOT
一个完整的嵌入式linux系统包含4部分内容:Bootloader.Parameters.Kernel.Root File System.3.4.5.6部分详细介绍了这4部分的内容,这是Linux底层 ...