商务合作加Q:411239339

数据库外键和主键的区别

浏览:628次阅读
一条评论

共计 1217 个字符,预计需要花费 4 分钟才能阅读完成。

外键是 数据库 一级的一个完整性约束,就是数据库基础理论书中所说的“参照完整性”的数据库实现方式。  

外键属性当然是可以去掉的,如果你不想再用这种约束,对编程当然不会有什么影响,但相应的录入数据的时候就不对录入的数据进行“参照完整性”检查了。   
    例如有两个表   
    A(a,b)   :a 为主键,b 为外键(来自于 B.b)   
    B(b,c,d)   :b 为主键     
如果我把字段 b 的外键属性去掉,对编程没什么影响。
如上面,A 中的 b 要么为空,要么是在 B 的 b 中存在的值,有外键的时候,数据库会自动帮你检查 A 的 b 是否在 B 的 b 中存在。

1、外建表达的是参照完整性:这是数据固有的,与程序无关。因此,应该交给 DBMS 来做。  
2、使用外建,简单直观,可以直接在数据模型中体现,无论是设计、维护等回有很大的好处,特别是对于分析现有的数据库的好处时非常明显的 -- 前不久我分析了一个企业现有的数据库,里面的参照完整性约束有的是外键描述,有的是用触发器实现,感觉很明显。当然,文档里可能有,但是也可能不全,但是外键就非常明显和直观。  
3、既然我们可以用触发器或程序完成的这个工作(指参照完整性约束),DBMS 已经提供了手段,为什么我们要自己去做?而且我们做的应该说没有 RDBMS 做得好。实际上,早期的 RDBMS 并没有外键,现在都有了,我认为数据库厂商增加这个功能是有道理的。从这个角度来说,外键更方便。  
4、关于方便,根据我带项目的情况来看,程序员确实有反映,主要是在调试时输入数据麻烦:如果数据可以违反参照完整性,那么就是说参照完整性本身就不对名誉业务冲突,此时也不应该用触发期货程序实现;否则,说明数据是错误的,根本就不应该进入数据库!而且,这也应该是 测试 系统的一个内容:阻止非法数据。实际上,前台程序应该对这种提交失败做出处理。数据是企业的而非程序的,储程序要尽量与数据分离,反之亦然。

最后说一下, 建键几个原则:

1、  为关联字段创建外键。
2、  所有的键都必须唯一。
3、避免使用复合键。
4、外键总是关联唯一的键字段。 

定义主键和外键主要是为了维护关系数据库的完整性,总结一下:

一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。

外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是 B 表的主键,那他就可以是 A 表的外键。

二、主键、外键和索引的区别

定义:

 主键 -- 唯一标识一条记录,不能有重复的,不允许为空

 外键 -- 表的外键是另一表的主键 外键可以有重复的 可以是空值

 索引 -- 该字段没有重复值,但可以有一个空值

作用:

 主键 -- 用来保证数据完整性

 外键 -- 用来和其他表建立联系用的

 索引 -- 是提高查询排序的速度

个数:

 主键 -- 主键只能有一个

 外键 -- 一个表可以有多个外键

 索引 -- 一个表可以有多个唯一索引

正文完
扫码赞助
post-qrcode
 0
果子
版权声明:本站原创文章,由 果子 于2017-04-20发表,共计1217字。
转载说明:除特殊说明外本站文章皆由果较瘦原创发布,转载请注明出处。
评论(一条评论)
匿名
2017-05-19 01:03:25 回复

666

 Windows  Chrome  中国广东省中山市联通