数据库主键设置探讨

来源 :中国信息化·学术版 | 被引量 : 0次 | 上传用户:vismiling
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】数据库应用程序涉及到计算机软件应用的方方面面,很多人在开发数据库应用程序时受到数据库表主键设置的影响,导致开发过程遇到不少的麻烦,本文就关系型数据库的表主键设置的必要性、类型、策略等方面作出探讨。
  【关键词】数据库 主键 主键设置策略
  【中图分类号】TP3 【文献标识码】A 【文章编号】1672-5158(2013)03-0122-02
  “工欲善其事,必先利其器”这句话表明工具的重要性,其实也反映了在一个工程项目中基础工作的重要性。同样,在关系型数据库应用程序开发中,我们首先要解决的问题就是数据库的设计,而其中表主键设置的好坏更是决定着程序设计的方便性及效率性,它是一个绕不开的问题。
  一、主键的必要性
  有些人在设计数据库时纠结要不要设置主键,那就先让我们理清以下两点:
  1.什么是主键
  主键,又称主码。数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。
  2.主键的必要性
  从主键的定义可以看出,主键可以唯一标识一行记录,所以可以确保执行数据更新、删除的时候不会出现重复及张冠李戴的错误。另外主键的值不能为空,主鍵往往与外键共同作用,用以保证数据表信息的完整性。而且这些限制可以通过数据库系统做到,不需要另外编写程序来完成,所以为表设置相应的主键是必要的。
  二、自然键还是代理键好
  有些人会告诉你,你应该使用自然键来作主键,也有人说你应该总是使用代理键作主键,所以首先要确定用自然键还是用代理键来作主键的问题。现实的情况是,自然键和代理键有各自的优点和缺点,并且没有哪一种是完美的,换句话说,你要根据你自己在软件设计中的需求来选择。
  1.自然键
  自然键也叫业务主键。在数据库表中把具有业务逻辑含义的字段作为主键,称为“自然主键(Natural Key)”。自然键,这是一个主键的属性,它也往往是实体的一个现实中存在的属性,它的好处是,它们已经存在,你并不需要另外引入一个新的“非自然”值到你的数据架构中,而且这种主键见名识义;另外用户通常都是对业务相关的字段进行查找(比如员工的工号,书本的 ISBN No. ),自然键能够实现聚集存放,对于索引及查找的效率是比较高的。
  它的缺点也是来自它的业务含义,这种主键信息能有效地耦合到数据库中,业务主键一旦改变则系统中关联该主键的部分的修改将会是不可避免的,并且引用越多改动越大,例如:学生退学,记录删除,学生又回来复读,要用回以前的学号;又如原来学号是数字型的,现决定改为字符型,你首先必需修改学生基本信息表中“学号”的数据类型,然后还要修改所有关联表中的外键数据类型,所以对于以后可能要变动的属性作为主键,对于众多关联表来说维护起来十分麻,毕竞没有任何一个业务是永远不变的。
  2.代理键
  代理键也叫逻辑主键。在数据库表中采用一个与当前表中逻辑信息无关的字段作为其主键,称为“代理主键”。它是引入一个新的数据项作为主键,这是一个没有业务含义的主键。例如在学生基本情况表中,我们新增一数据项studentID,它不是学生的学号,在这种情况下,学生学号已经成为一项非键列。
  代理键强调主键不应该具有实际的意义,它刚好与自然键是的定义相反,例如订单表中的“订单编号”字段,而这个字段符合自然键的定义,它在订单信息表中具有唯一性,能够唯一标识记录,但是不建议用“订单编号”字段作为主键的,因为具有实际意义的字段,具有“意义更改”的可能性。现实情况是,原先输入某一订单,后来因某一原因该订单作废,并重新生成订单,而且订单号要保持原订单号一致,这样原来的主键就面临危险了。代理键的好处是对于数据表的维护处理方便,当要增加记录时,生成代理键的值是一个新的键值,与原有数据不存在冲突问题。当然,缺点是,这种主键在一定程度增加了表的复杂度。
  相比代理键而言,使用业务主键的主要原因或好处是,增加逻辑主键就是增加了一个业务无关的字段,而用户通常都是对于业务相关的字段进行查找(比如员工的工号,书本的 ISBN No. ),这样我们除了为逻辑主键加索引,还必须为这些业务字段加索引,这样数据库的性能就会下降,而且也增加了存储空间的开销。所以对于业务上确实不常改变的基础数据而言,使用业务主键不失是一个比较好的选择。
  因此,使用自然键还是代理键,主要取决于系统规模的大小及日后的变动性,对于小项目,以后扩展不会很大的话,也允许用实际唯一的字段作主键的,否则,使用代理键更利于适应未来不确定的变化。
  三、采用单列键还是复合键作为主键
  所谓复合主键即联合主键,是通过两个或者多个字段的组合作为主键。
  使用复合主键的主要原因和使用业务主键是相关的,在业务主键只使用一个字段不能解决问题情况下,那就只能使用多个字段了。例如在学生成绩管理系统中,有几个表分别是学生(学号,姓名,…)、课程(课程编号,课程名称,…),学生成绩(学号,课程编号,学期号,…),在学生成绩表中使用学号不够用了,要加上课程号,另外还要加上学期号(可能存在同一课程两个学期开设情况)。这种使用复合主键方式存着在几点弊端:
  1.数据存储冗余:随着这种主从关系的延伸,必然导致数据库中需要重复存储的数据变大,当主表本身就是复合主键时,关联的从表中要重新存储该主键字段一次,存在多级关联时就更明显。原因是:复合主键导致不良的外键。
  2.SQL命令复杂化及效率降低:当存在复合主键时,SQL语句长度增加;同时,联合主键自动生成联合索引,需要将主表的多个字段与子表的多个字段关联以获取满足某些条件的所有详细情况记录。
  3.程序复杂度增加:需要设置及传递多个参数。   使用复合键的人通常有两个理由为自己开脱,而这两个理由都是错误的。其一是主键应当具有实际意义,然而,让主键具有意义只不过是给人为地破坏数据库提供了方便。其二是利用这种方法可以在描述多对多关系的连接表中使用两个外部键来作为主键。
  由此可见,单列主键还是比较简单的,特别是对于提高连接和筛选操作的效率而言有优势。
  四、几种主键策略的选择
  主键设置存在多种策略可以选择,我们可以对比下几种常用策略的优缺点,以利于我们做出选择。
  1.编号作主键
  此方法就是采用实际业务中的唯一字段的“编号”作为主键设计,也就是自然键方式,在各种实体信息中都存在相应编号,如学生编号,公民身份证编号,员工编号等,在小型的项目中是推荐这样做的,因为可以使项目比较简单化,但在使用中隐含一些麻烦,它的缺点存在两个方面:
  —当业务要求编号可以重复时造成存储不了的情况
  对涉及编号数据定义改变时需要大量修改关联表引用的外键的定义这个问题在上面自然键中已作出说明。
  2.自动编号主键
  这种方法就是新建一个ID字段,自动增长,众多数据库系统都可以定义自动增长型主键,方便且满足主键的原则。优缺点如下:(下转59页)
  ■系统集成问题
  由于主键生成脱离了系统中的自动生成方法,在与其他系统集成时,很难保证自制表中的最大值与导入后的保持一致。在导入时,为了区分新老数据,可能会在老数据主键前统一加一个“o”(old)来表示这是老数据,但又会遇到数字型问题。解决办法是,在“自制加一”中把主键设为字符型的,字符型主键可以应付很多我们意想不到的情况。
  五、GUID主键
  采用GUID主键,优点是:主键值可以自动生成,也可以程序生成,GUID具有唯一性,在任何情况下,可以产生全球唯一的值。当要求从另一个系统中导入数据,键值不可能重复,可以解决系统集成问题。缺点是:GUID值太复杂,不易记忆,而且数据太長,影响数据库效率及增加存储空间。
  小结:
  由此可见,主键的设置没有固定方式,选择什么样的主键原则还是要根据项目的情况:项目的大小,项目的扩展情况,项目的数据系统的合并或变更情况,主要原则是考虑数据处理的方便性及效率性。
