主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和外键的结构是这个设计过程的症结所在。一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的。

外键

 外键(FK)是用于建立或加强两个表数据之间的链接的一列或多列。

 通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的连接,这个列就成为第二个表的外键

 FK约束的目的是控制存储在外表中的数据,同时可以控制对主键表中数据的修改

 例如:publishers表中记录出版商的信息,titles表中记录书的信息,如果在publishers的表中删除一个出版商,而这个出版商的ID在titles表中记录书的信息时被使用了,则这两个表之间关联的完整性将被破坏,即titles表中该出版商的书籍因为与publisher表中的数据没有链接而变的孤立。

 FK约束可以防止这种情况的发生,如果主键表中数据的更改使得与外键表中数据的链接失效,则这种更改是不能实现的;如果试图删除主键表中的行或试图修改主键值,而该主键值与另一个表的FK约束值相关,则该操作不可实现。若要成功的更改或删除FK约束的行,可以现在外键表中删除外键数据或更改外键数据,然后将外键连接到不同的主键数据上去

 外键主要是用来控制数据库中的数据完整性的,当对一个表的数据进行操作时,和他有关联的一个表或多个表的数据能够同时发生改变 

 例子:

 A(a,b) :a为主键,b为外键(来自于B.b)

 B(b,c,d) :b为主键

 A中的b字段要么为空,要么为B表中存在的b值

主表和附表的关联关系,普通字段就可以实现为什么还要有主键外键?之间有什么关系相关推荐

  1. mysql修改外键字段报异常_mysql修改索引时,外键约束造成的奇怪问题_MySQL

    Mysql外键 bitsCN.com mysql修改索引时,外键约束造成的奇怪问题 事情是这样的,在Windows的mysql5.5 ,我想修改一个表的索引,于是执行 [sql] ALTER TABL ...

  2. templet 显示字段外键对应名_主外键和外键约束

    主外键和外键约束 主键 主键(primary key):一列(或一组列),其值能够唯一区分表中每个行 . 外键 外键(foreign key) 外键为某个表中的一列,它包含另一个表的主键值,定义了两个 ...

  3. 存在外键关联的主表truncate如何做

    主外键是数据库提供的一种两表之间强制关联的方法,也可以从应用层实现. 优点 缺点 数据库实现的主外键 由数据库层机制保证,无需应用额外实现 强关联,不易扩展变更 应用实现的主外键 易扩展变更 完全由应 ...

  4. (转)基于MVC4+EasyUI的Web开发框架经验总结(9)--在Datagrid里面实现外键字段的转义操作...

    http://www.cnblogs.com/wuhuacong/p/3872890.html 我们在使用EasyUI的时候,很多情况下需要使用到表格控件datagrid,这个控件控件非常强大,使用起 ...

  5. 5月9日 python学习总结 外键、表之间的关联关系、修改表、清空表内容、复制表...

    一.外键foreign key    外键约束: 1.必须先创建被关联表才能创建关联表 2.插入记录时,必须先插入被关联表的记录,才能插入关联表(要用到被关联表)的记录 3.若不设置同步更新和同步删除 ...

  6. 数据表的字段约束:主键、外键、唯一

    一.主键:标记数据唯一非空,一个表最多只能有一个主键. CREATE TABLE products (product_no integer PRIMARY KEY, --主键约束,保证唯一且非空.-- ...

  7. sql向数据库表中插入列,sql给表的列添加说明,sql添加主外键约束,增加列,增加字段

    规则代码 use 数据库名--向表中插入列alter table 表名 add 列名 类型go--给表的列添加说明 execute sp_addextendedproperty 'MS_Descrip ...

  8. DRF如何序列化外键的字段

    我觉得在有些应用场景下,这个操作是有用的,因为可以减少一个AJAX的请求,以增加性能. 当然,是二次请求,还是一次传输.这即要考虑用户体验,还要兼顾服务器性能. 一切是有条件的平衡吧.就算是一次传输, ...

  9. 聊聊数据库中的关键字——字段、属性、列、元组、记录、表、主键、外键

    学完数据库,我们对SQL SERVER 2008中的部分关键字有了大概的了解,下面我来总结一下几个比较重要的关键字:字段.属性.列.记录(元组).表.主键.外键. 一.字段:某一个事物的一个特征,或者 ...

  10. 字段和字段的参数,查询的13个方法,但标的双下划线外键和多对多操作

    字段 常用字段  AutoField() 自增列,必须填入参数 primary_key=True则成为数据库的主键.无该字段时,django自动创建 一个model不能有两个AutoField字段. ...

最新文章

  1. 显示ip的img的url
  2. Git高速入门——Git安装、创建版本号库以及经常使用命令
  3. GridView内嵌DropDownList操作
  4. 由浅入深之Jq选择器(2)
  5. FusionCharts使用问题及解决方法(三)-FusionCharts常见问题大全
  6. VS2010+Opencv-2.4.0的配置攻略
  7. 50-00-040-配置-Flink Configuration简介
  8. 不得了!这个 AI 让企业家、技术人员、投资人同台“互怼”
  9. C和C++ const的声明差异
  10. Linux常用的网络服务基础命令
  11. python的Singleton模式实现
  12. 从副高到评正高的条件_大学老师从副高到正高职称有多难?
  13. 列举python内置函数和使用方法_python学习交流 - 内置函数使用方法和应用举例
  14. 什么是 IP 冲突以及如何解决?
  15. nginx配置https阿里云免费ssl
  16. 重建系统的 WinRE
  17. Wormhole连接教程
  18. 【广告联盟电商SEO】广告联盟网站收集
  19. 工业级光纤收发器的芯片介绍
  20. Juniper链路及接口配置

热门文章

  1. STC学习:温度与光照传感器
  2. OpenCV-图像处理(22、像素重映射(cv::remap))
  3. python 无限循环小程序设计_Python如何实现小程序 无限求和平均
  4. mysql2018漏洞_MySQL多个远程安全漏洞CVE-2018-2562/91 大批版本受影响
  5. 绥化二中高考成绩查询2021,2014绥化中考
  6. python横向输出字符串_Python字符串拼接和格式化输出
  7. 保山一中2021高考成绩查询,云南省保山第一中学
  8. jwt如何加盐_JWT 基础教程
  9. 容器技术Docker K8s 1 云原生技术概述
  10. 丢弃法(基于MXNet)