外键的含义是什么?

[复制链接]
查看11 | 回复9 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
我是SQL2000的初学者,主键的含义我大概能理解,就是能够唯一的标识表,而且作为主键的该字段内容不能重复,利用主键可以方便查询等(我的理解只是书面的,如何在实例中利用主键进行查询我不太明白,教材上根本就没有相关的例子,查询也是查其他字段,跟主键关系不大),外键教材上讲是同一个数据库的两个表之间的关系,这样讲让我这种初学者根本理解不透彻,练习题也只是说把某个字段设成外键,我照本喧科运行后提示外键和主键的字段内容还是长度不一致,我也记得不太清楚了,大概就这意思,外键没有设成功,也没有理解设外键的用意和如何正确利用,哪位高手能为我讲解一下?谢谢!
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
主键和外键是相对于整个数据库来说的,总体来说就是要实现数据库的实体完整性、参照完整性等完整性的约束。并满足数据库规范化的要求 1NF 、2NF...
对于一个表定义了一个主键,对于该表可以为通过该键唯一地表示表中的每一记录。外键是相对于表中的一个列给它的一个约束,一般是另一个表中的主键,该列的值必须在另一个表中出现。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
另一个表中的数据如果被该表引用,就必须先删除该表的引用才能删除另一个表的记录
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
大哥,讲了半天,太教条了,我根本不明白!举一点具体的例子好吗?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
建议先看看SQL的书
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
恩, 好象不缺少一些关系数据库的基础知识.
简单的说, 在关系型数据库中的每一个表都具备这样的特点, 在同一个表中没有完全一致的两行数据, 当一行数据可以有少数几个属性确定的话, 这几个属性就可以成为主键, 设立了表的主键之后, 数据库系统会为主键的列建立索引和制约, 利用主键进行检索的速度是最快的.
如果有两个表AB, 他们之间存在着某种对应关系, 这种关系可以是A中一行记录对应于B中的一行记录, 也可以是A的一行记录对应于B的多行记录, 还可以是A的多行对应于B的多行, 在关系型数据库中, 这种对应关系也要做成关系表, 下面就一对一, 一对多, 多对多几种情况来说明一下关系表
一对一
表A(学号, 姓名)
表B(学号, 学习成绩)
表A是一份学生名单, 学号是主键
表B是一份成绩单, 学号也是主键, 这样两个表就是一对一的关系, 反映出这一关系的是学号, 如果把表A做为主表的话, 表B的学号就是外键了
一对多
表A(班级, 人数)
表B(学号, 姓名)
表A是一份班级列表, 表B是一分学生名单, 每个学生都属于某一个班级, 而一个班级可以有很多学生
为了表示这样的关系, 可以做一个关系表C(学号, 班级) 其中, 学号是主键, 这就保证了一对多的关系, 而学号和班级, 都是外键, 由于B,C
多对多
表A(课程, 学分)
表B(学号, 姓名)
表A是一份课程表
表B是份名单, 一个学生可以选多门课程, 一门课程中也可以有很多学生, 为了反映这样的关系建立表C(课程, 学号)其中课程和学号都是主键, 这就保证了多对多的关系, 同时他们也是外键
作为外键的属性反映了主表中的某些属性, 因此其类型要和主表的对应属性一致才行
建立了外键之后会产生一致性的制约, 比如说, 在一对多的例子中, 不允许在关系表中出现主表中没有的学号或者是班级, 另外, 对外键的更新和删除, 也就有了下面两种制约
- 级联, 当删除了主表的的主键之后, 同时也删除关系表中的外键, 比如, 删除了一对多的例子中删除了班级, 系统会自动删除关系表C中含有该班级的所有记录
- 制约, 只有当关系表中没有与该主键对应的外键时才允许删除该主键, 再比如, 在一对多的例子中, 想删除某一班级的话, 就必须先删除关系表C中所有含该班级的记录
外键的设立可以保证数据的对应关系避免因为错误操作而遭到破坏, 同时, 外键也可以提示系统事先建立索引和结合操作的执行计划, 从而提高结合计算的效率
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
肥猫猫好有耐心啊!..


回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。
用“外键”的关键字到sqlserver的联机丛书中查相关的主题,
说的很清楚的。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
肥猫猫好耐心,俺顶,俺顶,俺顶顶顶:)
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
顶肥猫!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行