熊慧芳
摘 要:数据库设计的好坏会直接影响到软件研发和实际操作过程,而以主键为核心的部分又主导着数据库的功能和运行状态,间接发挥了后台支撑的作用。本文深入了解了主键的内容和属性,研究主键设计过程中遵循的几大原则,在此基础上提出了主键的设计方法,提倡以编号、自动编号、COMB、自制加一来作为主键,在维持关系表唯一性、关联性的前提下开拓数据库的稳定性、可行性,真正意义上开发出适合数据录入、用户检索和网络运行的主键类型。
关键词:数据库;主键;设计方法
科学、有效的数据库设计对软件研发工作起到事半功倍的作用,细化数据库工作的每个环节,其中核心部分就是主键设计,它直接影响到数据导入、用户检索等重要问题,只有可行性高、稳定性强且可靠性大的数据库主键才能建立起关系表的关联关系,实现记录和插录的辨识性、一致性。根据主键设计原则来寻找和扩展方式方法至关重要,选择真正适合数据库运行的主键模式,提高运行速度。
1 主键
主键具有标识某一行的作用,从本质来说是一类属性或属性组,通常应用在处理外键关联问题上,主键的嵌入使得修改和删除记录变得更加便捷、有效,能维持整个关系表的完好度。实际操作过程中主键必须是实值,且单个表对应单个键和多个候选键。在操作要求的指导下主键可进行删除和设置处理,主键的功能还体现在审核数据和确保资料无恙等方面上,所以在删除或更新数据时准确率显著提高,主键和外键构成参照关系,还肩负着完整性约束的任务,避免出现数据出错的现象。一般来说主键所在列等同于关键字,实际查询过程中访问速度得以显著提高,使其快速呈现出有效数据。
2 主键的设计原则
存在主键即代表着整个表结构具备完整性和可行性,将可辨别的字段放入表内即可生成记录。将主键嵌入表中可顺势形成所有记录,在这个过程中还约束了和已有主键字段值一致的数据,避免出现输入和已存值相同的情况;只要不同表之间存在关联关系即可引用对方记录,利用表内主键值来引索出所需数据。设计切合数据库、关系表的主键至关重要,对后续运行状态影响巨大,在设计关系表主键过程中要遵循以下原则:(1)外键匹配相应的关联字段;(2)单个键只能存在一个;(3)禁止出现复合键;(4)单个外键只能对应关联中一个键字段。
3 主键的设计方法
3.1 编号作主键
使用编号来设计主键的模式通常应用在小项目低扩展问题上,实际业务中涉及的唯一字段就是“编号”本身,附着了主键功能和属性。学校在设计学生表时擅长用“学号”来替代主键,从方法和执行环节上来说都相对简单,操作数据库间数据复制活动中能有效的避开键值矛盾区域,保证数据合并的有效性,而实际执行过程中只需要将主键值段放入唯一的数据库中即可。该种方法虽然原理清晰、操作简单,但也存在或多或少的问题,首先在编号修改过程中要花费大量精力来寻找相关表,增加了发生数据冲突的概率,降低了网络运行速度,而手工维护主键的模式繁琐而量大,不利于关系表的正常运行状态。
3.2 自动编号作主键
自动编号作主键的第一步就是建立起有效的ID字段,它具有自动增长、快速调度的优点,所以无论向数据库添加多少数据都不会受到主键取值活动的影响,只要记录插录生成就会将信息反馈到数据库系统,分配出来的数值是唯一且有效的。自动编号方法还具有方便、节省的优点,本身数字化类型决定了小空间、宽检索特点,解决了中间多环节、杂流程的问题。唯一的不足之处体现在手动插入指定ID记录现象上,操作者在遇到系统之间集成情况时难以完成数据导入工作,而原系统的ID发生主键矛盾的概率剧增,同样会带来网络的负担甚至崩溃。运行数据缓冲模式时也会造成一定的困扰,主键和外键的值将变得不确定。
3.3 使用“COMB(Combine)”作主键
“COMB”设计方法由Jimmy Nilsson提出,在《The Cost of GUIDs as Primary Keys》得以实现COMB数据类型。首先将组合方式来排列位于UniqueIdentifier前十位的字节,而GUID生成的时间则用最后的6个字节来代替,完成UinqueIdentifier和时间信息之间的有效组合,实现唯一性和成效性,对使用者来说能迅速得到索引结果。使用COMB作主键虽然能避免数据重复的情况,但在执行删除、插入等操作环节时速度有所降低。
3.4 自制加一作主键
自制加一作主键极具灵活性,首先要把主键类型设置为字符型,通过手动完成表的建立工作,以表名来设为字段,保证当前序列值满足特别表要求。在处理表中插入值时要从多类表中选择相应表,往最大值内加一后即可插入。Lock和unLock线程方式可以很好的处理数据并发的现象,一旦生成值符合要求就开启Lock模式,值出来了就转换成unLock模式,很好的解决了表值同时生成的问题。缺点就是很难在导前和导后保持一致性,在和其他系统集成的过程中生成方法会不断改变,自制表的主动性会随之减弱。
4 结语
设计数据库主键过程中要综合考量各方面问题,以数据库规模为出发点,分析用户群、操作频率、应用方向等内容,以设计原则为指导,考量操作的可行性和稳定性,以关系表、数据库的关联关系为契合点,避免出现主键数值重复、冲突的现象,真正意义上优化数据库的主键功能。
[参考文献]
[1]巫宗宾.数据库表主键设计方法的探讨[J].数字社区&智能家居,2006(11):25-25,50.
[2]鱼功胜.关系数据库主键设计的研究[J].中国高新技术企业评价,2007(4):83-83,91.