1.
背景
日常数据功能开发过程中,会经常要开发人员自己设计物理存储模型(底层模型),在设计过程中往往会遇到一些设计共性问题,比如:物理模型需要的主键采用自然键还是业务键、相关时间戳字段(业务相关表和非业务相关表)、冗余字段是否需要、是否要保留 “历史台账信息”、在使用PowerDesigner设计物理表过程中常遇到的问题等等。
2. 规范要点
2.1自然键OR代理建
自然键:由现有实体存在的属性组成的键值,在业务概念上是唯一的。
代理键:不具有业务含义的键值表示数据唯一。
一个典型的例子,对于自然人唯一性的判别,可以以姓名+身份证件类型+身份证件号码为主唯一标识,但实际我们存储的时候并没有采用这三个属性字段作为唯一键,而是采用了自增序列的代理键,登记序号作为唯一键。
对于自然键,它不需要引入一个新的“非自然”列,并且与业务直接紧密耦合,很清楚透过自然键就可以明确业务上唯一的标准。但是,自然键正是由于直接对接业务属性值,当业务需求发生变更时,可能导致属性发生变更,唯一键可能就要重新指定。
对于代理键,需要引入一个新的“非自然”列,它不与业务直接耦合,更容易维护。当业务需求发生变更时,不会对它产生影响。从某种意义上讲代理键可以看做是直接物理存储唯一性的键值。但其自身由于跟业务没有直接耦合,通常是“不可读”的,无法通过一个代理键值直接定位出数据的业务含义。
这两种键类型,并没有说哪种是最优的,在模型设计中,该如何选用根据实际情况来定夺
日常数据功能开发过程中,会经常要开发人员自己设计物理存储模型(底层模型),在设计过程中往往会遇到一些设计共性问题,比如:物理模型需要的主键采用自然键还是业务键、相关时间戳字段(业务相关表和非业务相关表)、冗余字段是否需要、是否要保留 “历史台账信息”、在使用PowerDesigner设计物理表过程中常遇到的问题等等。
2. 规范要点
2.1自然键OR代理建
自然键:由现有实体存在的属性组成的键值,在业务概念上是唯一的。
代理键:不具有业务含义的键值表示数据唯一。
一个典型的例子,对于自然人唯一性的判别,可以以姓名+身份证件类型+身份证件号码为主唯一标识,但实际我们存储的时候并没有采用这三个属性字段作为唯一键,而是采用了自增序列的代理键,登记序号作为唯一键。
对于自然键,它不需要引入一个新的“非自然”列,并且与业务直接紧密耦合,很清楚透过自然键就可以明确业务上唯一的标准。但是,自然键正是由于直接对接业务属性值,当业务需求发生变更时,可能导致属性发生变更,唯一键可能就要重新指定。
对于代理键,需要引入一个新的“非自然”列,它不与业务直接耦合,更容易维护。当业务需求发生变更时,不会对它产生影响。从某种意义上讲代理键可以看做是直接物理存储唯一性的键值。但其自身由于跟业务没有直接耦合,通常是“不可读”的,无法通过一个代理键值直接定位出数据的业务含义。
这两种键类型,并没有说哪种是最优的,在模型设计中,该如何选用根据实际情况来定夺