我们知道,实体集的超级键是一个或多个属性的集合,其值唯一地确定每个实体实体集的候选键是最小超级键虽然可能存在多个候选键,但选择了其中一个候选键成为主键。
我们再次知道,参与实体集的主键组合形成关系集的超键。谁能通过一个简单的例子帮助我理解它们之间的关系?
我们知道,实体集的超级键是一个或多个属性的集合,其值唯一地确定每个实体实体集的候选键是最小超级键虽然可能存在多个候选键,但选择了其中一个候选键成为主键。
我们再次知道,参与实体集的主键组合形成关系集的超键。谁能通过一个简单的例子帮助我理解它们之间的关系?
人(id、SocialInsuranceNumber、姓名、家庭)
超级关键示例:
{id, name} 或
{SocialInsuranceNumber, name, family} 或
{id, SocialInsuranceNumber, name, family}
{id, name} 是唯一的。没有两个人对提到的两个字段具有相同的值。但是这个集合并不是最小的。如果我们去掉“名称”,那么剩下的又是一个超级键。所以这不是候选键。
候选键:
{ID},
{社会保险号码}
它们是最小的和独特的。
首要的关键:
{ID}
这是最短的长度(只有一个字段和“int”而不是 varchar(9),即另一个候选键的长度)。
此外,PK 最好是无数据的(用户根本看不到或更改任何内容,因为它可能会导致问题)。