编 辑:彭文华

来 源:大数据架构师(ID:bigdata_arch)

彭友萌好,我是老彭友

嗯,上周末我去考了个CDGA,其中有道题出重复了(15和55题),题目大概是这样的,你也来选一下看看结果:

就是这样一道看上去很简单的题,结果引起一场超级大讨论。就这个问题都能吵半天,我也是彻底无语了...

不过看完他们的争论,我又凌乱了...

答案一

主键允许为空,选A。具体看图:

可以为空,铁证如山!有什么可以反驳的???

答案二

主键可以修改,选B。具体如图:

可以修改,铁证如山!有什么可以反驳的???

答案三

主键可以重复,选C。具体如下:

主键不可为空或Null值,不可修改,允许联合主键。但是可以重复使用。

这个。。。感觉很牵强啊。主键是唯一ID,肯定不能重复。但是“重复使用”的概念和重复是两码事啊。

到底选什么?

我们回到题目上来。我们知道,考试是考试,实操是实操。我们不能拿一MySQL数据库实现的情况来逆向判断主键的特性,就像你不能拿一只长着5条腿的蛤蟆得出所有蛤蟆都是5条腿一样。

回头我设计一个数据库,不允许联合主键的存在,那是不是D选项也错了?所以,这道题考的不是实操,而是主键的定义。

我们看看主键的定义:

主关键字(主键,primary key)是被挑选出来,作表的行的唯一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。主键可以由一个字段,也可以由多个字段组成,分别称为单字段主键或多字段主键,又称主码。并且它可以唯一确定表中的一行数据,或者可以唯一确定一个实体。

我也找了一下其他书上的定义:

《数据库系统设计》

《数据库系统概论》

从上面的定义和书上所述,主键的定义关键字是“唯一”、“确定一个实体”、“一个或多个字段”。

很明显,唯一代表着不允许重复;确定一个实体决定了主键不允许为空;联合主键就不用说了。所以,ACD都对,唯有

B:主键不允许修改

这条是错误的。所以选B。反正我两道题都选了B,如果我CDGA过了,就算了。如果没过,我就去找汪主席聊聊去

扩展阅读:公众号“大数据架构师”后台回复“DMBOK”即可下载彭友会的徐总他们组织整理的【DMBOK2200个知识点】。

更多精彩:

带你去看快手数据管治技术交流会-模型规范 

    OKR的完全落地实践手册

    一口气说穿数据中台-给你架构师的视角

    数据项目成败的关键-战略、规划、组织与制度!

    数据资产建设的灵魂三连问

    数据中台和ERP是啥关系?不都是信息系统吗?

    修炼:职场PUA与反PUA

排版 | 老彭

审校 | 老彭  主编 | 老彭

DAMA试题分析:主键有什么特性?相关推荐

  1. 【Qt】使用sqlite3数据库时,主键自增和获取自增后的主键的

    创建数据表格,设置主键自增 创建数据库时,启用主键自增加特性 Create table testTable (id INTEGER PRIMARY KEY AUTOINCREMENT,.... 注意事 ...

  2. mysql 主键 最佳实践_设计套路:Mysql主键的选取

    最近在对一些大表进行优化,发现主键和索引设计都有争议,就此从原理上分析主键设计该如何选取. Mysql的数据结构 Mysql是由B+树构成,搞清楚下面两个问题,就知道为什么用B+树了. 1.B+Tre ...

  3. mysql 联合主键 加锁_MySQL 加锁处理分析

    背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题.我在工作过程中,经常会有同事咨询这方面的问题.同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题.本文,准备 ...

  4. MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析...

    文章出处:http://inter12.iteye.com/blog/1430144 MYSQL的全表扫描,主键索引(聚集索引.第一索引),非主键索引(非聚集索引.第二索引),覆盖索引四种不同查询的分 ...

  5. MySQL-count(*)、count(1)、count(主键)、count(非索引列)、count(索引列)性能分析

    本文主要讨论的是count()函数在没有where的情况下统计性能 环境: MySQL 数据库5.7.23 服务器4核8G 带宽5M 1000W数据 为防止缓存影响,测试前已经将缓存关闭 一: 先说结 ...

  6. mysql纵表 主键_数据库面试题-sql语句

    原标题:数据库面试题-sql语句 1,写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的. 答: → 解1: select top ...

  7. oracle联合主键效率,Oracle主键与复合主键的性能分析

    总结: 1.主键和复合主键,查询性能相同(索引高度相同,恰当的运用索引). 2.主键和复合主键,(update,insert)性能不同(因为复合主键会用更多的块来创建索引,所以update,inser ...

  8. MybatisPlus:SQL语句打印、SQL分析、自定义主键值策略填充(IdType.INPUT)、动态表名、多租户、枚举、类型处理器、连表自定义SQL(使用wrapper)

    文章目录 1. 简单使用以及配置 - 带分页配置 2. 用法 2.0 Wrapper属性 2.1 @TableId - 自定义主键生成策略 2.2 @TableField - 自定义字段值填充 2.3 ...

  9. mysql主键自增长空缺_Mysql 主键自增长auto_increment问题分析

    本节内容: Mysql 主键自增长 在mysql数据库中,主键由auto_increment实现自增长,若自定义函数来表示auto_increment的话可以如下: 复制代码 代码示例: create ...

最新文章

  1. php多个 r n如何过滤,php怎么去掉r n
  2. 布隆过滤器Redis缓存穿透雪崩击穿热点key
  3. java常用框架总结
  4. P4144 大河的序列
  5. apache.camel_Apache Camel 2.9发布–十大变化
  6. Java面向对象编程篇6——注解与反射
  7. jQuery教程09-子元素筛选选择器
  8. ajax跨域,这应该是最全的解决方案了 1
  9. Linux下手动挂载新增磁盘
  10. OpenTSDB的读写API
  11. C语言中,int、char、float、double各占多少字节
  12. 用命令行建立空白的simulink模型(mdl文件)(Matlab)
  13. 计算机1级题库软件,计算机一级软件哪个好_计算机一级刷题软件_计算机一级试题软件...
  14. vue的Des加密解密
  15. UG NX 12同步建模:调整面大小
  16. 如何用vmware虚拟服务器,虚拟机怎么用,详细教您vmware虚拟机怎么用
  17. 支付宝-线上资金授权(小程序)
  18. 计算机软件能删除吗,怎么彻底清除电脑软件鲁大师?卸载对系统有影响吗?
  19. QQ微信可以上网,但是google浏览器上不了网怎么办?
  20. Jquery引用在线CDN公共资源库

热门文章

  1. type在python中的用法_Python type的使用
  2. 蓝桥杯java-排序(填空题2020省赛)
  3. 2010-02-28 传智播客—Android(三)数据存储之三SQLite嵌入式数据库
  4. 用ImgBurn做了一张可以安装所有版本的Win7安装盘
  5. 2022计算机专硕877考研经历
  6. 软件测试基础——非功能测试入门
  7. 云之讯——简单的短信验证 PHP版
  8. 视频宽高比和分辨率的关系(转)
  9. 怎么让模糊的数字变清楚_后期处理 怎么覆盖视频中的数字或某个文字?模糊处理视频中某几个字中的1个字...
  10. [python]打飞机小游戏代码