数据库主键和外键的作用_第1页
数据库主键和外键的作用_第2页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库主键和外键的作用首先介绍一下什么是主键、什么是外键。1 什么是主键 外键学生表(学号,姓名,性别,班级) 学号是一个主键课程表(课程号,课程名,学分)课程号是一个主键成绩表(学号,课程号,成绩)学号和课程号的属性组构成一个主键成绩表中的学号不是成绩表的主键,不过是学生表的主键,成绩表的外键,同理课程号也是成绩表的外键定义:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键以一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表2 外键的作用外键用于保持数据一致性,完整性主要目的是控制存储在外键表中的数据3 主键的设计原则1)主键应当是对用户没有意义的2)主键应该是单列的,以提高连接和筛选操作的效率复合键的使用通常出于两点考虑:a)主键应当具有意义-这为认为的破坏数据库提供了方便b)在描述多对多关系的连接表中可以使用两个外部键作为主键-该表可能成为其他从表的主表,并成为从表的主键的一部分,使得之后的从表包含更多的列3)永远不要更新主键4)主键不应该包含动态变化的数据(时间戳等)5)主键应当由计算机自动生成4 数据库主键选取策略建立数据库的时候,需要为每张表指定一个主键(一个表只能有一个主键,但是可以有多个候选索引)常见的主键选取方式有:1)自动增长型字段自动增长型主键会省略很多繁琐的工作,但在数据缓冲模式下,不能预先填写主键与外键的值Order(OrderID,OrderDate)/主键OrderID是自动增长型字段OrderDetail(OrderID,LineNum,ProductID,Price)如果要在Order表中插入一条记录,在OrderDetail表中插入若干条记录,为了能在OrderDetail表中插入正确的OrderID字段,必须先更新Order表以获得系统系统分配的OrderID,但是为了确保数据一致性,Order表和OrderDetail表必须在事务保护下同时进行更新,这显然是矛盾的除此之外,当需要在多个数据库之间进行数据复制时,自动增长型字段可能造成主键冲突2)手动增长型字段3)使用UniqueIdentifier SQL Server提供一个UniqueIdentifier数据类型(16字节),并提供一个生成函数NEWID(),生成一个唯一的UniqueIdentifier4)使用COMB类型保留UniqueIdentifier的前10字节,后6字节表示生成时间-1 外键外键(FK)是用于建立或加强两个表数据之间的链接的一列或多列。通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的连接,这个列就成为第二个表的外键FK约束的目的是控制存储在外表中的数据,同时可以控制对主键表中数据的修改例如:publishers表中记录出版商的信息,titles表中记录书的信息,如果在publishers的表中删除一个出版商,而这个出版商的ID在titles表中记录书的信息时被使用了,则这两个表之间关联的完整性将被破坏,即titles表中该出版商的书籍因为与publisher表中的数据没有链接而变的孤立。FK约束可以防止这种情况的发生,如果主键表中数据的更改使得与外键表中数据的链接失效,则这种更改是不能实现的;如果试图删除主键表中的行或试图修改主键值,而该主键值与另一个表的FK约束值相关,则该操作不可实现。若要成功的更改或删除FK约束的行,可以现在外键表中删除外键数据或更改外键数据,然后将外键连接到不同的主键数据上去外键主要是用来控制数据库中的数据完整性的,当对一个表的数据进行操作时,和他有关联的一个表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论