如果键与所涉及的表不相关(起源于另一个表) ,则表中的键很少是唯一的。例如,项目 ID 在 ITEMS 表中可能是唯一的,但在 ORDERS 表中不是,因为同一类型的项目很可能存在于另一个顺序中。同样,订单 ID 在 ORDERS 表中可能是唯一的(可能) ,但是在其他表(如 ORDER _ DETAILS)中不是这样,在 ORDER _ DETAILS 中可能存在具有多行项目的订单,并且为了以特定的顺序查询特定的项目,需要将两个 FK (ORDER _ id 和 item _ id)连接起来作为这个表的 PK。
我不是数据库专家,但如果你可以合理地证明有一个自动生成的值作为你的 PK,我会这样做。如果这不实际,那么两个(或更多) FK 的连接可以作为您的 PK。但是,我想不出任何情况下,一个单一的 FK 值可以证明为 PK。