mysql创建代理键技术_2.2.3 代理键

代理键是数据库中用于作为主键的DBMS分配的唯一标识符,通常为较短的数字,不变且对用户无意义。在MySQL中,可以通过AUTO_INCREMENT功能自动分配代理键值。例如,在创建PROPERTY表时,由于原始主键(Street, City, State, ZIP)不理想,可以添加PropertyID作为代理键。在Access和SQL Server中也有类似设置代理键的方法。" 121873941,11526775,产品设计原则与测试视角,"['产品设计', '测试', '用户体验']
摘要由CSDN通过智能技术生成

2.2.3  代理键

代理键是具有DBMS分配的***标识符的列,该标识符已经作为主键添加到表中。每次创建行时由DBMS分配代理键的***值,该值永远不变。

理想的主键是较短的数字值,并且永远不变。有时,表中的某一列可能满足或接近满足这些需求,例如EMPLOYEE表中的EmployeeNumber就是很好的主键。但在其他表中,主键并不完全满足这些需求。考虑如下的表PROPERTY:PROPERTY (Street, City, State, ZIP, OwnerID)

PROPERTY的主键是(Street, City, State, ZIP),它较长且不是数字(尽管它可能不会改变),但它不是理想的主键。此时,数据库设计人员将添加代理键如PropertyID:PROPERTY (PropertyID, Street, City, State, ZIP, OwnerID)

代理键是较短的数字,并且永远不变-- 是理想的主键。代理主键的值对于用户没有任何意义,因此通常在表单或报表中隐藏它们。

在前面讨论的数据库中已经使用了代理键。例如在如图1-10所示的艺术课程数据库中,向CUSTOMER表添加了CustomerNumber代理键,而向COURSE表添加了CourseNumber代理键。

大部分DBMS产品都提供了自动产生键值的功能。图2-7显示了如何在Access 2010中是定义代理键。在Access中,数据类型设置为AutoNumber。有了这一设置,Access就指定CUSTOMER表中***行的CustomerNumber值为1,第二行的CustomerNumber值为2,依此类推。

企业级DBMS产品(例如Microsoft的SQL Server)提供了更多的功能。例如,开发人员可以利用SQL Server确定代理键的初始值和递增量。图2-8显示了如何定义CUSTOMER表的代理键CustomerNumber。在dbo.CUSTOMER表列细节窗口下方的Column Properties(列属性)窗口中,有一组Identity说明,它们告诉SQL Server存在代理键列。CustomerNumber的is Identity值设置为Yes,就把CustomerNumber设置为代理键。代理键的起始值叫做identity seed。对于CustomerNumber,该值设置为1。另外,代理键每次增长的值称为identity increment,这里设为1。这些设置表示,用户创建CUSTOMER表的***行时,SQL Server会将值1赋给CustomerNumber;创建CUSTOMER的第二行时,SQL Server会将值2赋给CustomerNumber,依此类推。

MySQL使用AUTO_INCREMENT函数自动分配代理键的数值。在AUTO_ INCREMENT中,起始值可以是任意值(默认为1),但增量总是1。图2-9显示,CustomerNumber是CUSTOMER的代理键,它使用AUTO_INCREMENT设置该列的值。

【责任编辑:云霞 TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值