就拿这个图片来说,无论是通过<宿舍,床位>,还是通过<江湖称号>,都能确定这个人。

所以:
<宿舍,床位>
<江湖称号>
<系,专业,班级,学号>
<社团,职位>
这几个都能称为确认一个人的码

候选码

举个例子
只有通过 <宿舍,床位> 你才能确定是这个人,仅仅凭宿舍或者床位都无法确定这个人,所以 <宿舍,床位> 里的每个真子集都无法确定这个人,那么我们称这样的码为 候选码

但是比如 <系,专业,班级,学号>,这几个,其实我知道一个学号就行了,也就是说,<学号> 就能当作一个候选码,那么 <系,专业,班级,学号> 便不是候选码了。

所以
<宿舍,床位>
<江湖称号>
<学号>
<社团,职位>
都是候选码,每个候选码里不存在能够确认元组的真子集。

主码

你从这么老些候选的码里挑呗,哪个都能当主码,看你心情。