1、什么是數(shù)據(jù)庫
典型的數(shù)據(jù)庫是關(guān)系型數(shù)據(jù)庫享怀,最簡單的關(guān)系型數(shù)據(jù)庫可以理解為一張結(jié)構(gòu)化二維表格逾苫。
什么是結(jié)構(gòu)化二維表格?有列(或者叫標(biāo)題部服,列標(biāo)題,是一個意思)有行(至少有一行數(shù)據(jù))就是二維表格拗慨。如果對每一列數(shù)據(jù)都進(jìn)行了完整定義廓八,那就是結(jié)構(gòu)化二維表格。
這是一張常見的學(xué)生信息表赵抢,橫向有行剧蹂,豎向有列,是二維表烦却,沒有問題宠叼。問題是如何結(jié)構(gòu)化?結(jié)構(gòu)化是如何體現(xiàn)的?我們再看一張圖:
這張字段定義表給剛才那張學(xué)生信息表加了限制冒冬,分別從列標(biāo)題(數(shù)據(jù)庫中通常稱為字段伸蚯,后文不做特別說明的話,列標(biāo)題字段是一個意思)名稱简烤、類型剂邮、長度、是否為空做了詳細(xì)限定横侦。
小結(jié)一下:針對二維數(shù)據(jù)表每一列都嚴(yán)格定義了約束條件的就是結(jié)構(gòu)化數(shù)據(jù)表挥萌,一個或多個結(jié)構(gòu)化數(shù)據(jù)表組成的文件就是數(shù)據(jù)庫。
2枉侧、數(shù)據(jù)庫思維
所謂數(shù)據(jù)庫思維瑞眼,就是借鑒數(shù)據(jù)庫對數(shù)據(jù)表的設(shè)計要求,來改善和理解EXCEL中數(shù)據(jù)源型數(shù)據(jù)表的相關(guān)規(guī)范棵逊。注意伤疙,數(shù)據(jù)庫思維是兩層意思。一層是理解辆影,原來不太明白的結(jié)合數(shù)據(jù)庫很容易明白徒像;一層是改善,結(jié)合數(shù)據(jù)庫要求更好的規(guī)范EXCEL數(shù)據(jù)表蛙讥。這部分我們先講整體層面的思考結(jié)論锯蛀,下一節(jié)看實操。
(1)表格上方不要出現(xiàn)表標(biāo)題
第一次慢,數(shù)據(jù)庫表設(shè)計從來沒有表標(biāo)題的概念旁涤,更加不可能在數(shù)據(jù)區(qū)域出現(xiàn)表標(biāo)題;
第二迫像,表標(biāo)題占用了列標(biāo)題行劈愚,會對后續(xù)分析造成很大的干擾;
第三闻妓,表標(biāo)題信息可以體現(xiàn)在sheet名稱中菌羽。
(2)數(shù)據(jù)表設(shè)計要有唯一標(biāo)識列
或者叫缺少主鍵字段,或者叫缺少ID列由缆,一個意思注祖。為什么會有這個建議,只是為了單純模仿數(shù)據(jù)庫均唉?不是的是晨,有實際意義。
保證你對源數(shù)據(jù)可以隨時恢復(fù)的能力舔箭。不管你是排序篩選各種對行順序的折騰罩缴,最后只要按照ID列做一次排序就回來了。
大幅度減少查詢難度。我們知道EXCEL對查詢的支持時比較弱的(和數(shù)據(jù)庫比查詢簡直沒法比)靴庆,通過添加ID列并且讓ID列放在最左邊應(yīng)用VLOOKUP取數(shù)據(jù)會簡單很多。
作為輔助列配合工具將**復(fù)雜多列二維表**轉(zhuǎn)化為**簡單列二維表**怒医,這種做法的細(xì)節(jié)后文會詳述炉抒。
養(yǎng)成一個每行有唯一標(biāo)識字段的良好意識。相信我稚叹,很多困擾使用者的重名問題焰薄,多條件查詢問題,逆序查詢問題扒袖,往往一個ID列就可以解決塞茅。
(3)不要在原始數(shù)據(jù)表中增加任何匯總或合計行
根據(jù)原因是,這樣做會破壞原來結(jié)構(gòu)化的數(shù)據(jù)分布季率,讓部分?jǐn)?shù)據(jù)不再是規(guī)整的了野瘦,想想看如果在學(xué)生信息表的最后一行加一個學(xué)生總數(shù)=110的匯總,那這個110到底是屬于哪個現(xiàn)有字段的飒泻?
(4)不要合并單元格
同樣的鞭光,這會破壞表結(jié)構(gòu),正確的做法是泞遗,讓數(shù)據(jù)重復(fù)惰许。保持?jǐn)?shù)據(jù)適當(dāng)重復(fù)時完全可以接受的,還記得前文提到的課程信息表嗎史辙?一個學(xué)生可以選擇多個課程汹买,所以學(xué)生編號重復(fù)是很正常的。換個角度看聊倔,數(shù)據(jù)庫里根本就沒有合并單元格這個概念晦毙。引申一下,斜線表頭是相同道理耙蔑,都是被禁止的结序。
(5)不要空行空列
很簡單,空行空列也許在視覺上沒有問題纵潦,但在計算上會有各種問題徐鹤。隨便舉個例子,空字段將直接導(dǎo)致數(shù)據(jù)透視表行標(biāo)簽出現(xiàn)空白標(biāo)簽邀层。
(6)工作表與工作簿規(guī)劃
一個工作表(SHEET頁)用來描述一個對象返敬,(比如學(xué)生信息,比如學(xué)生選課信息)寥院,一個工作簿(EXCEL文件)用來描述一類數(shù)據(jù)(比如學(xué)生基礎(chǔ)信息)劲赠。適當(dāng)控制工作表之間的引用,絕對不要產(chǎn)生工作簿之間的引用。
(7)字段內(nèi)容原子化
每個字段的內(nèi)容一定是不能再分了凛澎,比如數(shù)量如果內(nèi)容是“35個”這就不是原子化霹肝,一定還能分成兩列分別是數(shù)量和單位。為什么有這個要求塑煎?一個原因是沫换,數(shù)據(jù)庫包括EXCEL中,對分散數(shù)據(jù)的拼接比準(zhǔn)確拆分容易的多最铁;另一個原因是讯赏,含有數(shù)量的非原子化內(nèi)容比如“35個”將使得數(shù)據(jù)失去可計算性;第三個原因冷尉,原子化意味著大家都是一個粒度的(反正都已經(jīng)拆到不能再拆了)漱挎,而非原子化則可能有各種程度的粒度,這對數(shù)據(jù)之間的引用是非常不利的雀哨。
(8)相同內(nèi)容統(tǒng)一表述
比如班級名稱磕谅,在所有地方同一個班級都應(yīng)該是相同的表述,“天物強化班”和“天體物理學(xué)班”不應(yīng)該同時出現(xiàn)雾棺,軟件會認(rèn)為是兩個班級怜庸。EXCEL中應(yīng)該使用數(shù)據(jù)驗證下拉框規(guī)范此類問題。
(9)特殊格式字段格式要滿足格式要求
比如日期時間字段垢村,不能既有中文又有英文割疾,既有-又有\(zhòng),這都不規(guī)范嘉栓。
(10)每列數(shù)據(jù)類型保持一致
想想看宏榕,數(shù)據(jù)表設(shè)計的時候,每列數(shù)據(jù)是不是天然一致的侵佃,比如出生日期列類型是日期麻昼,那該列數(shù)據(jù)要么是一個具體日期要么空著,絕不允許出現(xiàn)“不記得啦”馋辈,“丑年寅時”這種內(nèi)容抚芦。
(11)禁止空格換行等非可見字符破壞數(shù)據(jù)本身
很簡單,不管是在EXCEL眼里迈螟,還是在任何一個數(shù)據(jù)庫系統(tǒng)眼里叉抡,“西門”和“西 門”(中間加了空格)都是不同的數(shù)據(jù),這些不可見字符會是定時炸彈答毫,表現(xiàn)出各種莫名其妙的問題褥民。比如你檢索“西門”就無法檢索帶空格的那條記錄。有的同學(xué)喜歡ALT+ENTER強制換行或者使用空格將人名對齊洗搂,這都是不可取的消返。
(12)不要批注
這一條估計不少人不太理解载弄。我的看法是,批注內(nèi)容在數(shù)據(jù)內(nèi)容上是不可見的撵颊,輸入的信息有沒有關(guān)鍵信息也是不知道的宇攻,如果確實需要批準(zhǔn)寧可建一列數(shù)據(jù)列叫做批注或者備注。
3倡勇、樸實的就是最好的
回到問題本身逞刷,到底什么數(shù)據(jù)是EXCEL喜歡的?我的答案是译隘,結(jié)構(gòu)化的,類別統(tǒng)一的洛心,最接近數(shù)據(jù)庫表樣式的就是最好的固耘。
第一行是標(biāo)題行。風(fēng)雨無阻词身,第一行一定是標(biāo)題行厅目。
第一列是ID列。盡管不是強制要求法严,但我強烈建議你這么做损敷。
每列數(shù)據(jù)不可拆分,已經(jīng)原子化深啤。每列數(shù)據(jù)類型相同拗馒,格式規(guī)范。
拒絕合并單元格溯街,拒絕斜線表頭诱桂,拒絕空行空列。
沒有空行空列呈昔。
看看下圖(標(biāo)題部分不是數(shù)據(jù)表區(qū)域挥等,別誤會),簡簡單單的數(shù)據(jù)庫表堤尾,就是最好的EXCEL數(shù)據(jù)源表了肝劲。