在设计主键时,通常会考虑以下几点:

1。意义:无意义的定义是从用户的角度来看,这种废话也减少了数据库的冗余信息在一定程度上,人们通常称为内部认同的关键,为什么会这样说,原因之一是内部的,在某种程度上,表中记录的内部,从数据库的范围,如果你选择要在设计时作为主键,用户信息的重要性,那么迟早会面对用户更新此信息的需求,你会打破它的静态。

2、静态:除了唯一标识一个记录和一个外键之间的相关性之外,主键不应考虑其他含义。最理想的状态是不再产生后的变化,所以我们不应该更新后生成主键值。如果更新了,至少这意味着这些信息是有意义的用户,那么你违背了意想不到的意义。(数据集成等操作,我们需要处理主密钥,这是确保数据库的完整性,唯一不考虑。
任何意义都不能决定它的静态性质。

3、简洁:它包含许多主键和少量字段。它还包含主键中的一个字段,该字段在存储类型中是短的。一般用于成形。对于前者,主要考虑与外键相关的因素,后者主要是关于性能的,主键的短表有助于关联的方便性和检索性能。

看看下面的缺陷为基础的主生产计划的关键设计(MSSQL):
复制代码代码如下所示:
主要表
创建表pp_mpsheader(
billno varchar(20)不为空主键,
plandate日期不为空

-从桌子上
创建表pp_mpsbody(
billno varchar(20)不为空,
行号SmallInt不空,
ProductID int不空,
productqty十进制(为)不为空,
主键(billno,行号)

-设置外键
修改表pp_mpsbody
添加外键约束fk_pp_mpsheader_mpsbody(billno)参考pp_mpsheader(billno)

这是一个典型的主从表结构,主表在单号主计划到达时记录。从表格中的这一计划生产的产品数量由billno记录。当用户为一个主生产计划,很可能是由于计划在BillNo被疏忽错了,然后在他的修订号码,需要遵循的主要控制码数表从表数变化的代码,否则单据将在外键约束不能保存。如果没有外键约束,那么数据将失去其完整性。

如果根据注意以上3点,解决方法如下(MSSQL):
复制代码代码如下所示:
主要表
创建表pp_mpsheader(
billid主关键字,
billno varchar(20)不为空,
plandate日期不为空

-从桌子上
CREATE TABLE PP_MPSBody (
billid主关键字,
行号SmallInt不空,
ProductID int不空,
productqty十进制(为)不为空,
主键(billid,行号)

-设置外键
修改表pp_mpsbody
添加外键约束fk_pp_mpsheader_mpsbody(billid)参考pp_mpsheader(billid)

现在,主从表是由billid。当一个生产计划的生成,这是毫无意义的用户生成一个billid。在那之后,主从信息协调问题将不会出现。同时,从表中的信息量小于上述缺陷的设计。因为原来的关键BillNo长度从20字节改为现在的billid4字节,它减少了信息的冗余度。

事实上,有许多例子,例如:
一些设计材料表,用零件图为主键,外键,意味着信息将显示所有零件图的采购、生产和销售,在表中,当在零件图号信息发生变化,所有这些首先信息将需要改变,如果不解决的基本缺陷,你可能需要写一个零件图的变化过程,批处理这些问题,在这个过程中,你可能也要考虑订单处理......问题;
有些设计,关键ID号作为工作人员表,但后来ID从15到18,这意味着人事工作人员身份证信息表每个人都需要改变,如果你是一个设计师,这是一个社会保险机构申请,那么你需要更新。数以百万计的记录;所有工作人员按表编号记录的信息将被外部的十亿计数,那么也许你的其他生活你不需要做其他工作。

因此,选择无意义的关键值作为主要密钥的一部分是为了避免长期的这种变化。