候选键是属性的组合,可以唯一地用于标识数据库记录而不引用任何其他数据。每个表可以有一个或多个候选者。选择这些候选键之一作为表主键。表只包含一个主键,但它可以包含多个候选键。如果候选键由两列或更多列组成,则称其为复合键。
候选键的属性
所有候选键都有一些共同的属性。其中一个属性是,对于候选键的生命周期,用于标识的属性必须保持不变。另一个是该值不能为空。最后,候选键必须是唯一的。
例如,要唯一标识每个员工,公司可能会使用员工的社会安全号码。如您所见,有些人具有相同的名字,姓氏和职位,但没有两个人拥有相同的社会安全号码。
社会安全号码 | 名字 | 姓 | 位置 |
---|---|---|---|
123-45-6780 | 克雷格 | 琼斯 | 经理 |
234-56-7890 | 克雷格 | 比尔 | 关联 |
345-67-8900 | 桑德拉 | 比尔 | 经理 |
456-78-9010 | 天合光能 | 琼斯 | 关联 |
567-89-0120 | 桑德拉 | 工匠 | 关联 |
候选键的示例
某些类型的数据很容易成为候选人:
- 国际标准书号 - ISBN独特地识别书籍和相关媒体。 ISBN的发布受到行业守门人的严格监管,ISBN通常不会被出版商重复使用。
- 银行帐号 - 大多数银行不回收帐号。
- 序列号 - 虽然序列号不受跨行业管辖,但在单个供应商的环境中,序列号应始终是唯一的。
- 驾驶执照号码 - 通常,这些数字不会重复。但是,从一个州移到另一个州的人可以拥有多个DL号码。
- 国家提供者ID-医生和其他有执照的医疗服务提供者各自至少有一个由美国卫生和公共服务部颁发的独特的NPI。
但是,某些类似的信息可能看起来像是好的候选人实际上证明是有问题的:
- 电话号码 - 大多数运营商回收电话号码,个人用户可以同时拥有多个电话号码。
- 通用价格代码 - UPC是独一无二的,但UPC块的所有者可以随意回收产品。
- 医疗记录编号 - MRN通常在医院层面发布,没有任何国家指导
- 社会保障号码 - 虽然它们在理论上是独一无二的,但SSN确实可以回收利用,并且SSN欺诈很常见,足以使这个标识符在大型数据集中出现问题。 (在验证SSN的雇主的背景下,这个挑战不是问题。)