科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VB.NET数据库工具教程之四

VB.NET数据库工具教程之四

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

索引是建立在数据库字段之上的数据结构,用于提供对数据的快速访问

作者:刘彦青编译 来源:yesky 2007年11月9日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
关联和外码

  在能够使用任何DRI前,我们必须定义表之间的关联。只要有共同的属性,二个或更多的数据库表是可以相关联的。例如,我们有一个描述工作岗位的表和一个描述员工的表,在现实生活中,许多员工可能在一个工作岗位工作。假设我们指定一个值来区分不同的工作岗位,我们可以将它称作“岗位ID”,然后如果在每个员工的记录上存储“岗位ID”,于是我们就将员工记录与岗位记录关联了起来。如果我们将“岗位ID”定义为岗位记录的唯一性关健字,就可以将员工记录上的“岗位ID”定义为外码(如图16)。这样,我们就在二个数据库表之间建立了关联。


(图16)

  请注意一下tblEmp表上的外码是如何连接到tblLocation表的主码上的,这一关联定义一种一对多的关系。对于每个工作岗位记录而言,可能存在多个员工记录,在这种关系中,每一方的关健字必须是唯一的。只要索引是唯一的,我们可以使用混合索引。只要具有唯一性,它甚至无需必须是主码。外码被定义在“工作岗位”字段上,如果不存在外码的索引,为了创建这一关联,SQL Server将定义非唯一性索引。

  关联的类型

  有三种基本的关联类型:

  一对一型:对于表B中的记录而言,表A中只存在不超过1个的记录。根据引用完整性设置,可能存在表A中不存在与表B中某记录相对应的记录,或者表B中不存在与表A中某记录相对应的记录。

  一对多型:对于表A中的每个记录而言,在表B中存在0或多个外码与之相同的记录。

  多对多型:对于表A中的每个记录而言,表B中存在0或多个记录与之相对应;对于表B中的每个记录而言,表A中存在与之相去对应的0或多个记录。

  在一对多、多对多类型的关联中是否会有0记录出现取决于引用完整性设置的情况。

  引用完整性

  在学习了如何定义表之间的关联后,我们下面来研究DRI的问题。在对定义了关联的表进行插入或更新操作时,我们将引用完整性定义为SQL Server使用的规则。如下图所示,DRI的设置在“属性页”的下半部分,如图17所示


(图17)

  ·创建时检查现有数据━━这一选项使SQL Server在第一次保存关联时验证所有DRI规则。应当小心使用这一选项,在较大的表上它可能会需要较长的时间。

  ·复制时执行关联━━这一选项使SQL Server在复制数据时执行关联。除非正在执行复制工作,这一选项与我们没有关系。如果正在执行复制操作,如果定义了一个关联,我们需要关闭这一选项。关闭这一选项 ,在对数据库进行同步时,SQL Server不对DRI规则进行检查。
  
  ·运行INSERT和UPDATE时执行关联━━这一选项使SQL Server在执行插入或更新操作时检查关联。如果外码丢失或与外部数据库表中的一个值不匹配,插入或更新操作会失败,SQL Server将给出错误信息。如果没有选择该选择项,SQL Server将在外码数据无效的情况下执行插入或更新操作。如果该选择了该选项,下面的二个选项才能够使用。

  ·更新相关字段━━一对多类型的关联中的一个相关字段改变后,所有相关字段都会自动地更新为新值。应当谨慎使用这一选项,因为大规模数据库表的性能可能因此而大幅度下降。如果不选择该选项,如果改变相关字段的值,SQL Server会出现错误,因为这会破坏引用完整性。

  ·删除相关字段━━如果删除一对多关联类型的数据库表中的一个记录,相关联的数据库表中具有相同外码的所有记录将被全部删除。如果没有选择这一选项,删除具有相关记录的记录会触发SQL Server出现错误。

  检查约束

  检查约束(图3)是字段在被写到数据库前应用于字段的规则。例如,我们可以指定一个字段的值必须小于100或文本字段不能全部由空格组成。


(图18)

  约束表达式必须返回“真”或“假”,而且不能包含集合表达式。图18中的约束使用SQL Server拒绝Contact Name字段中的值全是空格。三个检查框的功能与“关联”标签相似。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章