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