关系数据库中的“键”

转载 2006年05月28日 15:09:00
关系数据库中的“键”

主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。

必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和外键的结构是这个设计过程的症结所在。一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的。

首先来谈:主键。

关系数据库依赖于主键---它是数据库物理模式的基石。主键在物理层面上只有两个用途:1. 惟一地标识一行。

                              2. 作为一个可以被外键有效引用的对象。

基于以上这两个用途,下面给出了我在设计物理层面的主键时所遵循的一些原则:

        1. 主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

        2. 主键应该是单列的,以便提高连接和筛选操作的效率。

             注:使用复合键的人通常有两个理由为自己开脱,而这两个理由都是错误的。其一是主键应当具有实际意义,然而,让主键具有意义只不过是给人为地破坏数据库提供了方便。其二是利用这种方法可以在描述多对多关系的连接表中使用两个外部键来作为主键,我也反对这种做法,理由是:复合主键常常导致不良的外键,即当连接表成为另一个从表的主表,而依据上面的第二种方法成为这个表主键的一部分,然,这个表又有可能再成为其它从表的主表,其主键又有可能成了其它从表主键的一部分,如此传递下去,越靠后的从表,其主键将会包含越多的列了。

        3. 永远也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。

                 注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。

        4. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

        5. 主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。

数据库的关系键

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

关系数据库表主键和外键

一、什么是主键、外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键  比如   学生表(学号,姓名,性别,班级)  其...
  • u010604481
  • u010604481
  • 2013年08月03日 15:31
  • 882

数据库中候选键的确定

在学习数据库的时候,经常要碰到候选键的求取,但是一开始的时候,根本搞不清楚怎么去求,最近看了一些文章和资料,终于搞明白了。 首先来看候选键的定义:若关系中的某一属性组的值能唯一地标识一个元组,则...
  • yuzuodeyunwcj
  • yuzuodeyunwcj
  • 2016年06月16日 08:43
  • 1646

基于外键映射的 一对一关系

一. 二.代码实现 1.Department package cn.edu.sdut.hibernate.onetoone; public class Department { pr...
  • CSC_Cockroach
  • CSC_Cockroach
  • 2016年10月30日 16:13
  • 315

关系型数据库基础总结

关系型数据库管理系统简介 数据库的集中式控制有如下优点:   1.降低数据存储的冗余度   2.更高的数据一致性   3.存储的数据可以共享   4.便于维护数据完整性 ...
  • ailxxiaoli
  • ailxxiaoli
  • 2016年08月07日 12:44
  • 947

数据库 主键与索引键的区别

关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途: 惟一地标识一行。 作为一个可以被外键有效引用的对象。 索引是一种特殊的文件(InnoDB数据表上的索引是表空...
  • VMA_LMA
  • VMA_LMA
  • 2013年05月29日 14:03
  • 2037

数据库中主键与外键的理解

数据库中主键与外键的理解       在关系型数据库中,数据结构有逻辑结构和物理结构。物理结构指存储在物理介质上的数据文件的结构。逻辑结构即关系,也就是一张张的二维表。表中的一列即为一个字段(属性...
  • fanwenjieok
  • fanwenjieok
  • 2015年07月19日 17:21
  • 2432

关于数据库主键和外键(终于弄懂啦)

一、什么是主键、外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键  比如   学生表(学号,姓名,性别,班级)  其...
  • bingqingsuimeng
  • bingqingsuimeng
  • 2016年06月06日 15:01
  • 65696

关系型数据库表结构的两个设计技巧

设计关系型数据库的表时,需要给表添加一个ID字段(自增字段,或者uuid字段)和一个version字段(数值类型)。ID字段作为物理主键,用于保证记录的不可重复性和用作外键关联。 ve...
  • shendl
  • shendl
  • 2015年08月12日 13:17
  • 5132

关于数据库主键和外键(终于弄懂啦)

一、什么是主键、外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键  比如   学生表(学号,姓名,性别,班级)  ...
  • harbor1981
  • harbor1981
  • 2016年12月04日 00:09
  • 68919
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关系数据库中的“键”
举报原因:
原因补充:

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