在数据库设计中,候选键、主键和外键是三个非常重要的概念。为了更好地理解它们,我们可以用通俗的例子来帮助说明。
通俗示例
假设我们在一个学校里管理学生的信息。每个学生都有一个独一无二的学号、名字、身份证号和手机号。这些信息都可以用来唯一标识一个学生,但在实际操作中,我们会选择一个最合适的作为主要标识。
通俗解释
-
候选键(Candidate Key):
- 定义:候选键是指能够唯一标识数据库表中每一行记录的一个或多个字段。它们是“候选”,因为从这些键中可以挑选出一个作为主键。
- 例子:在学生信息表中,学号、身份证号、手机号都可以是候选键,因为每个键都可以唯一标识一个学生。
-
主键(Primary Key):
- 定义:主键是从候选键中选出来的,用于唯一标识数据库表中的每一行记录的字段。一个表只能有一个主键,且主键的值不能重复,也不能为空。
- 例子:假设我们决定用“学号”作为学生信息表的主键,这意味着每个学生的学号都是唯一的,不会有两个学生拥有相同的学号。
-
外键(Foreign Key):
- 定义:外键是一个表中的字段,它用来建立和另一张表之间的连接。外键值通常是另一张表的主键值,用于保证数据的一致性和完整性。
- 例子:假设我们还有一张“成绩表”,其中的“学生学号”字段就是一个外键,它引用了学生信息表中的“学号”主键。这确保了成绩表中的每条记录都对应一个存在的学生。
例一, A1 入度为 0 ,而且可以遍历全图。
例二, EGFJIH 都有入度,只有 ABCD 而且可以遍历全图。
没有入度为 0
有出度的,中间结点,分别看是否可以遍历全局。 A 可以推导全局, B 也可以,所以是 A 和 B。
入度为0的 A 和 D ,如果不能遍历就加入中间结点,所以必须有 A和 D 选C
候选关键字中的属性都是主属性,所以 4 个都是主属性