以下关于主键的说法,那个是错误的?(单选)
- A:主键不允许为空或者Null值
- B:主键值不允许修改
- C:主键不能重复
- D:主键可以由多个字段组成联合主键
答案一
主键允许为空,选A。具体看图:
可以为空,铁证如山!有什么可以反驳的???
答案二
主键可以修改,选B。具体如图:
可以修改,铁证如山!有什么可以反驳的???
答案三
主键可以重复,选C。具体如下:主键不可为空或Null值,不可修改,允许联合主键。但是可以重复使用。
这个。。。感觉很牵强啊。主键是唯一ID,肯定不能重复。但是“重复使用”的概念和重复是两码事啊。
到底选什么?
我们回到题目上来。我们知道,考试是考试,实操是实操。我们不能拿一MySQL数据库实现的情况来逆向判断主键的特性,就像你不能拿一只长着5条腿的蛤蟆得出所有蛤蟆都是5条腿一样。回头我设计一个数据库,不允许联合主键的存在,那是不是D选项也错了?所以,这道题考的不是实操,而是主键的定义。我们看看主键的定义:
主关键字(主键,primary key)是被挑选出来,作表的行的唯一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。主键可以由一个字段,也可以由多个字段组成,分别称为单字段主键或多字段主键,又称主码。并且它可以唯一确定表中的一行数据,或者可以唯一确定一个实体。
我也找了一下其他书上的定义:
《数据库系统设计》
《数据库系统概论》
从上面的定义和书上所述,主键的定义关键字是“唯一”、“确定一个实体”、“一个或多个字段”。
很明显,唯一代表着不允许重复;确定一个实体决定了主键不允许为空;联合主键就不用说了。所以,ACD都对,唯有B:主键不允许修改
这条是错误的。所以选B。反正我两道题都选了B,如果我CDGA过了,就算了。