选择主键:自然键还是代理键?

【转自】http://blog.csdn.net/haiross/article/details/21388997
【原文地址】http://www.agiledata.org/essays/keys.html

常用的术语
选择键的策略
代理键实现策略
有效选键的技巧
做出了“错误”选择时如何应对

1 常用的术语

让我们从描述一些关于键的常用术语开始,然后再看一个示例。这些术语包括:

1.键。键是唯一标识一个实体的一个或者多个数据属性。在物理数据库中,键可以由表的一个或者多个列组成,它们的值唯一标识关系表中的一行。

2.复合键。由两个或者多个属性组成的键。

3.自然键。由现实世界中已经存在的属性组成的键。例如,美国公民被分配了一个唯一(不保证一定正确,但实际上非常接近唯一)的 会保险 (SSN)。如果隐私法允许的话,SSN可能被用作Person实体的自然键(假设组织的人员范围仅限于美国)。

4.代理键。不具有业务含义的键。

5.候选键。在逻辑数据模型中的实体类型可能具有0或多个候选键,简称为唯一标识(注解:某些人不主张在逻辑数据模型中标识候选键,因此没有固定标准)。例如,假设我们只涉及美国公民,那么SSN是Person实体类型的一个候选键,同时姓名与电话 码的组合(假设组合是唯一的)是第二个可能的候选键。这两个键都被称作候选键是因为它们是物理数据模型中主键、次键或者非键的候选目标。

6.主键。实体类型的首选键。

7.备用键。也就是次键,是表中行的另一个唯一标识。

8.外键。在一个实体类型中表示另一个实体类型的主键或者次键的一个或多个属性。

图1显示了使用UML符 描述的实际地址的物理数据模型。在图1中,表Customer使用CustomerNumber作为主键而SocialSecurityNumber作为备用键。这就意味着访问顾客信息的首先方法是通过一个人的顾客编 ,虽然软件使用 会保险 也能够获得相同的信息。表CustomerHasAddress拥有一个复合键,由CustomerNumber与AddressID组成。外键是一个实体类型中,代表另一个实体类型的主键或者次键的一个或多个属性。外键用于维护数据行之间的关联。例如,表CustomerHasAddress与表Customer中行之间的关联通过表CustomerHasAddress的CustomerNumber列进行维护。有趣的是列CustomerNumber既是表CustomerHasAddress主键的一部分,又是表Customer的外键。同样,列AddressID既是表CustomerHasAddress主键的一部分,又是表Address的外键,维护这两个表中行的关联。

这里写图片描述
图3 替换表State的代理键

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成31836 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年4月20日
下一篇 2017年4月20日

相关推荐