业务主键

科技工作者之家 2020-11-17

在关系型数据库设计中,业务主键是一个由以及真实存在于世界中的属性构成的键。举例来说,一个美国公民的社会安全号码可以被用作一个业务主键。在其他的表达方式中,一个业务主键是和行内属性具有逻辑关系的候选键。

优势业务主键对于逻辑主键的主要优势在于(逻辑主键在脱离数据库环境时没有任何意义)业务主键已经存在,因此没有必要去添加新的人工的列到定义中。使用业务主键(当存在一个可以被识别的业务主键时)也会简化数据的质量:业务主键确保了对于每个只会存在唯一一条对应的行;“真相只有一个版本”这点是可以被验证的,因为业务主键是基于对真实世界的观察结果。1

劣势选择业务主键的主要不足在于业务主键的值可能会发生改变,并且关系型数据库引擎可能不能够通过关联的外键来扩散这种改变。举例来说,如果person_name被用作person表的主键。然后一个 person 记录的 name 由于结婚而发生了改变(在传统西方国家,女性婚后会改为丈夫的姓),然后所有的一对多的关联表都因此需要更新。次级的不足在于选择业务主键是在识别主键。主键必须包含可以唯一识别某一行的属性。然而,在一张表上创建一个业务主键可能是困难的或者会导致更多的约束。举例来说,如果person_name被用作person表的主键,许多 person 可能会使用相同的名字,因此除了第一条记录以外的数据都会因为重复性被拒绝添加到表中。唯一性约束可以通过添加额外的列(比如street_address)到主键中以提高唯一性来克服。1

关系模型关系模型的基本假定是所有数据都表示为数学上的关系,就是说n个集合的笛卡儿积的一个子集,有关这种数据的推理通过二值(就是说没有NULL)的谓词逻辑来进行,这意味着对每个命题都有两种可能的赋值:要么是真要么是假。数据通过关系演算和关系代数的一种方式来操作。关系模型是采用二维表格结构表达实体类型及实体间联系的数据模型.

关系模型允许设计者通过数据库规范化的提炼,去建立一个信息的一致性的模型。访问计划和其他实现与操作细节由DBMS引擎来处理,而不应该反映在逻辑模型中。这与SQL DBMS普遍的实践是对立的,在它们那里性能调整经常需要改变逻辑模型。

基本的关系建造块是域或者叫数据类型。元组是属性的有序多重集(multiset),属性是域和值的有序对。关系变量(relvar)是域和名字的有序对(序偶)的集合,它充当关系的表头(header)。关系是元组的集合。尽管这些关系概念是数学上的定义的,它们可以宽松的映射到传统数据库概念上。表是关系的公认的可视表示;元组类似于行的概念。

关系模型的基本原理是信息原理:所有信息都表示为关系中的数据值。所以,关系变量在设计时刻是相互无关联的;反而,设计者在多个关系变量中使用相同的域,如果一个属性依赖于另一个属性,则通过参照完整性来强制这种依赖性。2

关系键关系键是关系数据库的重要组成部分。关系键是一个表中的一个或几个属性,用来标识该表的每一行或与另一个表产生联系。1

主键主键,又称主码(英语:primary key或unique key)。数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。

从技术的角度来看,primary key和unique key有很多相似之处。但还是有以下区别:

作为primary key的域/域组不能为Null。而unique key可以。

在一个表中只能有一个primary key,而多个unique key可以同时存在。

更大的区别在逻辑设计上。primary key一般在逻辑设计中用作记录标识,这也是设置primary key的本来用意。而unique key只是为了保证域/域组的唯一性2

本词条内容贡献者为:

王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。