详谈关系数据库中的“键”(续2)

原创 2006年05月28日 14:15:00

详谈关系数据库中的“键”(续)

 今天我们来讨论外键。

   从表通过指向主表的外键来与主表相关联。人们常犯的一种错误是:认为参照完整性是对于主键的约束。但实际上,参照完整性要求的是外键值必须引用有效的主键值,所以这项约束是对于外键的约束,而不是对于主键的约束。
T-SQL脚本中,可以使用两种方法来声明完整性约束:既可以在创建表的代码中声明完整性约束,也可以在创建表之后再创建约束。其声明的格式如下:
  ForeignKeyColumn FOREIGN KEY REFERENCES PrimaryTable(PKID)
      可选的外键与强制的外键之间存在着很大的区别。一些关系的外键必须具有值,但对于其他一些关系就不必如此,无论外键有值或者没有值,其数据都是有效的。在物理层,这种差别是通过外键列能否为空体现出来的。如果外键是强制的,那么外键列就不能允许输入空值。相反,可选的外键,在相应的列上允许输入空值。对于具有复杂的可选性的关系,将需要通过Check约束或者触发器来全面地维护这种关系。
       由参照完整性所带来的一种复杂性是:如果从表中的记录引用了主表中的一行记录,那么RI(Referential Integrity)将阻止对这一行记录进行删除操作,除非从表中引用了它的记录都被删除了。否则,如果删除了主表中的这一行记录,而从表中的那些记录行仍旧指向这个刚被删除的记录的主键值,参照完整性就被破坏了。
       解决这个问题的一种方法就是做级联删除操作。它将把主表中的记录及其相关的从表中的记录一起删除,删除的顺序是:首先删除从表中的相关记录,然后再删除主表中的记录,因此它能够维护参照完整性。在T-SQL代码中启用级联删除选项的方法如下:
    FOREIGN KEY REFERENCES dbo.[TABLENAME] ON DELETE CASCADE
       在确定对于某个外键是否要采用级联删除选项时,可以使用以下由实践中总结出来的原则:
        1. 如果从表中的数据必须与主表中的数据结合在一起才有意义,一旦脱离了主表中的数据便毫无意义,那么应当使用级联删除。
        2. 如果从表中的数据具有它自己的含义,那么就不应该使用级联删除。
        3. 如果外键是可选的,那么永远也不要使用级联删除。

详谈关系数据库中的“键”(续1)

      (1)天然主键               在现实生活中存在着许多看起来可以惟一地标识一行记录的值,如:身份证号码、汽车牌照号码等。数据库逻辑模式设计往往会使用这些天然的主键,尽管这些天然...
  • hxd001_810
  • hxd001_810
  • 2006年05月27日 18:04
  • 1347

详谈关系数据库中的“键”

                                                       关系数据库中的“键”主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设...
  • hxd001_810
  • hxd001_810
  • 2006年05月27日 11:57
  • 2438

数据库中的键

超键可以区别表中的元组的一个属性或几个属性的集合主键超键的一种,是超键中集合最小的那个,主键不能为空外键引用其他表中的主键...
  • Mumu2609
  • Mumu2609
  • 2016年10月31日 18:05
  • 139

关系数据库中的“键”

关系数据库中的“键”主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键...
  • suny803
  • suny803
  • 2006年05月28日 15:09
  • 553

数据库的关系键

 关系键是关系数据库的重要组成部分。关系键是一个表中的一个或几个属性,用来标识该表的每一行或与另一个表产生联系。 数据库理论中, 超键、候选键与主键之间的关系: • 候选...
  • xfb12345678
  • xfb12345678
  • 2014年12月29日 16:32
  • 952

【SQL数据库】【软考】主键、候选键、超键、全码

键          元组:表中的一行记录就是元组            候选键:能惟一标识元组,并且不含多余属性的属性(组合属性)          全码(键):关系模型的所有属性组是...
  • u010191034
  • u010191034
  • 2014年10月26日 18:29
  • 2389

关系型数据库与非关系型数据库 优缺点

关系型数据库与非关系型数据库 关系模型指的是采用二维表格来存储数据的模型,而关系型数据库由二维表及其之间的联系组成的一个数据组织。常见的由mysql sqlserver 关系型数据库的优点: ...
  • masaichi_
  • masaichi_
  • 2017年02月27日 20:29
  • 1184

JAVA中的网络编程详解

1、网络编程 网络编程          网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分...
  • fang410103
  • fang410103
  • 2017年03月15日 07:44
  • 594

Android 短视频采集之视频断点拍摄、回删功能的实现方法总结

本文介绍了实现类似美拍、秒拍的段短视频断点录制功能的两种方案,并给出了其优劣比较。...
  • u011495684
  • u011495684
  • 2017年12月27日 11:59
  • 87

已知二叉树的前序和中序序列,构建二叉树并求后序序列,java实现。

已知二叉树的前序和中序序列,或者已知二叉树的后序和中序序列,是能够唯一确定一棵二叉树的。但是如果仅知道二叉树的前序和后序序列,一般是不能唯一确定一棵二叉树的,但是可以分析有多少种可能的二叉树,这个没有...
  • u010465615
  • u010465615
  • 2016年04月16日 15:17
  • 148
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:详谈关系数据库中的“键”(续2)
举报原因:
原因补充:

(最多只允许输入30个字)