其他文献
在纺织行业尚未走出困境时期,降本增效就显得更为迫切。目前新型纺织设备中的铝合金零部件的损耗,也是一笔昂贵的开支。我们公司通过几年的生产实践,用收集的废铝屑,进行科学的熔化,工艺试验后,熔炼回收率达到69%以上,按此方法,生产的铝合金纺织配件,合格率达90%以上,既满足了生产的急需,又大大降低了外购成本。  一、生产试验的起因  新型纺织设备中的箱体、导轮等零件,大多数采用铝合金材料,其外购厂家零部
期刊
铝的可再生性是工业常用金属材料中最好的。这主要由于铝具有良好的抗腐蚀性,如建筑铝门窗、高压输电线、交通工具上的铝构件和零配件以及易拉罐等在其服役期间仅发生极少量的腐蚀损失。  在重熔回收过程中的烧损也很小。使废弃铝料的可回收率极高,为所有金属材料之最。而且再生加工后的铝及铝合金可以达到性能接近甚至等于原生铝的水平。再生铝的冶金质量控制也是评价铝工业技术水平的一个重要参数。  四、影响气体含量的因素
期刊
随着我国经济社会的发展及人民生活水平的提高,我国的铝易拉罐消费量逐年增加,2007年已超过200亿只,并以指数式地递增。相应的废铝易拉罐的回收量也越来越大,据不完全统计,近年已达到十几万吨。众所周知,铝易拉罐的罐体是3004牌号的铝合金、罐盖是5182牌号的铝合金,这些铝合金都是用优质的原生铝配制而成的。而目前我国回收的铝易拉罐都被降级使用,制成了副牌的A102、ADC-12、非标铝锭等档次不高的
期刊
【摘要】本文按照木桶理论,并遵循三分技术、七分管理的思路,从信息安全管理的组织及制度建设,到安全意识的提高,最后结合技术手段,建立较完备的信息安全体系,并结合盾安集团的实际情况,以较高的性价比,达到了非相关多元化跨区域企业的信息安全建设目标。  【关键词】信息安全;多元化集团;木桶理论  【中图分类号】TP309  【文献标识码】A  【文章编号】1672—5158(2012)10-0437-04
期刊
加冷轧机组,通过多道次的轧制,以增加杆的致密度,细化结晶,提高铜杆的抗拉强度和导电率。  第四,用反射炉的低氧铜作上引炉的铜液为什么不行?用反射炉精炼的铜水引到上引炉,上引出的铜杆质量不达标,主要表现在导电率和延伸率都不合格,关键是铜水含氧量高出十几个数量级。  用反射炉熔炼废杂铜可以生产低氧光亮铜杆,但不能生产无氧铜杆,因为铜液中的氧和氢的含量远远超标,这是关键所在。  怎样脱除铜液中的氧和氢?
期刊
【摘 要】移动GIS作为传统GIS新的技术热点,正在受到越来越多的人的关注,而各种智能终端操作平台的出现,为移动GIS的开发提供了更多的选择,如何在各个复杂的环境中挑选出符合自己需求的移动GIS平台,则是一个关键的问题。本文研究了市场上的主流智能平台,并总结出它们各自的特点,并最终对各智能平台进行比较。  【关键词】移动GIS、智能平台、android  【中图分类号】TN929.5 【文献标识码
期刊
【摘 要】本文主要阐述了株洲市石峰区土壤重金属治理的研究,希望能为广大同仁提供参考。   【关键词】株洲市,石峰区,重金属污染,治理   【中图分类号】X52 【文献标识码】A 【文章编号】1672-5158(2013)03-0049-01   一、地理位置分析   1、区位   明峰生态园位于石峰区清水塘办事处的大龙村大华管理处、白马林场及铜锣湾办事处的清水村相邻的山地林场,北接微波站,南至汪家
期刊
【摘 要】利用西门子现场总线Profibus技术和力士乐伺服控制技术来实现全钢子午线轮胎高精度胎面定长裁断控制系统。  【关键词】胎面定长裁断,Profibus技术,力士乐伺服控制技术  【中图分类号】TP273 【文献标识码】A 【文章编号】1672-5158(2013)03-0111-01  全钢子午线轮胎生产过程中胎面定长裁断是其关键工序之一,胶料投入挤出机后压出并经牵引拉伸、冷却及定长裁断
期刊
【摘 要】随着IPv6技术的日渐成熟,基于IPv6网络的信息化应用将会层出不穷。而与人们生活息息相关的信息化产品就是手机。现在的3G手机将会被基于IPv6技术的手机所取代。IPv6手机将会是融合3G移动通信系统和IPv6网络系统的最佳终端。它的应用将会促进中国教育的发展,提高人们的生活水平。   【关键字】IPv6;第三代移动通信;3G手机; IPv6手機   【中图分类号】TN929 【文献标识
期刊
【摘 要】高压变频器实现了对除尘风机的无极调速,满足了生产工艺过程对电机调速控制的要求,达到高效率和高质量的目的,可以大幅度的节约能源,降低成本。   【中图分类号】TN773.1 【文献标识码】A 【文章编号】1672-5158(2013)03-0159-01   1.引言   在高炉出铁的过程中,出铁场会产生大量的灰尘、烟气以及一些有害物质,除尘系统将这些有害物质进行处理。根据炼铁工艺,高炉每
期刊