��对一个实体集来说,它的侯选码不是唯一的,也就是说几个不同的属性集都可以做侯选码的情况是存在的。对customer实体集来说,假设不同客户的名字是不同的,那么customer-name属性也是一个侯选码。不同侯选码的组合是一个超码,但绝对不是一个新的侯选码。虽然social-security和customer-name一起能区分customer实体,但它们的组合并不能称为侯选码。
��我们用主码来代表被数据库设计者选中的,用来在同一实体集中区分不同实体的侯选码。码(主码、侯选码和超码)是实体集的性质,而不是一个个实体的性质。实体集中的任意两个实体都不允许同时在码属性上具有相同的值。码的指定实际上也代表了被建模的现实世界中的约束。例如,如果customer-name可以作为customer的主码,实际上就表示了不同的客户有不同的名字。

��这里我们要注意区分主码、候选码和超码。从区分实体的功能来说,这三种码的作用是一样的。所不同的是超码中可能有无关的属性,而主码和候选码中属性都是必要的属性。主码和候选码的区别在于主码是被数据库设计者选中的,是"在朝的",而候选码是"在野的"。
��