数据库思维

1、什么是数据库

典型的数据库是关系型数据库,最简单的关系型数据库可以理解为一张结构化二维表格。

什么是结构化二维表格?有列(或者叫标题,列标题,是一个意思)有行(至少有一行数据)就是二维表格。如果对每一列数据都进行了完整定义,那就是结构化二维表格。


这是一张常见的学生信息表,横向有行,竖向有列,是二维表,没有问题。问题是如何结构化?结构化是如何体现的?我们再看一张图:


这张字段定义表给刚才那张学生信息表加了限制,分别从列标题(数据库中通常称为字段,后文不做特别说明的话,列标题字段是一个意思)名称、类型、长度、是否为空做了详细限定。

小结一下:针对二维数据表每一列都严格定义了约束条件的就是结构化数据表,一个或多个结构化数据表组成的文件就是数据库。

2、数据库思维

所谓数据库思维,就是借鉴数据库对数据表的设计要求,来改善和理解EXCEL中数据源型数据表的相关规范。注意,数据库思维是两层意思。一层是理解,原来不太明白的结合数据库很容易明白;一层是改善,结合数据库要求更好的规范EXCEL数据表。这部分我们先讲整体层面的思考结论,下一节看实操。

(1)表格上方不要出现表标题

第一,数据库表设计从来没有表标题的概念,更加不可能在数据区域出现表标题;

第二,表标题占用了列标题行,会对后续分析造成很大的干扰;

第三,表标题信息可以体现在sheet名称中。

(2)数据表设计要有唯一标识列

或者叫缺少主键字段,或者叫缺少ID列,一个意思。为什么会有这个建议,只是为了单纯模仿数据库?不是的,有实际意义。

保证你对源数据可以随时恢复的能力。不管你是排序筛选各种对行顺序的折腾,最后只要按照ID列做一次排序就回来了。

大幅度减少查询难度。我们知道EXCEL对查询的支持时比较弱的(和数据库比查询简直没法比),通过添加ID列并且让ID列放在最左边应用VLOOKUP取数据会简单很多。

作为辅助列配合工具将**复杂多列二维表**转化为**简单列二维表**,这种做法的细节后文会详述。

养成一个每行有唯一标识字段的良好意识。相信我,很多困扰使用者的重名问题,多条件查询问题,逆序查询问题,往往一个ID列就可以解决。

(3)不要在原始数据表中增加任何汇总或合计行

根据原因是,这样做会破坏原来结构化的数据分布,让部分数据不再是规整的了,想想看如果在学生信息表的最后一行加一个学生总数=110的汇总,那这个110到底是属于哪个现有字段的?

(4)不要合并单元格

同样的,这会破坏表结构,正确的做法是,让数据重复。保持数据适当重复时完全可以接受的,还记得前文提到的课程信息表吗?一个学生可以选择多个课程,所以学生编号重复是很正常的。换个角度看,数据库里根本就没有合并单元格这个概念。引申一下,斜线表头是相同道理,都是被禁止的。

(5)不要空行空列

很简单,空行空列也许在视觉上没有问题,但在计算上会有各种问题。随便举个例子,空字段将直接导致数据透视表行标签出现空白标签。

(6)工作表与工作簿规划

一个工作表(SHEET页)用来描述一个对象,(比如学生信息,比如学生选课信息),一个工作簿(EXCEL文件)用来描述一类数据(比如学生基础信息)。适当控制工作表之间的引用,绝对不要产生工作簿之间的引用。

(7)字段内容原子化

每个字段的内容一定是不能再分了,比如数量如果内容是“35个”这就不是原子化,一定还能分成两列分别是数量和单位。为什么有这个要求?一个原因是,数据库包括EXCEL中,对分散数据的拼接比准确拆分容易的多;另一个原因是,含有数量的非原子化内容比如“35个”将使得数据失去可计算性;第三个原因,原子化意味着大家都是一个粒度的(反正都已经拆到不能再拆了),而非原子化则可能有各种程度的粒度,这对数据之间的引用是非常不利的。

(8)相同内容统一表述

比如班级名称,在所有地方同一个班级都应该是相同的表述,“天物强化班”和“天体物理学班”不应该同时出现,软件会认为是两个班级。EXCEL中应该使用数据验证下拉框规范此类问题。

(9)特殊格式字段格式要满足格式要求

比如日期时间字段,不能既有中文又有英文,既有-又有\,这都不规范。

(10)每列数据类型保持一致

想想看,数据表设计的时候,每列数据是不是天然一致的,比如出生日期列类型是日期,那该列数据要么是一个具体日期要么空着,绝不允许出现“不记得啦”,“丑年寅时”这种内容。

(11)禁止空格换行等非可见字符破坏数据本身

很简单,不管是在EXCEL眼里,还是在任何一个数据库系统眼里,“西门”和“西 门”(中间加了空格)都是不同的数据,这些不可见字符会是定时炸弹,表现出各种莫名其妙的问题。比如你检索“西门”就无法检索带空格的那条记录。有的同学喜欢ALT+ENTER强制换行或者使用空格将人名对齐,这都是不可取的。

(12)不要批注

这一条估计不少人不太理解。我的看法是,批注内容在数据内容上是不可见的,输入的信息有没有关键信息也是不知道的,如果确实需要批准宁可建一列数据列叫做批注或者备注。

3、朴实的就是最好的

回到问题本身,到底什么数据是EXCEL喜欢的?我的答案是,结构化的,类别统一的,最接近数据库表样式的就是最好的。

第一行是标题行。风雨无阻,第一行一定是标题行。

第一列是ID列。尽管不是强制要求,但我强烈建议你这么做。

每列数据不可拆分,已经原子化。每列数据类型相同,格式规范。

拒绝合并单元格,拒绝斜线表头,拒绝空行空列。

没有空行空列。

看看下图(标题部分不是数据表区域,别误会),简简单单的数据库表,就是最好的EXCEL数据源表了。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容