跳到正文
IGCSE·Tuition
计算机科学 · 课程

在虚构数据集中选择合适的键

选键听起来像随便挑一列,直到两条记录出现相同的值,数据就乱了。

本页内容
  1. 什么样的键才合适?
  2. 例题
  3. 要留意的错误
  4. 自我检测
  5. 接下来学什么

**主键(primary key)**是一个字段,它的值在每条记录中都不同,因此能准确识别一行。它不能为空,也不应随时间改变。

题目会要求你从表中指出合适的键,或解释为什么某个字段不适合。这一课属于数据库与查询推理单元。

什么样的键才合适?

对每个字段做三项检验:

  1. 唯一: 两条记录有可能出现相同的值吗?
  2. 始终有值: 这个值可能缺失吗?
  3. 稳定: 以后需要修改吗?

字段必须三项都通过。最稳妥的键往往是专门编出来的代码,例如 ID,因为它被创建出来就是为了唯一。

例题

一家虚构的单车租赁店有下面这张表,名为 Bikes。

BikeNoModelColourSize
B101TrailRedM
B102TrailBlueL
B103CityRedM
B104CityRedS

步骤 1,检验 Model。 Trail 出现两次,不唯一。排除。

步骤 2,检验 Colour。 Red 出现三次。排除。

步骤 3,检验 Size。 M 出现两次。排除。

步骤 4,检验 BikeNo。 B101、B102、B103、B104 各不相同,而且每辆单车都有。接受。

最终答案:BikeNo 是主键。

注意,答案也取决于数据的规则。如果店里有上千辆单车,Model 和 Colour 就更不合适了。

要留意的错误

常见的失误是因为某个字段在你看得见的行里唯一,就选它。

错误答案:“Size 不是键,但 Model 可以,因为只有两种型号。”

这个答案错了,因为 Trail 和 City 都重复出现。

相关的失误是在有 400 名学生的学校表里选姓名字段。即使今天没有重名,两个学生也可能同名。纠正:问的是重复是否可能出现,而不是现在是否存在。

自我检测

1. 一张虚构的图书馆表有字段 BookCode、Title、Author、Year。哪一个是最合适的键?

查看答案

BookCode。 书名可能在不同版本重复,作者会写很多本书,年份也会重复,但代码是为了唯一而创建的。

2. 在上一课的 Plants 表中,解释为什么 Type 不能当键。

查看答案

Type 会重复:Rose、Orchid 和 Hibiscus 都是 Flowering,所以它无法识别单一记录。

3. 为什么可以留空的字段不适合当键?

查看答案

空值无法识别记录,所以有些记录将无法被找到。键必须始终有值。

接下来学什么

表格结构清楚之后,继续学习写出简单的 SELECT 筛选。单元练习题在最后会再次练习键。

如果你希望有人在做这些题时检查你的推理,可以看看我们的计算机科学线上一对一补习。

更新于:

下一步

如果键的题目总像在猜,一对一的老师可以给你一个简短的检验方法,适用于任何数据集,让你不再靠直觉。

一小时付费试听课,按所安排老师确认的收费,RM80 起。

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

家长:在这里咨询

  • 已通过我们的服务帮助 9,000+ 名学生
  • 9+ 年帮助 IGCSE 学生