問83
頻出度★★★
関係データベースにおいて主キーを指定する目的はどれか。
这道题的解析和你的作答记录。
関係データベースにおいて主キーを指定する目的はどれか。
主键的目的并不是「同时确定多条记录」,恰恰相反,是「把范围缩小到唯一一条记录」。由于主键有唯一性约束,不存在取相同值的行,只要指定主键的值,符合的行必定只有一行。若想成批取出多行,应当把部门编码这类主键以外的列作为条件,因此本选项的说明与指定主键的目的正好相反。
正解 正确答案是 イ。在关系数据库(关系型数据库)中,数据以由行(记录)和列(属性)构成的表的形式进行管理。此时如果没有能够可靠指明「所指的是哪一行」的标记,更新、删除和引用都无法进行。因此,为了把表中的某一行与其他行区分开并加以确定而指定的列(或列的组合),就是主键。被指定为主键的列要受到两个约束:值不得重复(唯一性约束)、值不得为空(NULL)(非空约束)。这两点同时具备,就能做到只要给出一个主键值,符合的行必定恰好确定为一行。例如在员工表中把员工编号设为主键,即使存在同名同姓的员工,也能凭员工编号可靠地确定某一个人。也就是说,指定主键的目的是使记录(行)能够被唯一地识别,因此 イ 正确。
检索条件也可以自由地指定在非主键的列上,例如以姓名或入职年月日为条件进行检索,与是否指定主键无关。因此「使其能够指定检索条件」并不构成设置主键的理由。主键通常会自动建立索引从而使检索变快,但那是保证唯一性之后附带产生的好处,并不是指定主键本身的目的。
某个列能否成为加法、平均等算术运算的对象,取决于该列的数据类型是否为数值型,与它是不是主键无关。主键常常使用员工编码、商品编码这类字符串类型的列,这种情况下即使是主键也无法作为算术运算的对象。反过来,非主键的数值列照样可以参与运算,所以这一说明不能成立为主键的目的。