seegongsik
我的单词本
数据

去掉重复的整理,规范化

假设每来一笔订单,就在同一张表里把顾客姓名和电话一起写上。同一个顾客下十次单,那名字就在十行里一模一样地写着。这时顾客改了电话号呢? 十行都得改,漏掉一行,某个格子就还是旧号码。反复地写正是祸根。把这种重复剥掉、整理干净,就是规范化。

01

同样的信息一再反复地写

前面我们学过用共同的列
把两张表接起来看。
这回我们盯着一张表看。
每来一笔订单,
就往同一张表里加一行,
还把顾客姓名和电话一起写上。
同一个顾客下好几次单,
那名字和号码就一行行一模一样地重复。
格子渐渐被同样的字填满。

订单
顾客
电话
A-01
敏秀
010-1111
A-02
智英
010-2222
A-03
敏秀
010-1111
A-04
蓝天
010-3333
A-05
敏秀
010-1111
A-06
智英
010-2222
点一个顾客姓名找出重复

点一个顾客姓名。同一个顾客的信息在好几行里一样地重复,一眼就被高亮出来。

同样的信息一行行刻在那儿。
首先是浪费地方,
因为同一个名字写了又写。
更大的问题在别处。
顾客改了电话号,
就得把写有那个顾客的行全找出来改。
哪怕漏掉一行,
有的行是新号码,有的行是旧号码。
明明是同一个顾客,信息却对不上了。

02

把重复的部分剥出来分开

解决办法出乎意料地简单。
把重复的部分取出来,
给它单独做一张表。
顾客姓名和电话,
不该每笔订单都写,
而是在只放顾客的表里各写一次。
这样订单表里
整块顾客信息都没了,
表轻便多了。

订单表
订单
顾客
电话
A-01
敏秀
010-1111
A-02
智英
010-2222
A-03
敏秀
010-1111
A-04
蓝天
010-3333
A-05
敏秀
010-1111
A-06
智英
010-2222
点拆分把重复剥出来

点拆分。原本重复的顾客信息从订单表里脱出,聚到单独的顾客表里。

顾客信息聚到一处了。
现在顾客改号码,
只改顾客表里那一行就行。
不管是一百笔订单还是一千笔,
要改的就这一行。
不会漏,也不会对不上。
可一个担心冒出来了。
既然把顾客信息从订单表里抽走了,
那哪笔订单是谁的,怎么知道呢?

03

用共同的列重新接上

这里前面学的接合派上用场了。
拆分时不能光剥开就完事。
要在两张表里各留一个相同的列。
顾客表里留顾客编号和姓名,
订单表里不留姓名,只留顾客编号。
这个顾客编号就是接起两者的线。
看订单表里的编号,
到顾客表里找相同的编号,
就立刻知道那笔订单是谁的。

一个编号就把两张表接起来了。
信息只写在一处,
顺着线走,随时都能合到一起看。
重复没了,
要改的地方缩到一处,
可需要的信息照样全聚得齐。
这就是规范化的核心。
不过好东西过头也会出毛病。
表分得太细会怎样呢?

04

分得太过,也会再合回去

若只因讨厌重复就一味分细,
表会越来越多。
地址放地址表,等级放等级表,
每件小事都另设一张表。
那要把一个顾客看清楚,
就得把三四张表用线接到一起。
接的越多,
看起来就越费时间。
重复是少了,速度却慢了下来。

订单表
顾客表
地址表
等级表
要接的次数
重复
没有重复,但看一个人要接四张表,所以慢。

在分细和故意合并之间来回点。分得越细要接的表越多,合并后虽有重复,却一下就看全。

分与合彼此有得有失。
分得细,重复少、清爽,
但每次看都因接表而慢。
常一起看的信息,
也会故意合到一张表里。
这样虽回来一点重复,
却不必接表、一下就看得快。
像这样故意去合,
叫反规范化。这是个平衡问题。

05

来理一理

归成一句话,是这样。
在一张表里反复写同样的信息,
既费地方又生出不一致。
所以把重复的部分取出来,
分到单独一张表,
再用共同的列重新接上。
这样信息只放一处,
要用时顺着线合到一起看。
但若分得太细而变慢,
也会故意去合。这就是平衡。

依次点要点回顾一下

依次点要点回顾一下。(重复是浪费、不一致 → 把重复剥出分开 → 用共同的列接上 → 分得太过就故意合并)

现在你拥有了一套
把表整理干净的思路。
把重复剥出分开、用关系接上,
过头时再合回去的平衡。
这不只适用于表,
整理任何东西时都普遍管用。
靠减少重复来防出错,
需要时再聚拢、看得快的本事。
咱们接着往下一个故事走吧。

一句话总结规范化是这样一种整理: 把一张表里反复出现的信息剥出来,分到单独一张表,再用共同的列重新接上。与其每笔订单都写顾客姓名,不如在顾客表里只写一次顾客,订单表里只留顾客编号。这样编号变了,只改顾客表里那一行就完事,不会出现不一致。也不会在一行行修改时漏掉某一散落的行。不过分得太细,每看一样东西就得把好几张表重新接回去,可能变慢。那时也会故意把常一起看的信息合到一张表里,这叫反规范化。归根结底,规范化就是把重复剥出来分开、用关系接上,分得太细时再合回去的一种平衡。
数据
如果有帮助,请支持我们